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产品的使用。

  • 相关产品
  • EVM购买
  • 软件/工具
  • 技术支持

推荐帖子

ADC12寄存器说明
1.ADC12CTL0 控制寄存器0,各位定义: bit15~12   bit11~8   bit7   bit6   bit5   bit4      bit3         bit2&nbsp...
fish001 微控制器 MCU
MSP430学习小结3-MSP430基本时钟模块
与51、AVR等单片机不同msp430的时钟信号源有LFXT1,XT2,DCO三种。 1、LFXT1:可接高速和低速晶振,在低速模式下,它可以外接32k的晶振而不需要负载电容,这种方式较为常见主要用来为ACLK提供低速的时钟信号,以供低速外设使用。 2、XT2:高速振荡器,它可以接一个0.4~16M的晶振,它相当于高速模式下的LFXT1。通常将它配置成一个高速的振荡源,为MCLK何SM...
Aguilera 微控制器 MCU
修改2812 CKFA工程CMD文件
想基于2812的CKFA工程修改成为28335的CKFA工程,观察发现2812使用到H0 saram,而28335没有这个空间,是否能用L4-L7 SARAM代替,L4-L7 SARAM是否非安全区域,如何修改CMD文件成为28335 CMD?请各位大虾指点一下!...
applejuice102 微控制器 MCU
MSP430 常见外围电路 开发板电路 原理图
MSP430 常见外围电路  开发板电路  原理图 ...
fish001 微控制器 MCU

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

eva_qin7

不错的课程,学习了!

2019年09月13日 22:07:52

mafeng

介绍的很详细

2019年07月25日 08:10:51

54chenjq

MSP430和MSP432平台的代码移植

2019年07月20日 09:29:02

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

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

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

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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