MSP432产品培训(九) - MSP430和MSP432平台的代码移植(下)

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • MSP432产品培训(九) - MSP430和MSP432平台的代码移植(下)
  • 登录
我们看到的是一个简单的示例 它用来说明在两个不同的平台上 它使用直接寄存器访问级别的代码调动 它到底有哪些区别 那可以看到实际上这一小段代码呢 非常类似 这一部分的代码它是用于配置它的A模块 以及启用中断的 那您可以发现 MSP430和MSP432的代码中的 大部分代码它都是相同的 这里唯一的区别呢 就是你启用中断的方式和进入低功耗模式的不同 那在MSP432上使用中断还有一个注意点 那这一点对于MSP430用户尤其重要 也就是说430上面的中断控制器 它是CPU的一部分 它是有CPU来直接进行中断管理的 因此 它不需要进行实际的一些配置 而在MSP432平台上 这个中断是通过NVIC这样的一个中段管理器 来进行中断管理的 这个NVIC是在一个单独的外设和中断之间的一个真实的模块 因此在432上 你需要增加一些操作步骤 后续我们会看到如何进行中断的控制 那实际上可以看到 在这个直接寄存器访问代码这个级别上 430和432上的代码是非常类似的 那现在您图上看到的呢 它是调用我们的DriverLib我们的驱动程序库来实现的 I2C的初始化的这样一个代码 那大家可以看到 在这部分代码上 我们430和432上的代码是百分百相同的 它区别的可能只是驱动程序库内部的区别 而对于API来说呢 它是完全一样的 也就是您可以直接复制黏贴的 那另外呢 现在图上看到的是CMSIS的一个支持 CMSIS是ARM公司提供的一个头文件的标准定义 那所有使用ARM公司所提供的内核的这些器件生产厂家 它都会提供一个基于CMSIS这个标准的一个标准化的头文件 那同样的针对430产品我们也提供这样的一个CMSIS的头文件 它叫msp432_cmsis.h 那在这个头文件当中是所有的数据类型的定义 以及我们内核相关的这些模块的定义 那这个头文件它主要是对一些专有功能和指令来进行支持的 另外 ARM公司它也提供库函数 比如我们DSP的函数库 和我们的Math的数学的函数库 那现在呢 我们快速地了解一下如何解决MSP430和MSP432 这两个平台当中的中断处理的不同 那你可以回想一下 之前我们讲过MSP432它是一种Cotex M4F的器件 因此在MSP432当中我们是通过NVIC 也就是一个嵌套矢量中断控制器来对我们的中断进行管理和控制的 那这个和MSP432这个平台中 由CPU来进行中断管理相比 它是一个非常巨大的进步 那NVIC呢 它能为您带来一个可配置的优先级中断 以及各种珍藏的功能 例如呢 NVIC它可以提供一个用于改善中断服务延迟情况的一个围列功能 那对于一个典型的Cotex M器件这样的一个模块呢 中断矢量表通常是在单独的文件中被定义为一个单独的数据结构的 那您可以看到在左侧这里呢 您可以为您的应用插入需要的中断处理程序 在默认的情况下 这种方法是支持MSP432所有的编译器和IDE的 例如CCS IAR或者cale 它在另一方面呢 传统的MSP430的方法呢 是使用编译矢量 那在这种情况下呢 您无需再定义整个的中断矢量表 事实上呢 您只需要利用编译矢量中断来指明 您实际使用到的矢量 您也可以使用变异矢量来跟踪一个未使用到的中断 那我们现在面对的难题呢 是我们要如何将MSP430的代码移植到MSP432上 特别是跟中断相关的这部分代码 那么好消息就是MSP430对这样两种定义方式都支持 那如果您要开始一个新的Cotex M的项目开发 那么您可以完全使用左侧的选项一来定义您的中断矢量表 不过您有现有MSP430的应用并想要再MSP432上来再次使用的话 或者呢 如果您想要开发MSP432的应用 并且希望在未来我们可能会把它移植到MSP430上 那么您可能会要想要来使用选项二 这两个选项是相互排斥的 如果您已经有了一份中断矢量表 那就请确保不要使用编译矢量 反置呢 也是这样 好 本业上显示的呢 就是MSP432的中断处理 我们之前呢 提到过一点 也就是430上的中断控制器呢 是CPU的一部分 因此呢 它不必须要进行实际的处置 而432上的NVIC模块呢 它是一个真实的模块 因此是需要用户来对它进行操作的 所以呢 在MSP432上的中断处理 您需要跟430相比呢需要增加一个操作步骤 那通常在MSP430的平台上呢 需要步骤一 而我们使用一个外设级别的中断触发器 然后呢 直接步骤三 使用中断的一个主使能控制的 那不过在MSP432上它就需要增加一个额外的步骤 也就是步骤二 也就是将单独的模块中断来映射到NVIC表上 从而 它可以在NVIC这个模块当中来启动 这个相关的外设的中断 那这个图中突出显示的这个就是步骤二 那现在图片上显示的呢 是如何通过寄存器级别的直接访问 来使能一个外设的中断 需要三条代码 那同样的呢 现在图上显示的呢 是如何通过调用我们的外设驱动函数库 来实现我们一个外设的中断 那同样的 它需要调动三个API 在432上呢要注意增加步骤二 我们要使能NVIC当中的外设的中断模块 那最后我还需要提一点的呢 是大家一定要注意我们主的那个应用程序 我们的主代码是一个高级别的一个软件 它是一个抽象的软件 它十分依赖于自身的架构 那如果开发人员使用一个恰当的软件开发技术 和足够的抽象层的话呢 那么MSP430和MSP432平台间的应用层的代码呢 它不应该有过多的差别 不过一定需要牢记数据类型的兼容性 为了避免在16位和32位的架构上误用到数据类型 比如说 同样的int这样的数据类型定义呢 它可能会有不一样的结果 所以我们一定推荐大家使用一个显示的C99类型的数据定义 好 本次课程就到此为止 非常感谢您的观看
课程介绍 共计13课时,2小时30分32秒

MSP432产品培训

MSP430 TI MCU Cortex-M4F 微控制器 MSP432

     MSP432是TI的MSP430家族新增加的32位产品系列,采用ARM-CortexM4F内核,专注于低功耗和通用微控制器领域。在低功耗和高性能以及增强型外设方面均有突出表现。本次MSP432培训共分12个章节,详细介绍了产品的内核,架构和各种增强型外设,配合小练习,帮助用户迅速了解MSP432产品的性能,快速掌握MSP432产品的使用。

推荐帖子

CCS 5程序 调试的一些方法
用CCS 5    单步 调试时,如果遇到__delay_cycles(782000);怎么直接跳出,这个好像不是函数??? 如果是for循环语句又怎么跳出?? 还有什么调试技巧吗??...
s364147694 微控制器 MCU
如何在ram中调试和运行程序啊?
lm3s9b92的芯片我参照论坛里面的帖子,linker没动,startup.s也没动。就添加了一个ini脚本文件,结果还是不行。脚本文件内容如下:Load blinky.AXF incrementalFUNC  void Setup (void) { _WDWORD(0xE000ED08,0x20000000); SP = _RDWORD(0x20000000);&...
慢慢来 微控制器 MCU
【晒经典】ISD4004语言录放模块
本帖最后由 dontium 于 2015-1-23 13:10 编辑 模块的核心是ISD4004语音芯片,其引脚如图5所示。ISD4004语音芯片采用CMOS技术,内含晶体振荡器、防混叠滤波器、平滑滤波器、自动静噪、音频功率放大器及高密度多电平闪烁存储阵列等,因此只需很少的外围器件就可构成一个完整的声音录放系统。ISD4004语音芯片带SPI接口,录放音时间长,音质好,不需A/D转换,可...
37°男人 模拟与混合信号
TI TMS320F28335的EPWM如何软件强制开关状态
有时需要用到强制脉宽调制(PWM)的脉冲开关状态这种操作,比如封锁脉冲以停止电力电子开关管工作;在上电的初始时刻,经常也需要对PWM状态进行一种强制的初始化,比如强制高、强制低等等;一些特殊的PWM算法,如果不是基于三角载波比较法的,如一些SHEPWM、滞环PWM方法等等,也需要直接输出PWM脉冲的状态,此时不能使用比较值与定时器的直接比较来得到开关状态,而且在需要的开关状态已知情况下,直接强制P...
Aguilera 微控制器 MCU

zhangleiat185

讲解细致,非常适合学习,赞!

2020年10月29日 13:36:50

SensorYoung

讲解很详细,需认真学习

2020年10月19日 20:56:19

GuyGraphics

讲解很详细,需认真学习

2020年10月19日 20:54:19

YangTwo

讲解很详细,需认真学习

2020年10月19日 20:54:02

06010601

讲解很详细,需认真学习

2020年10月04日 13:08:40

luck_gfb

讲解很详细,需认真学习

2020年09月19日 16:25:59

小颖颖子

讲解的很细致,很容易就可以明白,

2020年07月30日 14:38:58

jpf

内存中手动写入一段已经保存好的信号内容,保存下的格式为文本txt如何方便的将txt里的内容写如指定的内存空间说一下处理的步骤...

2020年07月28日 13:18:34

大明58

MSP432是TI的MSP430家族新增加的32位产品系列,采用ARM-CortexM4F内核,专注于低功耗和通用微控制器领域。

2020年05月12日 11:12:24

hawkier

学习了,不错的讲解

2020年02月13日 13:58:24

分享到X
微博
QQ
QQ空间
微信

EEWorld订阅号

EEWorld服务号

汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved