STM32F107 复位标志问题 前言$ J4 ?" y2 k2 B& r$ K( ~1 Z9 y 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。 问题:1 K' n0 C2 t' q0 ]+ D2 g 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次8 c2 b; q- J r( j, \: o 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被+ F0 u6 z0 x7 Y# D+ d* Y 置起,从而引起判断出错。- b6 k' p" [0 I! G2 ^$ E, m D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。. V- x6 Z5 n# K$ ^; P ; K, z1 z% ~8 `# \2 t 分析: 在参考手册中,关于RCC_CSR 寄存器的描述如下:4 n( ~* D5 G' P1 s2 r 表面看来,对各复位源的分割是很清楚的。- x+ n7 b8 |6 g! P 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。5 ^/ C( ]: _0 P% _! v 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低* N3 l- B' i' t3 U/ Q% d& E 脉冲。在文档中对这一点也有明确说明。 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时, 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。 8 ]+ B: o# ]/ z# c, g1 o 那么如何判断复位源呢? 考虑到上述因素,程序中只要略加判断就可以处理,即: 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门 狗复位。- z3 J0 _# Z/ | 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。! Y! ^3 I! h' a) x" P - T( B, E# q: L. x 4 N. z7 t- c: ]: w 文档下载地址: https://www.stmcu.org.cn/document/list/index/category-10323 E& e' ~' `/ N$ r* [; s 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html( V- l G# e: E1 F. |" ? |
是啊主要看标志 |
学习 |
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP