STM32F107 复位标志问题5 J0 m1 u8 o7 E5 | A& H- V. } 前言 本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。, R7 T3 W7 J* s! e 7 t( M9 }( P" d' D9 ?) z, s 问题: 某用户使用STM32F107 产品进行设计。在使用程序入口处,会判断RCC_CSR 中的标志来确定上次4 c) H' L7 E* Q0 d0 D) P/ C" x 复位的类型。然而,用户发现其中的PINRSTF 标志即使在NRST 引脚并未被外部信号拉低时,也会被 置起,从而引起判断出错。3 P9 Z7 {3 b) p& j0 F/ ~ D9 的存在 IO 口实际处于Floating 状态。此时,采样此通道上电压似乎应当是一个不确定的值才对。 S1 V) S/ v. n* i2 Z0 C+ T& f 分析: 在参考手册中,关于RCC_CSR 寄存器的描述如下: % a9 k' X+ A% C; K1 ^ 表面看来,对各复位源的分割是很清楚的。 然而,在分析NRST 引脚造成的复位时,还需要查看复位电路的框图。2 Z( L8 b( |: r; T4 H6 b 从上图可以看出,当发生其他复位例如看门狗复位时,同样会在NRST 引脚上送出一个至少20us 的低7 ` ~, r+ j3 I+ p# H; g8 j$ m, `/ s 脉冲。在文档中对这一点也有明确说明。 而复位标志PINRSTF 在内部设计中,只要是其上有低电平,就会被置位。因此,当发生其它复位时, 该位也有可能被置位。关于这一点,在手册中的说明不够符合国内客户习惯,容易造成误解。/ }+ w; M+ ^ C$ q# _ 6 I* R; r o3 V- _; D2 z$ z" W 那么如何判断复位源呢? 考虑到上述因素,程序中只要略加判断就可以处理,即:9 }# V) I% {) A7 @6 [ 首先判断是否有其它标志被置起。例如,同时有看门狗复位标志和PINRSTF 标志置位,则表明是看门 f: ?0 _0 w# z1 P4 j 狗复位。8 ^/ l8 T4 N( `6 q& L6 V 若仅有PINRST 标志被置位,则表明是NRST 引脚被拉低产生的复位。! q. b# c* k: X. i6 @ + H% }4 m q! {4 E" l: J Q4 t' G2 V, p n3 ] 文档下载地址:. l% i% J9 S1 ~ https://www.stmcu.org.cn/document/list/index/category-1032. Z" ^8 A$ s3 {; I! v$ w 实战经验汇总: https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html |
是啊主要看标志 |
学习 |
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32固件库分享,超全系列整理
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
小马哥STM32F103开源小四轴RoboFly全部资料大放送
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP