×
单片机 > 单片机程序设计 > 详情

STM32之option bytes踩坑记录

发布时间:2020-08-21 发布时间:
|

最近在做一个stm32项目,用的盗版jlink调试,突然某次下完程序,stm32竟然开始无限重启了,量了一下复位脚,发现有周期性的重启脉冲输出,一开始我以为是硬件坏了,重新焊了一套硬件,发现新焊的是好的,但是原来那块板子,检查来检查去感觉也不像是硬件和程序的问题。


后来我查了一些资料,想到去检查复位后的RCC_CSR寄存器,这里会标识系统是由哪个信号引发的reset,看了以后才发现是由于看门狗引起的,但是看门狗我软件上都一直没开过,感觉非常奇怪。


后来查了些资料才发现:


STM32的独立看门狗可以是硬件使能或软件使能,硬件使能是通过option bytes配置,软件使能是通过软件设置寄存器位配置。

 

硬件使能的看门狗,在系统上电之后就开始工作,一旦开始工作就没有办法让它停止工作;而软件使能的看门狗,只有在设置了相应的寄存器位后才能开始工作,一旦开始工作,只有系统复位才能让它停止工作。

如果启用了硬件使能,必须通过擦除相应的选择字节位关闭硬件看门狗功能,这时看门狗的功能可以通过软件使能。


原来那么高端的,竟然还有option bytes这种东西,再查阅了一些关于option bytes资料:


STM32 的 Flash information block 部分,包含有特殊的选项字节,可以用于系统配置等信息, 其中还有两个有效字节(实际四个字节,两个是校验字节)的用户自定义数据字节。用ST-LINK可以直接配置这些特殊的配置位。


原来如此,STM32也有类似51/AVR之类的熔丝位,但是一般来说平时手动设置会比较少,所以不太注意这一点,用ST-LINK Utility可以直接使用ST-LINK来配置熔丝位:


打开以后界面如下:


可以看到WDG_SW位被清零了,这个位如果清零,看门狗上电就会由硬件使能,且关不掉,而另一块板子,这个配置位是置1的。我这里把WDG_SW位勾选上,然后写入,无限自动重启问题就解决了。看来盗版jlink确实容易用出问题来,能用正版还是尽量用正版吧。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项