[应用相关] 断电重启后程序运行约8秒钟后跑飞了?

[复制链接]
 楼主| zhenykun 发表于 2020-4-19 19:33 | 显示全部楼层 |阅读模式
STM32F302RE芯片,程序在调试模式运行OK,用KEIL下载程序,后自动运行也没有问题,断电重启后程序运行约8秒钟后跑飞了?
 楼主| zhenykun 发表于 2020-4-19 19:36 | 显示全部楼层
有没有人碰到过?程序没有启动看门狗
jlyuan 发表于 2020-4-19 19:39 | 显示全部楼层
跑飞了肯定会导致 hardfault,在hardfault里面的寄存器打印出来看看出错的地方
午夜粪车 发表于 2020-4-19 19:43 | 显示全部楼层
请问在hardfault下怎么寄存器打印出出错的地方?
chenho 发表于 2020-4-19 19:47 | 显示全部楼层
楼主看看你的程序怎么回事
shimx 发表于 2020-4-19 19:50 | 显示全部楼层
如果每次都这样就是程序存在问题,查看一下变量。
jiaxw 发表于 2020-4-19 19:57 | 显示全部楼层
在fardfault 里面写个汇编代码,将PSP或者MSP拷到一个变量中,将该变量转换成指针,然后向上取8个world数据,该数据依次为 xpsr,pc,lr,r12,r0~r3.
 楼主| zhenykun 发表于 2020-4-19 20:01 | 显示全部楼层
刚确认了一下,好像是降频导致的,回复主频72M就没有这个问题
 楼主| zhenykun 发表于 2020-4-19 20:04 | 显示全部楼层
就是不知道为什么降频的程序,通过STLINK下载后自动运行就不会出问题,重启之后就出问题了
huwr 发表于 2020-4-19 20:08 | 显示全部楼层
对汇编不熟悉,请教可否能给个简单范例
yufe 发表于 2020-4-19 20:11 | 显示全部楼层
__asm void wdt()
{   
    IMPORT u32wdt
   
    MRS r0, msp      
   
    LDR r1, =u32wdt
    STR r0, [r1]
   
    BX lr   
   
}
 楼主| zhenykun 发表于 2020-4-19 20:14 | 显示全部楼层
好像没法查看啊,程序都不动了也没法把数据通过串口输出,又不能调试
zhuhuis 发表于 2020-4-19 20:21 | 显示全部楼层
没研究过。
 楼主| zhenykun 发表于 2020-4-19 20:38 | 显示全部楼层
调试模式是好的,而且用KEIL下载后自动运行时没有问题,重启后来出问题的
huwr 发表于 2020-4-19 20:41 | 显示全部楼层
调试时程序运行在RAM区,主频受Keil控制。
 楼主| zhenykun 发表于 2020-4-19 20:48 | 显示全部楼层
问题已找到,降频到8M就是不行,16M或16M以上都可以,好像没有看到那个资料有说STM32主频必须跑8M以上吧,谢谢大家回复
huwr 发表于 2020-4-19 20:52 | 显示全部楼层
查看一下变量的值对吗
wenfen 发表于 2020-4-19 20:55 | 显示全部楼层
调试没问题就是代码没有问题
huwr 发表于 2020-4-19 20:58 | 显示全部楼层
程序全速运行可能变量的问题
tian111 发表于 2020-4-19 21:06 | 显示全部楼层
可能是中断服务程序执行时间过长,降频后导致中断无限嵌套。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

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

868

主题

11535

帖子

3

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