测试RTC,测试一段时间后跑死,不加delay调用频繁就更早出现跑死,加了delay时间越长就跑的时间越长,跑死会死在iic总线busy、iic的error中断、boot.asm文件中,还有一个重要表现是在ostm1中断中明明符合if判断条件但不进if。在测试iic时已经发现每次都死在发送函数中,后来发现iic发送中断中有数组越界。
复盘,像这种一开始没事一段时间后出事,且会因为调用频繁而复现更快的问题应该在一开始就想到数组累加越界吧。事后认为当时思想应该简单点,main函数中代码简单没有问题,那么屏蔽ostm1中断还有问题就应该怀疑iic中断的问题,iic每次死在发送时候就应该怀疑发送溢出。
怀疑了半天没使用的局部变量有问题,怀疑.asm文件中的中断配置有问题,怀疑中断互相干扰,怀疑各种玄学,解决了一周,其实就按照正常的思路来,不要急躁,故障现象虽然复杂五花八门,可能合在一起都是跑飞现象,一个问题。