[技术问答] HC32单片机

[复制链接]
2696|12
 楼主| robertesth 发表于 2024-9-25 10:03 | 显示全部楼层 |阅读模式

死机现象: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


shenxiaolin 发表于 2024-9-29 10:24 | 显示全部楼层
会不会是中断使能关掉了?
更多更合适ii 发表于 2024-9-30 17:30 来自手机 | 显示全部楼层
AD采样率500Hz,用DMA接收串口数据,串口中断和DAM中断都没开,不出现
p0gon9y 发表于 2024-11-13 22:25 | 显示全部楼层
根据你描述的现象和实验结果,HC32L130 Cortex-M0 在 CPU 负荷较重的情况下出现死机现象,且所有中断都无法进入,但主循环和定时器、IO 等功能仍能正常运行。这种情况可能总线错误或数据访问冲突

b5z1giu 发表于 2024-11-21 09:13 | 显示全部楼层
虽然 Cortex-M0 没有总线错误异常中断,但在高负荷情况下,可能会出现数据访问冲突或总线错误,导致系统进入一种“假死”状态。此时,虽然主循环和定时器等功能仍能运行,但中断系统可能无法正常工作。

cen9ce 发表于 2024-11-21 10:11 | 显示全部楼层
在高负荷情况下,中断优先级和抢占机制可能会受到影响。如果某个中断优先级设置不当,或者中断服务程序(ISR)执行时间过长,可能会导致其他中断无法及时响应。

g0d5xs 发表于 2024-11-21 12:23 | 显示全部楼层
DMA 和中断的交互可能会在高负荷情况下出现问题。虽然你提到 DMA 传输本身没有问题,但 DMA 和中断之间的同步机制可能会在高负荷情况下出现异常,导致中断无法进入。

ex7s4 发表于 2024-11-21 14:30 | 显示全部楼层
在高负荷情况下,多个任务或中断同时访问内存时,可能会出现内存访问冲突,导致系统进入异常状态。

l1uyn9b 发表于 2024-11-21 15:01 | 显示全部楼层
虽然你提到复位标志为 0x00,但硬件复位或看门狗复位可能会导致系统进入一种“假死”状态,此时虽然主循环和定时器等功能仍能运行,但中断系统可能无法正常工作。

lix1yr 发表于 2024-11-21 15:33 | 显示全部楼层
检查代码中是否有长时间运行的任务或中断服务程序,尽量缩短 ISR 的执行时间。

liu96jp 发表于 2024-11-21 16:45 | 显示全部楼层
优化任务调度,避免多个高优先级任务同时运行。

q1ngt12 发表于 2024-11-21 18:22 | 显示全部楼层
一定要确保 DMA 和中断之间的同步机制正确,避免在高负荷情况下出现异常。
q1d0mnx 发表于 2024-11-28 17:37 | 显示全部楼层
确保中断优先级设置合理,避免高优先级中断被低优先级中断抢占。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

1416

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部