打印
[资源共享]

使用芯圣HC89S105AK出现不容易复现的异常卡死,无响应故障

[复制链接]
226|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-6-26 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
项目里面使用了中断,包括10ms一次的定时器中断,两个uart的接收中断,其中定时器中断每次会进行按键扫描。

故障现象是,在按键时有较大概率(大于5%)会出现无任何响应的情况,加入看门狗后,会导致重启,很像程序跑飞。

经过反复测试,某次debug调试时,当发现疑似程序跑飞时,停止运行。发现程序运行在delay函数里面。

void delay_ms(u32 ms)
{
    unsigned int fui_j;
    for(;ms > 0;ms--) {
        for(fui_j = 1596;fui_j > 0;fui_j --){
            ;
        }
    }
}

查看ms变量为0xFFFFFF31。

全工程搜索了一下,只有一处是在运行阶段调用了,其它都是在启动配置阶段调用。

调用语句是delay_ms(100);当时写这句是为了屏幕显示,防止多过数据刷屏。

猜测是某种原因导致了ms这个参数的内存被修改了。越过了0这个值。

具体原因等后面有时间了再分析一下。

第一次发文章,就是记录一下这次的问题。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_37453172/article/details/138561020

使用特权

评论回复
沙发
LEDyyds| | 2024-6-27 16:13 | 只看该作者
这个感觉不像延时溢出

使用特权

评论回复
板凳
suncat0504| | 2024-6-29 09:56 | 只看该作者
既然有中断处理,你仔细看看有没有可能是由于中断过快,产生嵌套造成的。在中断处理中,屏蔽中断,防止嵌套以及及时适时清除标志都是很重要的事情。另外还得注意保护现场,防止被修改导致中断完成后无法及时返回、

使用特权

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

本版积分规则

1521

主题

14473

帖子

9

粉丝