STM32F107 复位标志问题- U* j% E. H/ k, `: b: T ; O4 s/ S# w* l3 \! V w 前言/ R; L& j/ Y6 Y# ^* d! ? 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。; j- T$ Q% r+ { & W; v, ^3 i b3 o! z 问题:; z5 ~% r5 e6 G7 s8 A$ g, A2 e 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被 置起,从而引起判断出错。. c! [5 K- L% o1 Q- ~* n/ P- h0 a D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。 m3 ]: y( d& X: O ^$ g 分析:6 z' n9 K& [6 r/ X. Q) K 在参考手册中,关于RCC_CSR 寄存器的描述如下:# [: c4 X9 i4 R5 B/ {5 V5 A, R1 m& b 7 p3 m+ j( o- t( s/ a" w7 p 表面看来,对各复位源的分割是很清楚的。) G/ i% S3 X4 v; B 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。 0 O4 w& n% f$ N3 K& D+ [ 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低% S. K% a% d$ T1 L 脉冲。在文档中对这一点也有明确说明。$ m# i' w. U- m) G# Q; d+ H 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时,6 t+ H) j: t, }* E7 g9 O) K7 { 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。 # F* ~$ V1 Q- Y) }. C* u 那么如何判断复位源呢? 考虑到上述因素,程序中只要略加判断就可以处理,即:' h0 e# ]$ ]4 l) Y# e. e" ` 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门 狗复位。4 ^4 L0 @3 f9 c3 f ? 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。8 J2 N5 b- z' D! C 4 p. c ~' K& R, K* q 文档下载地址:9 {4 A5 |% @" K) | https://www.stmcu.org.cn/document/list/index/category-1032 ' S" \* c9 V4 P# |& z" v 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html! ]3 |9 t$ d% O6 `( r5 z$ [9 L5 N & T8 f' O( J: v% | |
是啊主要看标志 |
学习 |
小马哥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