找回密码
 注册
关于网站域名变更的通知
查看: 342|回复: 2
打印 上一主题 下一主题

STM32的外部振荡器失效怎么解决?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-1-14 13:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
原因
1 M( u  v! E7 W! M9 T     在实际应用中,经常出现由于晶体振荡器在运行中失去 作用,造成微处理器的时钟源丢失,从而出现死机的现象,导致系统出错。严重时,由于系统的死机造成监控失效, 导致无法挽回的损失!' W0 l- l9 {8 G- F7 C  u0 \
  目的
7 B% `9 x. t7 E9 j1 n6 r8 F      STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE) 失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。
4 L: d' A9 n: @6 X5 p; a/ z  原理
$ V) J6 l: v+ S3 |5 a6 K$ ]0 G" _! c      时钟安全系统被激活后,时钟监控器将实时监控外部高速振荡器;如 果HSE时钟发生故障,外部振荡器自动被关闭,产生时钟安全中断,此中断被连接到Cortex-M3的NMI的中断;与此同时CSS将内部RC振荡器切换为STM32的系统时钟源。( 对于STM32F103 ,时钟失效事件还将被送到高级定时器TIM1的刹车输入端,用以实现电机保护控制)
2 w$ w0 c1 W; \* ^+ X

5 }$ r! ^: z/ N9 E& c+ r0 C3 [ 注意
6 f4 f/ V, g7 a7 f      一旦CSS被激活,当HSE时钟出现故障时将产生CSS中断,同时自动产生 NMI。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR) 里的CSSC 位来清除CSS中断。
9 X9 x. ^- R# V) Z0 R) W5 I; t) H  
' _" y/ P. u0 |7 k- C7 T! T4 m- j应用
; y9 x% J6 e: i' {3 ]0 k6 H# n- h6 w8 t. [2 A5 s5 B

% T( m  m2 g& d, K1、启动时钟安全系统CSS:& g) s; A9 |* P3 X. q! ?# r
" ]3 V% {' X5 j5 V% K+ S  i
" ^8 m: Z. O1 ~2 ^
RCC_ClockSecuritySystEMCmd(ENABLE);     // (NMI 中断是不可屏蔽的!)
5 b# ~4 z/ c* J2、外部振荡器实现时,产生中断,对应的中断程序:- L, O2 R5 N$ U0 \8 A# ~
3 S5 n4 ^3 w# l7 n
$ M1 Q0 S) T$ p9 t
void NMIException(void)
- j9 x* t1 R* n {$ U& j/ s+ ]* a3 V! c# c1 G
     if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
  D( u/ }+ M* @- e% B     {    // HSE、PLL 已被禁止(但是PLL 设置未变)
: R. {6 c1 [( P1 a- _7 D( z          /* …… */ // 客户添加相应的系统保护代码处
$ q, m- X1 G8 d- a. c        // 下面为HSE恢复后的预设置代码
; G% G5 c3 Z3 W. c0 \8 z) b       RCC_HSEConfig(RCC_HSE_ON);  // 使能HSE
# ?$ s6 ~* Q, L        RCC_ ITConf ig(RCC_IT_HSERDY, ENABLE); // 使能HSE就绪中断
( k; k2 z& `! |% ^, r% {- E       RCC_ ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL 就绪中断
; {3 D- T2 }/ p6 W* J4 u. V5 u0 m# u       RCC_ClearITPendingBit(RCC_IT_CSS );  // 清除时钟安全系统中断的挂起位' }1 W4 Y3 t2 |& u( X$ v8 }) c* h3 ]% k

9 Q* f: X3 C  e' t9 ~+ S7 T! K* D       // 至此,一旦HSE时钟恢复,将发生HSERDY中断,! H! |' Y6 e7 W0 V
* p- u6 T. [' G' r, E
       //在RCC中断处理程序里, 系统时钟可以设置到以前的状态 " L7 h( e/ i" _8 B& T
    }5 ?8 j$ u3 `2 G, T; y0 `4 o. {
}. U% c5 t1 y7 \+ T+ a# e( g, N
3、在RCC的中断处理程序中,再对HSE和PLL 进行相应的处理。
7 s( e- Y4 Q' G6 F8 K# [

该用户从未签到

2#
发表于 2022-1-14 14:30 | 只看该作者
CSS被激活HSE时钟出现故障自动产生 NMI,感谢分享

该用户从未签到

3#
发表于 2022-2-28 17:27 | 只看该作者
晶体振荡器失去作用导致
( i8 t& @% m: n' y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 19:56 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表