CH573遇到的中断的奇葩问题

有个问题,有时候中断函数修改后,发现程序无法运行。经过研究发现,原来正常的程序,只是在中断程序的任意位置加上nop()语句,就不正常。

而且,更奇葩的是,加上nop()的个数为偶数,就正常,而奇数就不能运行。

然后我试试使用__attribute__((aligned(x))))将中断函数进行地址对齐,发现也能影响MCU的运行。

这个不能运行是指MCU上电后,不断复位。

请问下技术人员,这个问题是怎么回事,怎么避免?

image.png
我测了,编译运行没什么区别。


中断函数是在代码数量多到一定程度才有这种状况。

我写中断函数的有40行代码。


这个跟量多量少没什么必然的联系,理论上翻译到底层都是指令。
中断代码长,建议可以整理一下中断的执行逻辑,看看是不是有漏洞。还有如果使用Tmos,也要考虑中断对于Tmos任务的影响。


只有登录才能回复,可以选择微信账号登录