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

【经验分享】STM32---窗口看门狗

[复制链接]
STMCU小助手 发布时间:2022-5-23 23:00
stm32有两个看门狗,独立看门狗和窗口看门狗,其实两者的功能是类似的,只是喂狗的限制时间不同。" @. f3 E/ P7 H# v, t# B/ _3 k7 A

% W/ M3 b$ q6 D2 T7 o
5 F) C; n2 w) K: ^9 w5 B独立看门狗是限制喂狗时间在0-x内,x由你的相关寄存器决定。喂狗的时间不能过晚。
+ i+ F5 t" p/ K; Y$ g5 v
  t! c) u, S9 c( Q, T. B9 n窗口看门狗,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内,你可以通过设定相关寄存器,设定其上限时间和下限时间。喂狗的时间不能过早也不能过晚。
3 A: Q- k* [0 m2 a7 n
+ e9 [8 y; h& [+ v5 L图11 _8 ?  o4 n7 B8 U; M8 h
$ p2 C. n% H9 m  e$ A
1349143226_2923.jpg : S; q7 v7 C: \" E1 R
  T% D0 n6 N- ^5 v, _- A; q, r4 V4 Q1 }
窗口看门狗的
8 ?* e( K8 n# f. W' ^5 V$ f, q" s# C4 u8 c6 ]
上窗口就是配置寄存器WWDG->CFR里设定的W[6:0];! h2 L( {3 W" r, C, A( m, J8 N" L

! o' R2 n+ S2 _. l下窗口是固定的0x40;: g1 \9 W2 j, m1 F0 G

9 v5 {. b5 ^' h7 o2 {2 y7 _当窗口看门狗的计数器在上窗口值之外,或是低于下窗口值都会产生复位。, d) [, S$ |3 X3 f! n

2 D( a. a# ?; B图27 M$ z; B3 a! \! V* i

4 x" r9 e" i  C; v2 n3 y# A 1349143371_7212.jpg 3 h; V2 D; x! X0 e8 e

& v; I9 z" F$ K8 J5 }6 j; ^3 T+ b( g* G# I/ V( I+ L
$ K4 o- e: w" ]$ z6 D: L& J
&& 上窗口的值可以只有设定,7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40,所以其取值范围为64~127(即:0x40~0x7F);
/ N! X1 J0 b' l( H$ H& W
5 X2 h% s) q5 \( e+ g+ P" A0 f  Q. S: ^

0 s0 [* j: f( |% N( j( [* G&& 配置寄存器WWDG->CFR中为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围,从而确定窗口的时间范围。
, O# B: G9 p% d# H) W4 }8 f/ R+ S, S6 S

/ @$ r! q4 b' {( R1 K6 c* z7 b% T; n
&& 窗口看门狗的时钟来自于PCLK1,在时钟配置中,其频率为外部时钟经倍频器后的二分频时钟,即为36MHz,根据手册可以知道其定时时间计算方法:
7 q) k2 L! N! v  Z- l  \" M
2 G& a9 b4 ]) R+ C5 ?  z+ l0 Q2 i  p5 m1 [" ]1 E
+ b& d$ H# F  {4 [6 e
上窗口时间:T_min = 4096 * (2^WDGTB)*(WWDG_CR[6:0] - WWDG_CFR[6:0])/36 (us)& `0 T# a) t. v  F8 P
( A0 y' h' u2 j3 r( P& _9 A9 k7 s% K

! q) A5 G1 G8 N+ g/ s1 O
& l& h; [" V+ j4 c3 K$ p 下窗口时间: T_max = 4096 * (2^WDGTB)*(WWDG_CR[6:0] - 0x40)/36 (us)
, A4 X; x# f+ d4 X% O  F, I2 k- Q$ |' j
2 \0 c# g; g/ s1 R* l. S

) g7 R! Y6 ^3 O1 k2 F2 B! k9 N36Mhz下相关窗口看门狗的喂狗时间范围:
) f7 P, F/ a: l5 L4 j! f0 O
8 C8 q# b) k- v3 g9 [' j% |+ @
WDGTB(计数器分频值)最早喂狗时间/us最晚喂狗时间/ms* ~, A2 {; M) z4 C- i- b

& q4 ]6 ?& ^' q, V" `2 b0                         113              7.28
6 P/ N, i$ y) o% z; {' \, T% c6 m2 F% z9 V
1                         227              14.56
. b4 E1 h: ^" e# t6 K, a
  h! N: q' n3 x" Y2 e( r. }' @2                         455              29.12# s! C6 x2 \) l
" L& F9 [' D, e7 Z1 X% l* A
3                         910              58.25) g" d# j4 m4 [# s* E" i/ ^

' H, b+ R7 @. k& Z' L6 |" u6 x$ r8 M6 M6 d; I6 M
' p' q/ B4 |6 g% k" c; W
本例直接寄存器实现4种测试模式,测试窗口看门狗的复位原理。# [) Z% X) l, a; q

; Z0 ~0 e* k7 @' ]  d; \/ b8 _MODE_1 0   // 在30ms时喂狗,在窗口范围内喂狗,LED灯闪烁
; S. W9 o3 S, L1 x
5 `0 X- Y7 g8 P! ^$ ~MODE_2 0   // 在10ms时喂狗,在窗口范围外导致复位,LED灯常亮4 Z. W1 l4 w6 ~* K6 q+ a( [2 K
5 R8 N9 C) a, e# A$ f3 A$ w; ~
MODE_3 0   // 在100ms时喂狗,在窗口范围外喂狗导致复位4 x% L2 R5 L7 u% G( X
+ o' {: E7 R7 C0 _- _9 b6 z+ _& B9 \
MODE_4 1   // 主函数不执行喂狗,开启提前唤醒中断,在WWDG中断函数中喂狗( ~3 k1 t2 g+ A: Q2 B+ x, K' ]) H
9 T! X: V+ l: }  w* B- ?
库函数实现在提前唤醒中断中,喂狗操作,PA4口LED正常闪烁。当外部中断发生(按下PA0按键),长时间不喂狗,引发窗口看门狗复位。
& |3 n1 l/ e2 @
: |+ W: |- ^2 |5 v2 i3 Q, x  ]" a4 q! F
直接操作寄存器( T0 b8 U9 r6 F
  ~( h  d$ F0 ^2 S: `# B
相关寄存器如下:. l6 |3 \8 v- j5 t( u1 K

4 F. M; ^. ]5 u控制寄存器WWDG->CR:低8位有效。
) C9 w6 p9 M# R7 [" I7 Q. k2 ~1 C, z- K4 k9 W$ F4 L4 M; N. ]' G
第8位为WDGA,看门狗激活位。低7位[6:0]为看门狗计数器的计数值。- C( ]2 P6 t# Z0 a; e5 F1 g
5 J, ?8 t  H; s' Z1 L

  `& X# H$ K1 e* o9 }$ i$ W; \+ T6 a
配置寄存器WWDG->CFR:低十位有效。
( r9 ]# t. m  f9 k4 C! [" W9 M& H1 Z
第10位为EWI:提醒唤起中断。此位置1,当计数器值到达0x40时,将产生中断。
/ K! `: X+ R4 j0 h! j( @! `& e4 E- Z; w- b' A( a7 l
第8,9位WDGTB:为计数器分频系数设置为:9 f0 }* q9 j- f8 K/ U- u4 Q

+ ]& F2 C" q9 d00: CK计时器时钟(PCLK1除以4096)除以1     01: CK计时器时钟(PCLK1除以4096)除以2: U3 r9 J, i7 K

- a9 x+ p  a( P, {! |10: CK计时器时钟(PCLK1除以4096)除以4     11: CK计时器时钟(PCLK1除以4096)除以8
0 {, P% N3 k; D( X4 W7 f
" V, D/ p0 q0 |: G0 Q7 m低7位[6:0]:为窗口值。
8 E4 q. H& W2 Z% n4 _: b  V& ~8 z
6 \& m* m2 V+ Q7 L; L/ H4 I: S. d) ]/ X! C) p

% X% l5 u5 W% F3 K4 Vint main(void)+ d. m  D  P: R* [% i: K

$ y1 B- C% |0 o) K3 N6 T{
8 g5 f3 C& R. @, h! k4 q. Q. {+ E
3 _7 x- L. V" Y$ a: n#ifdef DEBUG
( `6 ?9 Q3 A5 G, A; h# K
& T* m6 f" O8 K1 N$ P& X3 c  debug();
4 Z+ Q/ r0 e# e: {( c$ P+ _. d& K
#endif; J5 M& _+ R8 M1 N. p

' d1 Z8 Z% F7 P+ ^. Z, m+ g5 T  t

. Z0 u8 P: R& x4 F: B8 I: G  /* System Clocks Configuration ---------------------------------------------*/, v+ f% i0 o& E. _0 N

1 i, d$ R, B' F* f' S  RCC_Configuration();4 C6 S  e+ M" m, n- O
' e2 i: T7 K" Y6 o' m# ?  D

8 [+ O/ S; a; N% c/ L: O8 [! i/ M! I6 _+ J; `: R: F$ N# Q- W
  /* GPIO configuration ------------------------------------------------------*/
( {& ?& V- H$ k  z1 ?) z3 b
+ [4 B" s' j) A* g( J  GPIO_Configuration();
" S! c9 p! m) c3 R, Q
! C  }4 t) {0 j- I( G* A% O( i9 v! }0 c

0 d1 {4 ~8 W4 C: x5 o& }- Y  /*注释-hope:利用窗口看门狗的提前唤醒中断服务子程序来进行独立看门狗计数值的
$ i% I! X  Y, w
. h0 p# ^' @& _- y7 @       重载,每次重载一次计数值LED2就闪烁一次。*/
' w3 S& U% E1 n; q0 q  l5 K5 |& H& Q9 u
  /* Check if the system has resumed from WWDG reset -------------------------*/
* n9 j/ v4 ~, }) {1 C4 R6 Z0 }, `( q- C# O( w9 w! H+ t
  if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST) != RESET)% o9 f6 n- r. S% R

6 d; j) P# c* J+ v' M% i  { /* WWDGRST flag set */6 n* K7 ~( p  Z

- e  @% U$ E  V    /* Turn on led connected to PC.06 */
7 A! [' U, T) d3 |8 x% p) ]+ g8 w0 }* c
    GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_SET);! g5 ~4 U6 b( F6 I/ @

7 Z" {7 c- Y& ~) P! l* A* o$ k# s" G$ ]6 _; v+ z
$ u# R0 I! p; K# X, p9 u
       /* Clear reset flags */
$ o  b6 ^2 a& @6 M
7 C6 m* @5 U# i    RCC_ClearFlag();
- P6 X" m. t1 ~: Q) j! A
( D7 l7 p* `+ {4 [  }
+ S6 T2 d9 z8 n! N" P: n& q/ B& G0 M9 ~* I8 J
  else! Y0 i. G5 y7 n4 h

$ t# U4 M' |; P' x1 F* B  { /* WWDGRST flag is not set */" a1 ?2 \" U$ o, e" H& l* ^# e
9 Z' w) v$ v+ y2 I6 b% n6 _3 k
    /* Turn off led connected to PC.06 */  i% S0 V1 O2 h1 w! y( n' d; Y  ?
( ~4 V7 d0 ]# y  _4 L3 i
    GPIO_WriteBit(GPIOC, GPIO_Pin_6, Bit_RESET);4 n8 f! |2 m0 O. g) T

& |1 o3 z+ [7 G1 A  }
6 G3 o2 w# G/ E6 J" H8 H
  L% h! w4 D6 a( u9 }5 P& v1 {
: e. D3 x; A# i. r' C
+ ~1 x/ M7 Z. i( r; D3 B  /* Configure EXTI Line9 to generate an interrupt on falling edge -----------*/7 W- r. j5 ^  j9 _5 o' w8 g" @
+ o* e% J. b: J4 `7 l" g
  EXTI_Configuration();
% u  D/ W  d8 w- l
0 d5 j, a  s6 k, V. S( E* J/ D8 ?+ c& w7 R) U

8 G/ j0 g+ f5 I6 v/* NVIC configuration --------------------------------------------------------*/" {) z( y* Z) D+ k  S. j

% @9 e& x: _$ o& k0 a4 s, R" Y- m  NVIC_Configuration();0 k+ I. d! ]& R2 H1 ~, G

  U3 |, c& r7 h+ }# i3 M
1 @1 o, T7 G# u/ n$ G. \: b9 ]7 j8 @6 T% t; }6 I
/* WWDG configuration --------------------------------------------------------*/
: f. ~% {! v+ a, H2 Z  f3 `$ }" n, ?6 f% E  b
  /* Enable WWDG clock */, b* c8 q& U2 i

* D  t3 _. a$ X+ y/ e/ z" V7 b  RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);2 [  ~' R6 q# e) m& I3 `) F
! e% l- I- P/ \% j- D2 ~( Y( N
* T; d3 {! p9 X, `
2 a$ f2 ~  [; L
   /*   This parameter can be one of the following values:
1 Q3 J' J$ _8 X: d+ X3 v( P. l
* F1 j! r) A) t1 ^( a  Z# \" Q       * @arg WWDG_Prescaler_1: WWDG counter clock = (PCLK1/4096)/16 f9 ^7 \" O  \0 W- ?* F* f7 t
% F1 t0 \. p2 }* E! w  }2 g3 M
       * @arg WWDG_Prescaler_2: WWDG counter clock = (PCLK1/4096)/2# A/ O2 b0 b# f- l

0 T' |0 S7 k- x       * @arg WWDG_Prescaler_4: WWDG counter clock = (PCLK1/4096)/4: [& d. {. X. u5 n
" |. f  H' c6 w: s/ j8 F
       * @arg WWDG_Prescaler_8: WWDG counter clock = (PCLK1/4096)/8
8 H9 j7 D- v* x, @- ]% c/ x) P$ Y
, P6 _' P: w1 Q1 M2 z; X3 `& W4 _' D5 y( e+ w
4 P$ N7 X* A8 J7 a( j
/* WWDG clock counter = (PCLK1/4096)/8 = 244 Hz (~4 ms) ---PCLK1=8MHZ */( v6 p# m; D6 Y" @% e

; ]8 i0 S4 M6 @: @5 ^) o6 o' S) B: H! e- g4 P( @

; n6 g( e" o; s% G/ A  WWDG_SetPrescaler(WWDG_Prescaler_8);3 e1 I9 C7 d( U8 S" R8 r
" `" b! I  h6 U# V

# W& t+ D5 R( H5 e1 \8 m
3 b. p( p7 ?7 n2 U; u6 ^3 s  /* Set Window value to 0x41 ---设置上窗口边界值*/
5 p$ B- a2 m" \; V0 k8 N
; y0 ?) s) k9 z% o) V1 `# M  WWDG_SetWindowValue(0x41);
) Z3 P6 M$ v; @: v7 t+ \
3 w& ?6 A! H/ \; f  T* {6 D' O9 M
2 G, U9 o* y9 Y4 e: c5 g5 W6 j* F0 e5 I- Q& l; ^
  /* Enable WWDG and set counter value to 0x7F,  0x7f-0x41=64 --WWDG timeout = ~4 ms * 64 = 262 ms */; M, V( p9 S; N  ~# v
8 ?- M2 t* T5 ]/ m& j/ P$ T' n( C
/*看门狗计数器的计数值0x7F---结合上面上窗口边界,计数值从ox7f递减到0x40*/+ o$ v- q- U  _
: n6 i" Y1 c3 \$ ]- j0 }; d
  WWDG_Enable(0x7F);  [4 [- W8 J2 F- q; |
; a" h7 d8 i9 P

- F& F' L: P  I' F" m: ]& V
: c; A  F" u! c* }* a6 _) e3 H  /* Clear EWI flag */
( C! ?6 F6 T1 c- t# ?! U: S, P- b, R2 |0 u1 b; `% R
  WWDG_ClearFlag();
  V; b$ c! t. j; c  r. |* u2 A6 K5 F: m( ]: E7 [, O1 A
5 d) p( ^+ ?: X, ?+ L

9 H, x1 l0 L+ ]" Q. n  /* Enable EW interrupt */
# P+ A' S7 ~$ l; Y# n" I" M) p! j' ?6 k: T. p" R
  WWDG_EnableIT();" j( t' e$ @6 V  h" ?& y1 ^. ^
8 a! |6 G$ H0 ^3 X( \% J

, @' f- ?# W+ d# {% T, m8 I
; m# ^1 w# i6 `8 g' i8 h  while (1)
; R  S: e1 D9 A2 Q9 C
1 R- i9 @0 o% ~- a" G3 g  }  {! T: D" ?4 d3 v  U7 ~

2 y, `# `  X5 J! b" R  }8 d6 f7 ?6 C+ f: _" [9 A' T% B  X

9 {3 |$ `1 R2 l}, R7 b9 O, `; ?3 d4 U! a# w) S

% I  r/ _" K, k7 J& `! z, h
" a0 S# j, A# S. j' V# k$ \) k
9 j% a! e' q' H6 o- M. q9 B9 W7 Z6 H1 M" a5 X/ f4 f9 c
( m" I! |$ I6 i8 q: m$ ]8 V/ Z
/******按键的优先级为0高于窗口看门狗的优先级1*****/7 V& s7 e: S2 i# v

$ ]4 L8 y7 d  n6 M4 ovoid NVIC_Configuration(void)
4 p9 L& H5 G; d: K# S6 ?  F! Z3 {. k. V3 E. W( j
{. V* p4 Y0 d, h- ]. X' j0 J

; S+ h. z5 {  M  NVIC_InitTypeDef NVIC_InitStructure;# \  D4 q' R/ }2 m8 z6 O  l$ w

) H0 d' W- m* L; }+ _" E( s  e# c6 u! i8 J' E3 S4 P5 ]
) J: [5 w, ?2 a. k9 v/ z
  /* 2 bits for Preemption Priority and  2 bits for Sub Priority */; x1 q& h3 s+ q  r( x6 v

4 K" L; A1 ~, E/ ~  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);; H7 H5 F; D" V- C0 B% h; S6 R- O4 U
8 S  m4 t/ a5 k" b

1 C  C8 u& l4 I1 m% h. N& S
0 D( X9 k- r- ^8 d; x  P5 y  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;1 \5 a+ \/ \/ E6 C: G

! a/ F) I& [, b8 O: |; T; G  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
0 N5 H! W4 i$ K: {3 k5 D& W
0 L; D, X0 L) T2 ^3 o" g( P  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;& A2 [' {+ W3 L2 C, ]

' @+ @/ z* V, }, j  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
1 h* ^+ p3 `; Q# O1 P: o0 D2 ?7 m/ ?0 s! ?0 R
  NVIC_Init(&NVIC_InitStructure);
5 E% ]* }3 b7 B5 t7 {
* V3 ]- s0 [. h
* C: n! a( S1 D9 {0 m8 l+ ]4 W9 p$ N3 d5 j
  NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQChannel;
. w) k3 u5 l9 a
1 C$ q0 f. x( O6 v9 |. F  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;+ O; x; h6 T; h8 V& {; o) U
& j) r1 j4 F% [+ X& _
  NVIC_Init(&NVIC_InitStructure);, V+ J8 ?* C, m1 m* E

$ r1 N* F: T1 ?+ s- B4 o' d7 Y}: K" X  n% ?7 l8 k
4 W/ N. [. s8 E9 i
) G! k& I8 i0 T  }6 t+ V% V
  r1 i  H2 }: y( Y! c2 p

+ ^* ]; U$ s& w5 b  h3 \/ N
0 ?( V* p- w" e* r; }  [void EXTI_Configuration(void): ]) i6 L2 x, y
  `0 x! X- k5 u$ T  [( M$ Z
{( T! w; y- c* E2 Z8 F! T! w

3 e9 n; o0 G1 V# O  EXTI_InitTypeDef EXTI_InitStructure;
; \1 k$ }$ K& X
8 z7 l0 ?5 I6 Q' t5 O1 E# B4 a2 ?# Y. E* s" ?) S
7 v: Y2 e' h# Y
  /* Connect EXTI Line9 to PB.9 */, Y7 H- w4 l! _3 O

" n( T3 C5 K- ^, e) z9 H7 t7 o# h  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);) D- E( m+ H2 U2 ~- h$ q

; [6 q. r8 j, X& W0 Q
6 u9 W/ J$ }( t( w, f& C$ }0 o8 ]7 i/ [* v* v/ u- A) b% e
  /* Configure EXTI Line9 to generate an interrupt on falling edge */# r8 b. o9 D/ z+ L4 u! E

- H1 u0 Q, _; r# D7 r7 s  EXTI_ClearITPendingBit(EXTI_Line9);2 [  \. k: R. q* X* V2 @  o6 A

: {6 m* L9 M& o# K  EXTI_InitStructure.EXTI_Line = EXTI_Line9;  i4 C# G: K" `! y

) D3 O& K/ v/ x* E2 H" B. r* e3 ]5 W  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;. X1 g2 O5 u" p& S

* `- J1 k: D5 W  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿有效1 M1 V, F) Z( d5 j' L. {

0 \5 A3 R6 B: d# U  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
6 T3 x. W$ w' K2 O. u" {- s& G
, W7 R5 F! P0 ~6 j3 `4 g. Y4 h  EXTI_Init(&EXTI_InitStructure);
4 u( M. ~* }) f( |/ @
) R/ W9 A; H0 N( f8 F}8 I# Q) |3 o+ }3 G8 N
4 _$ p% R" H& c# F* P! b

5 q* M; p: n* L4 ?" w. g$ c
3 y  J3 v0 U: }; j, m在Stm32f10x_it.c文件中:
7 }! A0 v3 |% [# [2 X6 ~: k  q8 z0 w1 {# D- O, t! h
/ w# E/ v+ E' Z9 J: V5 \1 Q: [
; D) n  F  L& d: R: `+ |' k9 ]
void WWDG_IRQHandler(void)" i0 y* {, q: X+ f/ X, K3 y8 \

# ^7 m' E& e9 E4 ~3 ~1 {' R{( S4 Q6 M2 o; C3 y/ N5 g$ g1 T

# R" H* P. @6 V- Z$ W1 e  /* Update WWDG counter */5 \( P9 R( `7 G1 g
- T) Q/ o2 t5 E5 ?1 q7 h2 u
  WWDG_SetCounter(0x7F);
7 _8 y: _! F( P. @, W, P- W
; H& s- Q5 b$ f( \" G- l5 q6 J3 c* d% o; T! g, g

7 y" C6 i: u2 P$ e6 k5 a  /* Clear EWI flag */) [' ?9 E& x: b3 O  e$ k  Z2 b

# l( g7 ?, k- s& X  WWDG_ClearFlag();
1 }8 K& z9 x( }8 [6 J: `* r
, X9 `8 w, k; O: ]2 O9 d! F0 W) o+ f  H5 `0 O
! k  {( d# U* {, y% K
  /* Toggle led connected to PC.07 */# F* A: ~8 t. a! R- k
1 M- ^% O6 z, u. N) N# H6 `
  GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));  G: `6 o0 z! t' a
% q, a" n8 R6 C/ D- V6 o" E
}& a% r* I; j6 G
. `3 {: z! D$ \1 ~  F

& q1 }" M% v& `! b3 x% t! ^& P4 x& ]! h4 q$ W  u
/********按键中断处理程序********/
) {- }+ t- y0 J" s( M
1 W. T( b# ]7 o8 q//注意:这里中断函数里没有清中断标志的操作,这会导致窗口看门狗的提前唤醒中断
* D( V7 v7 M& t/ y* r4 ]% R4 l. L7 r5 c8 u6 S  X6 {. y! i2 I* w+ `
          无法进入,最终导致因无法重载看门狗计数器而系统复位;5 {4 Q4 Z! L1 S3 K9 q4 b# @

6 p' j; Y$ m% A7 E% y$ U, ^  ]void EXTI9_5_IRQHandler(void)
' Y! w3 f  _- q/ b& \/ R! ?, s
; Y- H6 m/ m& b{# |) N) s) l8 Y, j0 E2 A/ e
# ^9 U8 p, H, t% Y3 q+ P. d
  if(EXTI_GetITStatus(EXTI_Line9) != RESET): }) P+ O# c/ l6 _6 h: C6 p
; }) N  H, K. k
  {  - y# d4 a9 T7 V" M) `, _( Z1 w

) u% {' j# S4 J5 N3 \& L( e    /* Turn off led connected to PC.07 */$ F3 Z1 B0 z% G0 b) _+ `
" N% k- `% g" |. u0 w) P6 q
       GPIO_WriteBit(GPIOC, GPIO_Pin_7, Bit_RESET);' V. I7 i( A5 ~  O' A: p6 s! ]1 y/ [
9 n4 B3 [. ?4 t
/ v/ A8 {/ G% D5 Y% a
, `) n' S5 l  `+ U( |) f+ s  f
       /* As EXTI line9 pending bit is not cleared, the CPU will execute indefinitely6 u7 E0 h7 e3 b7 N) F

* r& l$ N# S, G          this ISR and when the WWDG counter falls to 3Fh the WWDG reset occurs */9 k6 t0 Q& _7 p" ]% B
! W# N4 n' O# p4 M# e/ D
  }
8 ^! m' q5 h0 p( L! q
$ D8 R6 K( C1 E, @* }}5 ~3 |$ R: n# H9 d8 F

- e8 V* n0 O! u  N# @+ o% k# R' v' @5 y- D0 c: i
赞 收藏 评论0 发布时间:2022-5-23 23:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版