死机现象:HC32L130 Cortex-M0出现所有的中断都进不去,主循环能正常运行,定时器和IO等都能正常运行
发现一个规律:
a. AD采样率10KHz,用DMA接收串口数据,串口中断和DAM中断都没开,出现死机。
死机情况串口和DMA都没有错误标志,DMA传输计数和内存地址都正常变化,说明DMA传输本身没有问题。
b. AD采样率10KHz,不用DMA,用串口中断接收数据,不出现。
c. AD采样率500Hz,用DMA接收串口数据,串口中断和DAM中断都没开,不出现。 通过各种实验得出结论:cpu负荷重情况下,(可能总线错误)导致复位,此时复位标志为0x00,系统能进主循环,但所有中断都不能进。
查资料M3有总线错误异常中断,M0没有。 解决方案:通过判断复位标志00进行一次软复位,或者通过主循环读取定时器做监控异常进而软复位。
#4) 最后原因是:触发了ADC中断标志但没能进入中断服务,一直占据中断资源。
0x28对应ADC中断号40。
正常逻辑:只有在中断ISR才能读取到中断号,在退出中断后该中断状态为0。
说明发生了ADC中断,但没有触发进入中断服务。ADC中断优先级是最高的,占据了中断资源导致其他中断无法进入。 转自https://blog.csdn.net/tan_420727915/article/details/135764831
|