2

stm32看门狗(stm32的看门狗)

对ST提供的标准代码,我们做了一个小改动。

改动虽小,却大有讲究。

话说,几天前,经过一番研究,

没有从芯片厂家获得官方的代码库。

决定自力更生,今天开始在ST提供的system_stm32f0xx.c做一些修改。

使得开源代码扫描blackduck不再匹配上ST的代码。

同时,在代码中增加了使能读保护的功能。

在做代码修改时,想起来几年前对st提供的代码做了一个小修改。

1) 在设置系统时钟之前,做好watchdog的设置,同时使用watchdog。

2) 在使能外部时钟,并检测外部时钟是否ready时,注释掉超时判断的变量。

这个改动基于以下的考虑:

1) 对于ST的代码,如果在超时时间内没有检测到外部时钟ready,则退出等待并且切换到内部时钟。

2) 内部时钟精度比较差,精度受温度影响比较大。在全温度范围内仅能做到5%左右的精度。

3) 外部晶振在上电过程中可能因为时序会出现不起振的情况。

4) 如果切换到内部时钟,应用程序没有再进一步检测ready状态以及HSE相关的寄存器,根据应用逻辑很难判断是否使用内部时钟。

5) 串口以及我们类似KNX的通信对时钟精度要求比较高,当精度低于3%时,可能导致误码。

经过我们这一改动,如果外部晶振因为上电时序等原因,不能启动,则会发生看门狗超时,导致处理器重新上电,同时晶振部分电路也会重新初始化,达到了检测错误,同时出错重试的目的。

当使用st的代码库时,不能闭着眼睛使用,应该深入了解实现代码,特别应该分析代码的异常处理是否有问题。

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2151011/
1
上一篇ios14充电提示音怎么设置(ios14充电提示音设置方法)
下一篇 direct9 0(direct9和11的区别)

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部