01. IWDG概述
5 i+ h' A2 L/ s- J5 {/ Rstm32f4xx_iwdg.h和stm32f4xx_iwdg.c文件中; _3 _# } k; C( G6 d+ g. q
. {; z) H9 L& }02. 相关类型
- j: E! M$ O: q5 l W' [/ NIWDG_WriteAccess- /** @defgroup IWDG_WriteAccess; s9 i( i" |7 ^9 B" O
- * @{
0 l6 z- {0 ?! t, H# J - */! i9 O9 L. `9 h8 E" Y
- #define IWDG_WriteAccess_Enable ((uint16_t)0x5555)
/ |) s j& G! h - #define IWDG_WriteAccess_Disable ((uint16_t)0x0000)
1 D2 d( o& F7 f% U) J& _ - #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \/ \7 `/ l4 c. I: E
- ((ACCESS) == IWDG_WriteAccess_Disable))
复制代码 ' I& e5 f& a8 N
IWDG_prescaler
+ Q, \- T+ G& C
" k2 N5 }( [4 b G- /** @defgroup IWDG_prescaler
0 j5 Q/ V' ` [1 _) _- D - * @{3 Y- S+ a3 ^% z7 g. A0 \+ p
- */8 r+ |/ i, i+ N+ n( }! T) ?
- #define IWDG_Prescaler_4 ((uint8_t)0x00)8 o. y) X% Z* h% C( [) n. D% `5 U
- #define IWDG_Prescaler_8 ((uint8_t)0x01): m+ j& \- N, Z h# N" t
- #define IWDG_Prescaler_16 ((uint8_t)0x02)4 G1 b' E4 T* R; R4 F8 }, p4 T
- #define IWDG_Prescaler_32 ((uint8_t)0x03)) t) |9 h* Q3 _0 K
- #define IWDG_Prescaler_64 ((uint8_t)0x04)
, P# w* l& d- D6 w* W, \# j7 S - #define IWDG_Prescaler_128 ((uint8_t)0x05)
& h M. [ V! E9 m ], Q8 P- G9 G - #define IWDG_Prescaler_256 ((uint8_t)0x06)2 h! |' H b2 a4 `
- #define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4) || \
( f1 t5 V" |2 h4 \9 c8 d - ((PRESCALER) == IWDG_Prescaler_8) || \8 v. A4 h$ K7 r! @& I6 G. o
- ((PRESCALER) == IWDG_Prescaler_16) || \8 ]; G# b* r* I
- ((PRESCALER) == IWDG_Prescaler_32) || \3 t" s4 d8 V( S2 A5 `/ Z" k/ Z
- ((PRESCALER) == IWDG_Prescaler_64) || \, u0 V& j2 n9 [- r2 h: ^
- ((PRESCALER) == IWDG_Prescaler_128)|| \
/ E# x3 m* o- @. P& [3 \ N2 h - ((PRESCALER) == IWDG_Prescaler_256))
复制代码 + \3 k9 a B8 j9 S$ S( `
IWDG_Flag
: x J* x; k5 r. t: y" z- w
% u2 X& e) T- l$ h- /** @defgroup IWDG_Flag 2 ~. _- ?' @: @ y4 C" `# p) m' `
- * @{
* Q5 q" G% v; |6 b, ~2 h( G - */0 ~! M! ~' k: z, r( c; T* U$ h
- #define IWDG_FLAG_PVU ((uint16_t)0x0001)
) v# C4 s$ P* Q' J$ ~8 D* h& { - #define IWDG_FLAG_RVU ((uint16_t)0x0002)$ w$ w& w2 j1 U3 h* g! w9 B
- #define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU))
! \3 f0 F7 u$ O i) Y* [ - #define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF)
复制代码 ! a( j) a2 K* C, F" Q f
03. 相关函数% s/ r3 W2 N1 l3 j6 H( n/ Q$ q( R5 T
- /* Exported macro ------------------------------------------------------------*/
% U9 z3 g! n; o - /* Exported functions --------------------------------------------------------*/
. e) b: @9 Y6 |
& Q- K* E4 t6 M" q1 H/ h1 J- /* Prescaler and Counter configuration functions ******************************/5 M: @. H/ N, B; Z7 ?/ T) M4 w
- void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
. d& L4 P" T+ Y - void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);! R' L* _( J! u# B
- void IWDG_SetReload(uint16_t Reload);$ v: s9 t3 L# `! a' ~ a
- void IWDG_ReloadCounter(void);
( S/ c4 n2 [) G8 b5 m) w/ h
7 U8 q4 d# x) K% O- /* IWDG activation function ***************************************************/
1 P& Q \( @+ ~2 H% m - void IWDG_Enable(void);
1 \. L$ V3 S. h- d4 @& ^" _ - 7 n8 e# _4 D5 D
- /* Flag management function ***************************************************/' _1 H* I0 d1 D. X
- FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
复制代码
4 d P' b' T8 o# d9 S04. 结构体封装* g, }' K+ E" i
- /**
# g6 Z3 h6 C( v9 ~$ b - * @brief Independent WATCHDOG g8 i* P. j4 O6 t, m$ r
- */
9 h# k4 L" z8 {0 l7 c6 {2 N
* w( w- a. e8 v. c- typedef struct, [+ x' n, i# W% S! I9 O# I6 Q
- {
$ i) q W7 I4 ~$ }, e, T: P3 E4 W& W - __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */3 A4 f8 a7 c4 u) V0 [
- __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */
6 i9 d& s% G. A6 o" ? - __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */
# h4 \0 B) O/ S. b; s/ |" h - __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */3 v P2 T" S! f
- } IWDG_TypeDef;
复制代码 . j @4 O# G- S5 L7 `0 P* _
|