您的位置 首页 系统

MSP430心得体会

因DC的邀请写一个有关中断的东东,我也接触430不久只能以自己的心得体会更大家分享,若有纰漏恳请见谅。MSP430用户手册上有的中断介绍我就

因DC的约请写一个有关中止的东东,我也触摸430不久只能以自己的心得体会更我们共享,若有疏忽恳请见谅。MSP430用户手册上有的中止介绍我就不赘述了,我们能够看User Guider.我讲的主要是书上没有的,或者是点的不透的。期望对我们有用。

1.中止嵌套,优先级
430总中止的操控位是状况寄存器内的GIE位(该位在SR寄存器内),该位在复位状况下,一切的可屏蔽中止都不会发生呼应。可屏蔽中止又分为单中止源和多中止源的。单中止源的一般呼应了中止服务程序中止标志位就主动清零,而多中止源的则要求查询某个寄存器后中止标志位才会清零。由于大多数人触摸的第一款单片机通常是51,51单片机CPU在呼应低优先级的中止程序进程中若有更高优先级的中止发生,单片机就会去履行高优先级,这个进程现已发生了中止嵌套。而430单片机则不同,假设在呼应低优先级中止服务程序的时分,即便来了更高优先级的中止服务恳求,430也会置之脑后,直至低优先级中止服务程序履行结束,才会去呼应高优先级中止。这是由于430在呼应中止程序的时分,总中止GIE是复位状况的,假设要发生相似51的中止嵌套,只能在中止函数内再次置位GIE位。

2.守时器TA
TimerA有2个中止向量。TIMERA0,TIMERA1
TIMERA0只针对CCR0的计数溢出
TIMERA1再查询TAIV后可知道是CCR1,仍是CCR2,亦或TAIFG引起的,至于TAIFG是什么情况下置位的,则要看TA作业的形式
详细看用户手册。还有一点TA自身有PWM输出功用,无须借用中止功用。在这个问题上常常出现使用弯路的是怎样结合TA和AD实施守时采样的问题,很多人都是在TA中止里翻开AD这样来做。这是不适宜的,由于430 的ADC10,ADC12(SD16不熟悉,没发言权)模块均有脉冲采样形式和扩展采样形式。只需挑选AD是由TA触发采样,然后把TA设置成PWM输出形式,当然输出PWM波的都是特别功用脚,可是在这里它是不需求输出的,所以引脚设置不用理睬。值得关怀的便是PWM的频率,也便是你AD的采样率。

3.看门狗复位
看门狗有2种作业形式:守时器,看门狗
守时器作业形式下WDTIFG在呼应中止服务程序有标志位主动复位,而在看门狗形式下,该标志位只能软件清零。可是怎样判别复位是由于WDT作业在看门狗形式下的守时溢出引起的,仍是看门狗写密钥过错引起的呢?………………………………
答案是没有办法,至少我没见过有什么办法,也没见过周边的人有什么办法。若有人知道办法谢谢共享。
4.常常有人会问这个句子的MOV.B #LPM0,0(SP)的效果。假设你在进入中止函数之前,430是在LPM0下待机,若要求履行完中止函数之后进入LPM3待机,在中止函数里写MOV.B #LPM3,SR是无效的。由于在进入中止时430会把PC,SR压栈,( SR内保存着低功耗形式的设置)即便你写了MOV.B #LPM3,SR,在退出中止出栈时SR会被从头设置成低功耗0,要到达这样的意图,只能更改仓库内SR的设置:MOV.B #LPM0,0(SP)。

5中止向量:
430的中止向量是FFE0H—FFFFH,总共32个字节也便是FLASH的最终一段,430的FLASH有大有小,可是最终地址肯定是FFFFH(大FLASH超越64K的在外)所以它们的开端地址是不相同的,而一般IAR默许编译都是把程序放在FLASH开端的方位(不包括信息段)。
有个值得弄清楚的问题是:什么是中止向量?中止向量实践便是保存中止函数进口地址的存储单元空间。就像FFFEH+FFFFH这2个字节是复位中止向量,那么它存储的便是主函数在FLASH内的开端地址,假设主函数保存在以0x1100为开端地址的FLASH块内,那么你会发现FFFFH 内保存的是0x11, FFFE内保存的是0x00.其他什么TimerA,ADC12,一切的都相同。仅仅你每次写的程序犬牙交错,中止函数放的方位不相同。IAR编译器都会给你定好,然后在你用JTAG烧写程序的时分,把这个地址,烧写到相应的中止向量。由于中止函数所在地址能够由用户自定义,也能够让IAR主动编译,所以这个地址除了源代码开发人员知道,其他人是不知道的,BSL便是使用这32个字节的中止向量内的内容的特别性设置的暗码。可是有几个东西在430是不变的,便是触发中止的条件满意后,它到哪个当地去寻址中止服务函数的进口地址,是TI 在做430时就固化好,定死的。比如说上电复位的时分,它知道去FFFE,FFFF单元找地址,而不去FFE0,FFE2找地址,这个映射联系是430固化不变的。可有的时分你便是需求改动“中止向量”,这怎样办?430FLASH程序自晋级里有时就会碰到这个问题,办法是在430本来默许的中止向量表内做一个跳转操作,相同以上电复位为例:
ORG 0x2345
PowerReset: mov.w &0xFCFE,PC
…………………………
…………………………
ORG 0xFFFE
DW PowerReset

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/xitong/258990.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部