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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
原因6 r# L3 |, f) o
     在实际应用中,经常出现由于晶体振荡器在运行中失去 作用,造成微处理器的时钟源丢失,从而出现死机的现象,导致系统出错。严重时,由于系统的死机造成监控失效, 导致无法挽回的损失!! w7 l6 ?/ f* P- X; c+ h
  目的 / q1 E5 r1 i' Z
      STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE) 失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。
7 d' m- v5 t' z& `  原理
3 J; P, C9 S4 S" U0 P+ A      时钟安全系统被激活后,时钟监控器将实时监控外部高速振荡器;如 果HSE时钟发生故障,外部振荡器自动被关闭,产生时钟安全中断,此中断被连接到Cortex-M3的NMI的中断;与此同时CSS将内部RC振荡器切换为STM32的系统时钟源。( 对于STM32F103 ,时钟失效事件还将被送到高级定时器TIM1的刹车输入端,用以实现电机保护控制)

' ]  l# Y& Q+ h) U5 a2 J4 s
. q1 w: H" {/ ^5 K) |& q+ t 注意
7 Z4 }8 K! \" u$ v3 l      一旦CSS被激活,当HSE时钟出现故障时将产生CSS中断,同时自动产生 NMI。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR) 里的CSSC 位来清除CSS中断。
$ [3 e2 B! E6 k) J( W. N  . K+ }: K( a+ p; N
应用
  G" P+ E! `& q9 u" _( o% b; @+ w$ ^# B

1 @& U' R; Z" b, u8 h1 k- ^9 o6 d2 N1、启动时钟安全系统CSS:) Y# {  x: Q5 S) L- @# p4 y+ h

% t, O% B: b& S' ]( P: U
8 T( F% Z8 R; [4 ERCC_ClockSecuritySystEMCmd(ENABLE);     // (NMI 中断是不可屏蔽的!)
( ?1 E/ ~; F7 s8 d7 z2、外部振荡器实现时,产生中断,对应的中断程序:
5 ~- V! A" ~) L& H+ N; L7 M- Z) y' l) M0 k3 [
1 r9 G4 s' e( `; Q
void NMIException(void)& T$ R6 s7 j1 }& `
{* A9 T% \1 X% |+ l
     if (RCC_GetITStatus(RCC_IT_CSS) != RESET)
. c3 @% w! ^2 W  p( g; C: T     {    // HSE、PLL 已被禁止(但是PLL 设置未变)' Z, m* A, n; T& |# r
          /* …… */ // 客户添加相应的系统保护代码处/ H2 h1 `- h9 q+ Z! B5 s
        // 下面为HSE恢复后的预设置代码' g$ E+ d- [/ A
       RCC_HSEConfig(RCC_HSE_ON);  // 使能HSE7 S9 \8 b8 e) L: l; C& L6 w
        RCC_ ITConf ig(RCC_IT_HSERDY, ENABLE); // 使能HSE就绪中断
% q: n8 X+ D$ B1 j/ {       RCC_ ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL 就绪中断
6 U! O2 h- B  t1 h; H: G: l/ h! N       RCC_ClearITPendingBit(RCC_IT_CSS );  // 清除时钟安全系统中断的挂起位. U: o( E% S3 R: {1 w! e% L

9 S/ R: P( m$ I- v, d; t4 P) F       // 至此,一旦HSE时钟恢复,将发生HSERDY中断,
% D$ i) l2 n  Z8 L! f3 E
% V% w1 F+ e- {) b' h! p       //在RCC中断处理程序里, 系统时钟可以设置到以前的状态
& @3 E5 m7 v" ]* q7 R3 o    }
3 r! q& a/ z) V5 ], I, d }
; d0 y& T* c: N( |8 o7 }3、在RCC的中断处理程序中,再对HSE和PLL 进行相应的处理。

" b3 H* ^+ U7 N: @/ n- f0 \3 F

该用户从未签到

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

该用户从未签到

3#
发表于 2022-2-28 17:27 | 只看该作者
晶体振荡器失去作用导致+ S1 k% H3 }, ]6 B2 J3 i! F- w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 17:29 , Processed in 0.156250 second(s), 27 queries , Gzip On.

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

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

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