TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430fr5992支持中断嵌套吗?在线等,急急急!!!

使用芯片型号为MSP430FR5992,程序主频为21M左右(内部的DOC),辅助时钟为外部的12M,低频为外部的32.768k。

程序中的中断有:定时器(1ms的周期),IO中断(频率为950hz,采集陀螺数据),DMA中断(获取AD采样值,20ms中断7次),串口收发中断(发送频率可设,接收频率不定,取决于用户操作)。

现在的问题是,产品的波特率范围比较宽300-115200.当波特率大于38400时,用户串口发送的命令产品偶尔会不应答,波特率降低后就没有这个问题了。经仿真测试发现,当产品不应答时,接收到的命令不完整,有字节丢失,导致解析不出有效命令,所以产品没有应答。目前我的分析是波特率比较大时,例如115200,接收一个字节的时间比较短,只有86us,而其他中断的执行时间经过测量后发现有大于100us的情况,而且我仿真测试时发现一旦进入中断服务程序后,总中断GIE是关闭的,退出中断服务后总中断会打开,也就是说默认是不允许中断嵌套的。在这种情况下,如果程序正在执行大于86us的中断服务程序,这个时候一旦有串口命令进来,就有肯造成rx数据的丢失。

也许有人建议缩短中断程序时间,控制在86us以内,但是这个改动太大了,并且陀螺的采样要求有准确的频率,必须在中断中完成数据采集,所以这条路走不通。

我在网上看了看,有人说使用中断嵌套,这样就不会丢数了,方法是在近入中断服务程序后先手动打开GIE(总中断开关)即可,我尝试了一下,程序跑飞了,不知道怎么回事。

问题1:msp430fr5992是否支持中断嵌套?

问题2:如果支持中断嵌套,如何实现?

请TI工程师和广大网友不吝赐教。谢谢!

灰小子:

问题1,支持中断嵌套的

问题2,只要在中断服务程序里重新使能中断就可以了。

详情可以参考:www.21ic.com/…/190891.html

Susan Yang:

默认状态下是没有中断嵌套的,若用到中断嵌套的话需要使用_EINT()打开全局中断。

赞(0)
未经允许不得转载:TI中文支持网 » msp430fr5992支持中断嵌套吗?在线等,急急急!!!
分享到: 更多 (0)