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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
原因
# t) U& E+ G6 X  i, G( i     在实际应用中,经常出现由于晶体振荡器在运行中失去 作用,造成微处理器的时钟源丢失,从而出现死机的现象,导致系统出错。严重时,由于系统的死机造成监控失效, 导致无法挽回的损失!8 m+ d) b$ s2 S* W
  目的 0 W3 }8 ]3 d' W$ x
      STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE) 失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。& h4 v: L: E3 V" C4 |
  原理
& [  d) ]) ^$ B! q9 n8 G% r      时钟安全系统被激活后,时钟监控器将实时监控外部高速振荡器;如 果HSE时钟发生故障,外部振荡器自动被关闭,产生时钟安全中断,此中断被连接到Cortex-M3的NMI的中断;与此同时CSS将内部RC振荡器切换为STM32的系统时钟源。( 对于STM32F103 ,时钟失效事件还将被送到高级定时器TIM1的刹车输入端,用以实现电机保护控制)
* z7 n( X' `3 J( E3 a+ H

2 ], J, S6 U7 |7 p! Q 注意
( y  j! h# e' V$ ~4 r$ U8 q      一旦CSS被激活,当HSE时钟出现故障时将产生CSS中断,同时自动产生 NMI。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR) 里的CSSC 位来清除CSS中断。
2 c) Y! x; a' ?3 [% O  
+ i8 }1 n; q3 W应用
4 a! n6 v, P& M' p; j; u0 O! U8 X; A2 b% S) u0 d4 D6 E
. o+ G! T& j% Z0 U/ ~
1、启动时钟安全系统CSS:
2 k1 E9 V# H4 I+ u: l8 O$ `
% l1 ~- @& U8 P4 E) z0 ^! ?* c
4 U, @9 e, z) ^! Y. N5 TRCC_ClockSecuritySystEMCmd(ENABLE);     // (NMI 中断是不可屏蔽的!)
% U1 a! S7 y0 G" }5 |2、外部振荡器实现时,产生中断,对应的中断程序:
3 G0 k  L, A1 U1 W$ a5 T) @5 q" m, \( P0 _* Z- g

5 X2 x+ w0 Z9 K. `4 e% ~3 I& hvoid NMIException(void)
; ?! Q- H! L! n6 a {
( _& X4 {$ u- D/ s* O" D     if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
* z. `) e8 v, }1 t     {    // HSE、PLL 已被禁止(但是PLL 设置未变)
+ R4 @, t# |7 w' i. ?          /* …… */ // 客户添加相应的系统保护代码处5 R/ i" M$ [! l0 Q. k' j
        // 下面为HSE恢复后的预设置代码# Y: x1 e6 A) x2 i
       RCC_HSEConfig(RCC_HSE_ON);  // 使能HSE  n; O. P" F4 V! A! A' M; L8 }
        RCC_ ITConf ig(RCC_IT_HSERDY, ENABLE); // 使能HSE就绪中断
+ w/ P0 d. V/ [* ^5 e5 n( i       RCC_ ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL 就绪中断6 o$ q) Q7 S6 ]( \  M! [# k1 K( L
       RCC_ClearITPendingBit(RCC_IT_CSS );  // 清除时钟安全系统中断的挂起位
( }" m2 O7 g) R
5 x' f6 b8 ?1 W  b: r9 K8 T" g       // 至此,一旦HSE时钟恢复,将发生HSERDY中断,
/ s- Z8 i! ^4 {% s* V
5 O9 g2 l5 s$ o, S1 k4 \       //在RCC中断处理程序里, 系统时钟可以设置到以前的状态 3 W3 [8 K9 X% q) ^, q
    }2 K# _8 @' o9 i$ j, |7 E
}
, D2 F1 O% r% d/ G0 T' v3、在RCC的中断处理程序中,再对HSE和PLL 进行相应的处理。

1 n" M4 {; e. w& P$ ~

该用户从未签到

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

该用户从未签到

3#
发表于 2022-2-28 17:27 | 只看该作者
晶体振荡器失去作用导致
& L1 S4 ]' d6 L/ \1 y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-17 08:40 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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