
STM32F107 复位标志问题( @: x+ j) ?) m; ?* o* B# f : x a9 w i+ w4 R6 V- E 前言 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。 问题: 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被8 R3 n5 r% G8 r( a, H7 o 置起,从而引起判断出错。6 ~6 R. o3 z, w, h# D D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。* P1 ?/ p3 _$ _+ q+ w 4 i- P( q7 ~7 V1 k0 s$ n 分析:8 w g2 s. ~9 H; L 在参考手册中,关于RCC_CSR 寄存器的描述如下:0 n" n, m! b+ s6 Y ![]() 5 J5 q3 v5 u+ k1 N 表面看来,对各复位源的分割是很清楚的。5 q( C. V& S5 ]9 ^1 T 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。 ![]() ) G/ Z* `: Z8 e% q 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低 脉冲。在文档中对这一点也有明确说明。4 B" F) V4 h# Q* F9 Q9 X 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时, 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。 ( A3 `" G4 N) J; m/ C 那么如何判断复位源呢? 考虑到上述因素,程序中只要略加判断就可以处理,即:; B* q8 ]6 x: p 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门- `. L+ [/ Q/ l 狗复位。 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。 * A. H4 f; b- C1 ? 文档下载地址:$ [( E& O& w- B9 u; C https://www.stmcu.org.cn/document/list/index/category-1032 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html |
是啊主要看标志 |
学习 |