您的位置 首页 资料

MSP430的中止面面观

MSP430的中断优先级、打开关闭、中断嵌套优先级顺序从高到低为:PORT2_VECTOR(1*2u)PORT1_VECTOR(4*2u)TIMERA1_VECTOR(5*…

MSP430的中止优先级、翻开封闭、中止嵌套

优先级次序从高到低为:

PORT2_VECTOR (1 * 2u)

PORT1_VECTOR (4 * 2u)

TIMERA1_VECTOR (5 * 2u)

TIMERA0_VECTOR (6 * 2u)

ADC_VECTOR (7 * 2u)

USART0TX_VECTOR (8 * 2u)

USART0RX_VECTOR (9 * 2u)

WDT_VECTOR (10 * 2u)

COMPARATORA_VECTOR (11 * 2u)

TIMERB1_VECTOR (12 * 2u)

TIMERB0_VECTOR (13 * 2u)

NMI_VECTOR (14 * 2u)

RESET_VECTOR (15 * 2u)

当一起有多个中止来的时分才有优先级的考虑(优先级次序可查看向量表)。

有中止呼应今后主动封闭总中止,这个时分即便来更高优先级的中止都不会呼应。

要中止嵌套的话,就有必要在中止中翻开总中止。

msp430的指令中,DINT和EINT别离指关和开一切中止,也便是包容P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中止答应的一切中止答应位为“0”和为“1”。

完成中止嵌套需求留意以下几点:

1)430默许的是封闭中止嵌套的,除非你在一个中止程序中再次开总中止EINT;

2)当进入中止程序时,只需不在中止中再次开中止,则总中止是封闭的,此刻来中止不论是比当时中止的优先级高仍是低都不履行;

3)若在中止A中开了总中止,则能够呼应后来的中止B(不论B的优先级比A高仍是低),B履行完再持续履行A。留意:进入中止B后总中止相同也会封闭,假如B中止程序履行时需呼应中止C,则此刻也要开总中止,若不需呼应中止,则不必开中止,B履行完后跳出中止程序进入A程序时,总中止会主动翻开;

4)若在中止中开了总中止,后来的中止一起有多个,则会按优先级来履行,即中止优先级只需在多个中止一起到来时才起做用!中止服务不履行抢先准则。

5)关于单源中止,只需呼应中止,体系硬件主动清中止标志位,关于TA/TB定时器的比较/捕获中止,只需拜访TAIV/TBIV,标志位倍被主动铲除;

关于多源中止要手动清标志位,比方P1/P2口中止,要手艺铲除相应的标志。假如在这种中止用”EINT();”开中止,而在翻开中止前没有清标志,就会有相同的中止不断嵌入,而导致仓库溢出引起复位。所以在这类中止中有必要先清标志再翻开中止开关。

(1)铲除各个端口的外中止用:PxIFG,相应的方位0即可;

(2)铲除Timer中止用:TAIFG,TBIFG,相应的方位0即可;

MSP430的16个外中止比方软件铲除Flag,在进入外中止后,首先要做的便是把相应的PxIFG清0;

而定时器Timer中止是主动铲除Flag;

还有在中止嵌套的时分会用到,在进入中止后,MCU会主动把大局中止位GIE清零,这样在进入本中止后就不会再相应其他中止,若要进行中止嵌套,有必要在进入中止后把GIE再置1。

————————————————————————————————————————————

MSP430F2272 IO口中止运用的几点总结

这几天调试430,要求用IO中止唤醒体系。总结了以下几点经历,在运用IO口中止时应该留意。

一、多源中止中止标志需求软件清零。

在TI数据手册指出多源中止中止标志需求由软件整理。可是我在线仿真发现定时器的时钟中止和捕获中止好像会主动清零。不过最好仍是加上软件清零。而IO口中止有必要运用软件清零。

二、在中止封闭的情况下中止标志依然会被置位。

当IO口装备为中止功用后,不论是否敞开中止答应(PxIE.n),当中止条件满意时,相应的中止标志PxIFG.n都会由硬件主动置1。这样能最大极限的削减丢掉中止。假如在程序中要常常开关中止,主张在每次开中止之前先清零对应的中止标志位。否则或许会有问题。例如,在我的项目中需求用输入脉冲信号唤醒体系,当体系被唤醒后应该封闭该中止,而当体系进入休眠状况前应该再次敞开该中止。假如此刻在敞开该中止之前不清零中止标志,敞开中止后程序会当即进入中止服务子函数。

三、修正中止触发方法或许会使相应中止标志置位。

IO口中止触发方法有上升沿触发和下降沿触发两种。

四、别的弥补两点

1、若P2IN.x = 0, P2OUT.x = 1, P2REN.x = 1, P2DIR.x = 1, P2IES.x = 0(上升沿); 修正P2REN.x = 1 则 P2IN.x = 1, P2IFG.x = 1.

2、若P2IN.x = 1, P2OUT.x = 1, P2REN.x = 0, P2DIR.x = 1, P2IES.x = 1(下降沿); 修正P2OUT.x = 0 则 P2IN.x = 0, P2IFG.x = 1.

定论:P2IN发生跳变就会是中止标志方位位,P2IN的跳变或许因为改动P2OUT或许P2DIR或许P2REN而发生。

至于为什么改动P2OUT、P2REN、P2DIR会使得P2IN发生变化,应该参阅IO口的方框图

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部