14557|12

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

香主,STM32芯片对打静电时出现的死机现象,CPU进入了什么状 [复制链接]

对于通过光耦到CPU管脚的开关量输入输出接口,打静电8000V,CPU会出现死机想象,有时候过上1~2分钟CPU会被看门狗复位活过来,有时候就彻底死了。

   先讨论被看门狗救活的情况:
    为什么会1~2分钟CPU才活,这段时间CPU在做什么:程序跑飞?晶振停振?还是进入了特权系统状态?调试状态?RAM运行状态?下程序状态?
    肯定的是在CPU死了的时候,是无法通过串口下程序的。
    还有点特奇怪,我把程序改成打开看门狗不喂它,用网友MSUISP的下载软件中的下载后执行,竟然看门狗要过1~2分钟才复位,而我从新上电后看门狗是立即复位的,这1~2分钟看门狗干什么去了?
    CPU死了,有时1~2分钟看门狗可把CPU给复位活了,有时就死翘翘了,这段时间CPU干什么去了,分钟看门狗干什么去了?
    如果不开看门狗,CPU死了也就死了,彻底不会活。开了看门狗,CPU有时可立即活,有时过段时间活,有时活不了?

    是STM32的内置看门狗不可靠,还是CPU不可靠,还是我的软硬件有问题,希望大家给点思路或想法

   
此帖出自stm32/stm8论坛

最新回复

#define CPU_IDLE()         /* while 循环体最好让CPU进入IDLE状态,已降低功耗 */         while (1)         {                 CPU_IDLE();                 if (g_Tmr[0].flag == 1)                 {                         break;                 }         } 这个CPU_IDLE();是干嘛用的,什么也没定义 啊  详情 回复 发表于 2011-12-2 15:53
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

呵呵,古怪。

                                 占个沙发等结果。
此帖出自stm32/stm8论坛
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

回ls

                                 楼上,你也可试试,把看门狗打开,在大循环中不喂它,用你的软件下进去后直接运行,不会立即复位的。
此帖出自stm32/stm8论坛
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

4
 

看门狗的超时时间与你的配置参数相关

比如独立看门狗的最长超时时间可超过26秒钟,看下图:




另外,不要以为看门狗可以刀枪不入,干扰太严重看门狗也会死。看门狗的作用是提高抗干扰的能力,而不是完全抵御干扰。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 

香主,我用的16分频,最长也就不到2秒啊!

可实际死的时间可长达1-2分钟,很多时候根本就活不了。

“还有点特奇怪,我把程序改成打开看门狗不喂它,用网友MSUISP的下载软件中的下载后执行,竟然看门狗要过1~2分钟才复位,而我从新上电后看门狗是立即复位的,这1~2分钟看门狗干什么去了?”这种现象香主能给解释一下吗?你很方便试的。

另外在STM32的1.0固件库中有HardFaultException()、MemManageException()等四个中断函数,干什么用的,在手册中找不到任何说明,里面还竟然是
while (1)
{
}
的死循环!什么时候会进这个中断?进去不就挂了
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

6
 

香主,有什么办法验证看门狗死没死?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 

你对外部晶振停振怎么看?我感觉这种可能更大

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

8
 

如果独立看门狗的预分频系数为16分频,最长超时时间是1638.4

看看我在4楼贴出的表格。至于为什么“实际死的时间可长达1-2分钟”,要实际诊断后才可能知道。


我不知道有什么办法验证看门狗死没死,你有什么好建议?


强静电造成系统紊乱有很多种可能,外部晶振停振是可能性之一,但可能性多大,我无法评估。
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 

香主,这个问题您还没给解答啊

STM32的1.0固件库中有HardFaultException()、MemManageException()等四个中断函数,干什么用的,在手册中找不到任何说明,里面还竟然是
while (1)
{
}
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 

关于异常处理是属于Cortex-M3内核的部分

请参考ARM公司的Cortex-M3参考手册。

ST刚刚发布了一个文档,针对使用STM32的用户,简单说明了需要用到的Cortex-M3内核的资源。
相关链接:http://www.st.com/stonline/products/literature/pm/15491.pdf
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 

感觉最好使用外部看门狗,省的CPU的问题导致看门狗不正确

                                 感觉最好使用外部看门狗,省的CPU的问题导致看门狗不正确动作,或者不动作
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 

回ls

我可以让STM32的模狗和硬狗打起来。

设置AD的一个限值,进入模拟看门狗上电进中断,不退出来,硬狗饿了就咬CPU。再复位由落模狗口了。

在加上窗狗,野狗,四狗打起来才热闹呢。

谁哪个是公,哪个是母
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

13
 

求教香主及各位网友们

#define CPU_IDLE()
        /* while 循环体最好让CPU进入IDLE状态,已降低功耗 */
        while (1)
        {
                CPU_IDLE();

                if (g_Tmr[0].flag == 1)
                {
                        break;
                }
        }
这个CPU_IDLE();是干嘛用的,什么也没定义 啊
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表