
STM32F107 复位标志问题* c: I; O- |, c/ E6 ? % f1 w7 p7 k0 t. e- _0 p5 I5 y. ] 前言* H) v$ W& [" M6 O% z8 f1 X 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。 问题:0 v c& J0 s) V: B' M1 P" y6 n 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次6 p& S+ A( [0 R' q0 N- R: P 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被 置起,从而引起判断出错。 D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。 3 `+ Q6 Z4 I: a+ A5 M& J 分析: 在参考手册中,关于RCC_CSR 寄存器的描述如下:9 ^1 F& E1 z% X ![]() 表面看来,对各复位源的分割是很清楚的。 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。$ J' |1 I. k" ?- S ![]() * S* v2 c% }' }- h6 V+ B 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低7 v4 G1 [# O8 |% `* t! I- X/ A 脉冲。在文档中对这一点也有明确说明。# V2 Z3 Y' i+ a [ 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时, 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。) z3 Z+ ^; E& h" @' Q0 Q; K ; ^* U) a7 B5 e2 e0 c/ [* b$ L 那么如何判断复位源呢?# t) t3 x- {2 |( R2 O% l k1 e 考虑到上述因素,程序中只要略加判断就可以处理,即:3 K# |4 C; ]3 D0 t9 N' P+ d2 E 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门 狗复位。 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。 4 _, o8 U8 P- b( X' X4 q; f, c5 P 文档下载地址:/ R5 E, Q# r" p' I https://www.stmcu.org.cn/document/list/index/category-1032 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html $ D8 w" _8 V# J$ K5 y |
是啊主要看标志 |
学习 |