STM32/STM8技术论坛
直播中

王峥

7年用户 204经验值
私信 关注
[问答]

STM32L4开机不启动

大家好!我最近遇到一个奇怪现象。测试2块板子,出现了相同状态,没敢继续测了。
电路板已经测试过几个月,一直正常运行,这两天在测试IAP跳转的时候改动了时钟配置,增加了一条HAL_RCC_DeInit();,重新烧写到CPU之后,启动,情况还好,再次启动就不行了。我量了复位脚,果然不正常。波形如下,大家帮我看下怎么回事??




回帖(8)

陈磊

2019-1-9 09:19:09
HAL_RCC_DeInit() 函数就是去RCC初始化。
需要重新初始化RCC....
举报

孙婷婷

2019-1-9 09:24:53
楼主可能是因为代码的问题,测试以前正常的程序,如果没有问题。就按照楼上的方法测试。
举报

王峥

2019-1-9 09:33:07
我测试了以前的代码,也测试了单独串口输出的代码,全部都无法运行了。就像是硬件被烧毁了一样。但是我把整个FLASH都擦除,然后烧写到80000000的时候,又可以运行。
举报

孙婷婷

2019-1-9 09:39:38
HAL_RCC_DeInit();是在IAP里面加的,你换IAP程序了吗?
举报

王峥

2019-1-9 09:47:57
引用: TOPCB 发表于 2019-1-9 11:57
HAL_RCC_DeInit();是在IAP里面加的,你换IAP程序了吗?

HAL_RCC_DeInit();是加在了Bootloader里面的,APP里面有时钟配置程序。同样的程序(Bootloader和APP)拷贝到其他板子上面我也测试过了,能正常运行。目前发现3个芯片会出现这种情况,而且在我烧写Flash的时候出现了写保护错误。这个很难再碰到。每次碰到这个错误就会再也无法正常使用了。

另外还有一个情况,我的APP有时候无法跳转,运行完Bootloader之后,就卡住了。然后重启一下,重新上电,又能够运行。
代码太复杂就没有贴。
举报

孙婷婷

2019-1-9 10:04:46
这个在APP重新初始化时钟即可。按照这样的测试,猜测还是因为时钟停止工作后,导致程序不运行。看一下HAL_RCC_DeInit()以后,是不是所有的晶振(内部和外部的)都不工作了,这样的话芯片就不能正常工作了。
举报

lee_st

2019-1-9 11:42:04
复位,或晶振问题
举报

lee_st

2019-1-9 11:42:19
检查一下晶振的波形
举报

更多回帖

发帖
×
20
完善资料,
赚取积分