用MSP430F5529做了一个自平衡小车,先用看门狗定时中断,然后嵌套了一个UART的RX中断,结果发现程序最后容易卡死在UART中断处理函数中的一句话。请问程序卡死是因为我使用了中断嵌套的原因吗?如果单片机一直在中断处理函数中运行,单片机会跑飞吗?那要怎样处理、有什么解决办法吗?求问
灰小子:
中断嵌套太多容易堆栈溢出导致跑飞或卡死
如果对任务实时性要求不是太高,不建议用中断嵌套。
zhen cheng1:
回复 灰小子:
谢谢回答
Maka Luo:
先分析一下是卡死还是跑飞。
开启看门狗,如果是卡死会导致看门狗复位,如果是跑飞了就无法复位。
user1866843:
回复 Maka Luo:
Hi Maka
单片机自带的看门狗,无法拉回程序跑飞这种情况吗?(自带看门狗难道如此脆弱)
怎样应对程序跑飞这种情况,需要外部硬件看门狗吗?(软件陷阱,空语句等等辅助措施?)
haitao jin:
不要嵌套太多,毕竟堆栈有限。。。前段时间用430写一个PID的代码,一个公式写成两部分,才没有死机
user1866843:
回复 haitao jin:
^_^,局部变量太多,确实容易溢出。
怎样写成两部分呢?是写在两个独立的函数中吗?
haitao jin
不要嵌套太多,毕竟堆栈有限。。。前段时间用430写一个PID的代码,一个公式写成两部分,才没有死机