
STM32F107 复位标志问题& @2 I5 T/ R2 c2 | * ^6 n5 P' Q9 ~! M; @# q" b 前言 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。 问题: 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被, Y7 Q' U" ]% F; {9 [0 p9 c* ? 置起,从而引起判断出错。/ Y. d- p7 x# `8 F D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。 分析: 在参考手册中,关于RCC_CSR 寄存器的描述如下: ![]() 2 j3 ~/ O7 C0 P* ~1 V 表面看来,对各复位源的分割是很清楚的。0 r$ F! `# F) u" i% q 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。) D/ ^, Q3 m( v# F7 q; x2 f" q ![]() 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低8 t$ K8 u. q( g) f# G7 [, V 脉冲。在文档中对这一点也有明确说明。, R: m, b5 z$ V9 O% I @! X( k; ? 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时, 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。 那么如何判断复位源呢? 考虑到上述因素,程序中只要略加判断就可以处理,即: 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门 狗复位。' ?. t: t- K' M: j0 t# _ 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。 . G. C2 _" a. W1 t- ?6 ?, |9 G ! [* C& o* p+ f 文档下载地址:4 O8 ?, h7 O& C5 f/ ^' t& u https://www.stmcu.org.cn/document/list/index/category-1032: B6 F; Q6 w$ r8 s/ u( g+ L+ K: ` " p1 n! H; Z( g+ {. _, z$ X 实战经验汇总:8 \$ ~4 J! F+ H5 E: ]3 Q" L https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html 4 j$ F8 g' Z6 g- B9 F ! [3 |! C5 N3 M* ~: ^/ s( T' L' | u" j, s |
是啊主要看标志 |
学习 |