你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32CubeMX系列|独立看门狗

[复制链接]
STMCU-管管 发布时间:2020-9-21 13:11
独立看门狗
' Y" i; E7 E/ x- E& ~! `, Y5 m
/ y3 B& K% G$ [* @1 p2 Y1. 独立看门狗简介& v! [) M4 r0 C7 h/ \

看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的复杂一点,看门狗就是能让程序出问题是能重新启动系统3 _5 c( b" v0 V9 W2 q0 G' i. B' v* z
STM32的独立看门狗(IWDG)由内部专门的40KHz低速时钟驱动,即使主时钟发生故障,它也仍然有效。注意IWDG的时钟是一个内部RC时钟,是一个在30~60KHz之间的一个可变化的时钟,只是我们在估算的时候以40KHz的频率来计算,看门狗对时间的要求不是很精确
" _" H" D$ ~1 U5 p2 r5 s" b, c0 W) g独立看门口功能框图如下。实际上独立看门口狗是一个递减计数器,当计时器的值减到0时,IWDG会产生一个复位信号,系统复位重新启动。为避免产生看门狗复位,则需在计数器减到0之前重载计数器,即“喂狗”。当程序出错时没有刷新计数器,计数器递减到0,系统复位重新启动,避免程序继续错误运行


( [# k# s' {! D5 W! e


! I) a& K9 e! b+ r7 r. K  Q4 G* o6 \
1_meitu_18.jpg

( ~" @5 C2 W( w2 x
/ R6 S0 R; \2 i独立看门狗超时时间(40KHz的输入时钟LSI)# n$ e4 F7 L+ u4 K- c3 v


5 W5 e8 M2 `) V

2_meitu_19.jpg

7 P& b9 x. t& Q
2. 硬件设计
; q1 e3 ~* _' `8 d1 s

使用USART1来打印调试信息,PC0用来指示程序是否复位

3_meitu_20.jpg

/ \8 \9 H7 o& `
3. 软件设计3.1 STM32CubeMX设置. _6 x- m4 w" A0 G
  • RCC设置外接HSE,时钟设置为72M;IWDG的时钟默认为LSI时钟
  • PC0设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平
  • USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位
    9 N  d. x) I8 h* |2 s& J
4_meitu_21.jpg

% A& ]$ Y- q' v8 _8 b+ \& w
* I. l8 {' @* [' I
  • 激活IWDG,IWDG的时钟为40kHz,此时设置计数器时钟为32分频,则分频后的时钟频率为1.25KHz(时钟周期为1s/1250 = 0.8ms),递减基础器重载值(down-counter reload value)配置为1000,即800ms不刷新IWDG则系统复位6 S+ S* Z% d7 h6 h# y7 D% J* q* g" z8 W

    * X1 k; S- }- r5 n: c5 E  W

5_meitu_22.jpg

  • 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码
    ' H2 E1 N" b8 r2 _( K1 a
    4 t0 Q7 w  x  O3 S5 H

2 f  w3 H  l$ ?) h/ F

* L3 v( I1 l# h7 ]' ?9 J+ m- D% w3.2 MDK-ARM编程
* U, s& I$ X# {, D
  B6 T3 u0 I9 M" ~0 _
  1. void MX_IWDG_Init(void){
    , N7 t# d+ _9 C: Y
  2.   hiwdg.Instance = IWDG;
    3 a3 |! r2 a' p4 P# O# I
  3.   hiwdg.Init.Prescaler = IWDG_PRESCALER_32;7 ?# {8 N: Y) t; E' }( m
  4.   hiwdg.Init.Reload = 1000;2 n7 D& k2 }( U1 t1 D! j. @6 W+ A4 ?
  5.   if (HAL_IWDG_Init(&hiwdg) != HAL_OK){
    - \5 y' ]  `/ a
  6.     Error_Handler();& i) ~, P9 W" Q# n9 I
  7.   }
    , `( C: S/ Q& L- b
  8. }
复制代码

- n' V3 d5 I7 L
  • 在main函数中编写代码,while循环里每500ms喂一次狗: G& r3 `, z4 o
  1. int main(void){
    2 q" s1 Z1 M7 A( N
  2.   HAL_Init();
    / [. ^' _4 x* _: h) w' {
  3.   SystemClock_Config();. \' ~0 p1 ^. k" C) n
  4.   /* Initialize all configured peripherals */
    ( T+ ?$ r* P( P4 T. H4 e
  5.   MX_GPIO_Init();
    5 e3 g8 H! J1 b# p; P
  6.   MX_IWDG_Init();
    . ^8 Z5 J: m" o% Q
  7.   MX_USART1_UART_Init();1 C: t% _+ j6 L
  8.   /* USER CODE BEGIN 2 */
    1 ~8 N! O2 L, P( v( }3 K3 V
  9.   printf("\r\n***** AndyXi IWDG test program *****\r\n");. t9 {& k& x  m" Y4 }! h
  10.   HAL_Delay(300);" X( ^( K5 B* A& p
  11.   HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET);
    # Z( J+ ~3 H! F/ D/ a! Z5 k: x: U( ^
  12.   /* USER CODE END 2 */
    ) D4 `( X8 i/ [( x
  13.   /* USER CODE BEGIN WHILE */3 _& x9 M4 i5 {9 W- s
  14.   while (1){
    2 }7 R  D0 n* S
  15.         printf("\r\nRefreshes the IWDG...!\r\n");
    : C# u  q; @# K" G/ H
  16.         HAL_IWDG_Refresh(&hiwdg);# j7 x* q) g$ n/ f/ q3 a3 D
  17.         HAL_Delay(500);
    7 ?8 F. z  \2 X5 P
  18.     /* USER CODE END WHILE */
    ) Z0 n# U* H5 w
  19.   }& R& J! ^, o0 p  N  A. N( @6 K
  20. }
复制代码

0 ~+ w# h; X+ s2 M$ I
! G3 E, U) M# A2 a4 b+ c1 U3 e. D% B0 k: U: Z, z" c& ?4 n, s
4. 下载验证
% x8 e, n& K9 S) a% c0 D) I5 m
  • while循环里每500ms喂一次狗,因此程序不会被复位,LED1常亮
    . R5 d: l' c: z

# g; ?; l0 \) @' Z4 }( G* p

  {( K0 ^, m4 n0 C& P

6_meitu_23.jpg


0 r, W. d3 S: [( p5 g1 X
  • 如果注释掉while循环里的喂狗动作,程序会一直被复位,LED1闪烁' E7 d6 t- K/ T5 p

" |0 n8 V- i0 P/ @
0 c) ?8 y" s9 a) G
' C! }3 x% F$ ~& b9 N5 }
8 `# }% h. n' B

7_meitu_24.jpg

4 |8 ^+ R3 S7 ~& i7 B

+ @/ `. w( I$ Z8 i, c
7 E" c" `" [. Z$ d+ U& H  O: j  a8 k% B; P* X" L# a
. Y7 u$ l: m* M

. O# R6 e9 D8 C4 q( i4 x8 G( {4 z/ F% X6 Y2 g  E6 Z
收藏 1 评论1 发布时间:2020-9-21 13:11

举报

1个回答
Ankky 回答时间:2020-9-22 08:58:42
这个看门口没有使能就启动了?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版