打印
[MM32硬件]

MM32F0131 死机问题

[复制链接]
765|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wailian1265k|  楼主 | 2022-11-9 23:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题遇到的现象和发生背景

MM32F0131 死机问题

问题相关代码,请勿粘贴截图

死机现象1: 50ms定时器,硬件错误中断不执行。
由于50ms定时器是一直开着的,所以认为程序已经跑飞,但是很奇怪程序跑飞硬件错误中断也不执行
u8 Flag_Timer,Flag_Hard;
void TIM16_IRQHandler(void) //5MS
{
if (TIM_GetITStatus(TIM16, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM16, TIM_IT_Update);
Flag_Timer=!Flag_Timer;
if(Flag_Timer)
LED1_ON;
else
LED1_OFF;
}
}

void HardFault_Handler(void)
{
while(1)
{
Flag_Hard=!Flag_Hard;
if(Flag_Hard)
LED1_ON;
else
LED1_OFF;
Delayms(50);
}
}
死机现象2:按键按下触发 ADC DMA时才出现死机
死机现象3:单独循环开启ADC_DMA,不会死机
while(1)
{
ADC_DMA();
}


使用特权

评论回复
沙发
wailian1265k|  楼主 | 2022-11-9 23:32 | 只看该作者
死机现象4:同一个程序,用jlink调试,测试按键触发ADC DMA 500次未死机
程序不变,不调试,正常运行,测试开启按键触发ADC DMA 500次,死机20次

使用特权

评论回复
板凳
wangtaohui| | 2022-11-18 18:23 | 只看该作者
硬件错误中断里就不要调用函数了,本来就异常了,这里不适合执行函数调用,再简单的都不要。
写个while(1),用仿真器看有没有跳进去就是了。

使用特权

评论回复
地板
wangtaohui| | 2022-11-18 18:24 | 只看该作者
看看是什么时候死机,每次都是这个时候吗?

使用特权

评论回复
5
tpgf| | 2022-12-3 08:58 | 只看该作者
wangtaohui 发表于 2022-11-18 18:23
硬件错误中断里就不要调用函数了,本来就异常了,这里不适合执行函数调用,再简单的都不要。
写个while(1 ...

我估计楼主只是翻转LED 报警用而已, 仿真的时候是不会死机的,只有在不仿真的时候才会死机

使用特权

评论回复
6
nawu| | 2022-12-3 10:25 | 只看该作者
wailian1265k 发表于 2022-11-9 23:32
死机现象4:同一个程序,用jlink调试,测试按键触发ADC DMA 500次未死机
程序不变,不调试,正常运行,测试 ...

我认为这个现象的区别在于 在调试的时候并不是全速运行

使用特权

评论回复
7
aoyi| | 2022-12-3 10:39 | 只看该作者
是不是io和ADC在ram区的地址冲突了呀?重新分配地址试试看

使用特权

评论回复
8
zljiu| | 2022-12-3 11:40 | 只看该作者
按键操作和adc肯定发生了冲突  具体的查看一下地址的分配

使用特权

评论回复
9
gwsan| | 2022-12-3 13:18 | 只看该作者
程序跑飞的时候可以看到返回的错误代码吗

使用特权

评论回复
10
tfqi| | 2022-12-3 13:33 | 只看该作者
wailian1265k 发表于 2022-11-9 23:32
死机现象4:同一个程序,用jlink调试,测试按键触发ADC DMA 500次未死机
程序不变,不调试,正常运行,测试 ...

在程序中适当的位置添加一定的延时 应该就会有所改善

使用特权

评论回复
11
LOVEEVER| | 2022-12-23 13:43 | 只看该作者
wangtaohui 发表于 2022-11-18 18:23
硬件错误中断里就不要调用函数了,本来就异常了,这里不适合执行函数调用,再简单的都不要。
写个while(1 ...

我感觉可能异常处理没有完善,进入死循环就卡死了

使用特权

评论回复
12
Jacquetry| | 2023-1-5 17:26 | 只看该作者
看看是什么时候死机

使用特权

评论回复
13
朝生| | 2023-1-13 17:24 | 只看该作者
仿真的时候不死机,这个问题我怎么好像在哪遇到过。

使用特权

评论回复
14
软核硬核| | 2023-1-13 17:25 | 只看该作者
我估计是启动ADC DMA的时候死机。你可以把这部分代码先屏蔽掉,用简单的代码代替。

使用特权

评论回复
15
芯路例程| | 2023-1-13 17:25 | 只看该作者
你是不是在按键中断里面调用ADC开始采集?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

372

帖子

0

粉丝