01. IWDG概述
, ]* G0 }* D, wstm32f4xx_iwdg.h和stm32f4xx_iwdg.c文件中
$ B) y, i* r4 }. i ^/ ]
* o: a# j% Z! b6 \$ b! g$ A" v2 s$ f02. 相关类型
( `2 Y3 [: X+ P6 \IWDG_WriteAccess
0 z' I8 I. E% ^2 a# {1 j0 ]& p
0 W7 q% X5 p) c: O* F- /** @defgroup IWDG_WriteAccess
% P/ G+ s s9 o- ^: @ - * @{, B5 C- C' z% z
- */2 }' T; ]7 j/ L E& V& g/ t
- #define IWDG_WriteAccess_Enable ((uint16_t)0x5555)( G( W' e( W# O7 m! i+ T* s; i2 n
- #define IWDG_WriteAccess_Disable ((uint16_t)0x0000)# M0 C# \6 Q; r4 K( b, u ~
- #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
/ O" x+ x2 I" @7 A! h; g - ((ACCESS) == IWDG_WriteAccess_Disable))
复制代码
) o! F" k9 J) k8 C, Q* WIWDG_prescaler2 {8 @- J1 s/ t5 Z1 X2 d( C2 P
, g. r3 M5 _9 N) j
- /** @defgroup IWDG_prescaler
3 p8 e/ N4 p/ D2 y6 u - * @{
\4 V' |* r4 B2 K9 N: h# b6 | - */" A) d: l1 Z4 T$ u' T( {9 u" a
- #define IWDG_Prescaler_4 ((uint8_t)0x00)
8 X1 P' n7 S) U, k5 i3 N - #define IWDG_Prescaler_8 ((uint8_t)0x01)
( j4 f! l& [( B% U$ X u - #define IWDG_Prescaler_16 ((uint8_t)0x02)
2 N2 F: n% b7 {9 g" @ - #define IWDG_Prescaler_32 ((uint8_t)0x03). ^) T. }' b. {8 Y# n" s
- #define IWDG_Prescaler_64 ((uint8_t)0x04)
0 E8 y0 i" t. N, p - #define IWDG_Prescaler_128 ((uint8_t)0x05)
/ l& d5 j; [* f1 n1 X - #define IWDG_Prescaler_256 ((uint8_t)0x06)# _4 h. S. i( L( |! k
- #define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4) || \# k6 ^; J& }3 J
- ((PRESCALER) == IWDG_Prescaler_8) || \) i( s1 Y$ J( E- t. v
- ((PRESCALER) == IWDG_Prescaler_16) || \
* e8 W0 e$ o4 j) J; `8 h; V - ((PRESCALER) == IWDG_Prescaler_32) || \$ n6 `) q- T8 q4 X1 T- h; K" @8 q0 o
- ((PRESCALER) == IWDG_Prescaler_64) || \6 A9 I" \. R, J2 Y/ N( E% R0 q
- ((PRESCALER) == IWDG_Prescaler_128)|| \
6 z, ~6 r& a& | - ((PRESCALER) == IWDG_Prescaler_256))
复制代码
, D' {/ Y% s% E$ g4 k; EIWDG_Flag8 u" y& o0 l* D
5 f. Y& V# r4 M2 w7 Y- s7 @
- /** @defgroup IWDG_Flag
( ]* A7 t$ L+ Q& Q1 p - * @{
; i, L, n6 G* u9 f- d. ] - */
# m' i# e; W& w - #define IWDG_FLAG_PVU ((uint16_t)0x0001)' J' v* ~2 n* W$ k# Z
- #define IWDG_FLAG_RVU ((uint16_t)0x0002)( Z: e4 @ @+ n
- #define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU))% |$ [* g: g0 T( v
- #define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF)
复制代码
3 Y' U& \% F: r2 J, P0 G3 V8 r$ `4 P$ @$ c+ w
03. 相关函数
$ S0 j, S5 W/ V- /* Exported macro ------------------------------------------------------------*/
. ^* s+ j% {* \; Y4 K - /* Exported functions --------------------------------------------------------*/5 ]! A j7 b8 J. Q9 O$ m) ^5 f+ `
- $ W9 y! @0 J6 G) U
- /* Prescaler and Counter configuration functions ******************************/
H h; N, J9 U3 o) P - void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
- E5 j. J7 e$ T# v8 ? {* Y - void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
0 u, O0 s4 C3 c - void IWDG_SetReload(uint16_t Reload);
1 k, n$ L% g: H - void IWDG_ReloadCounter(void);
3 f. S$ G% b* v1 m - ( O E5 h1 B( v; Z
- /* IWDG activation function ***************************************************/8 c4 y$ `+ h1 `) [
- void IWDG_Enable(void);+ l5 f$ b5 t" r' n2 e
3 S# O$ N8 d! C. \5 x2 \- /* Flag management function ***************************************************/
7 j" ~' G, R8 \" X4 z - FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
复制代码
, W3 z* c& P5 H# Y# {( {* D04. 结构体封装# Y$ W! W. A, L9 H- o; i. I
- /** / ^$ ?# v! m7 N* W4 c2 e
- * @brief Independent WATCHDOG) g' s( C+ G( s
- */
$ B; S5 y5 J0 u+ {5 |) [9 K
, [2 z" m- L" S9 Y) Z+ P- typedef struct3 r1 d/ ]0 K' ~5 l( u
- {$ M0 a6 t) u. Z0 d- o
- __IO uint32_t KR; /*!< IWDG Key register, Address offset: 0x00 */( G" T! U5 R+ R! }- b
- __IO uint32_t PR; /*!< IWDG Prescaler register, Address offset: 0x04 */9 m O4 j, u( {- i x z7 W p
- __IO uint32_t RLR; /*!< IWDG Reload register, Address offset: 0x08 */
2 v" n: q) i* H% h8 f8 ` - __IO uint32_t SR; /*!< IWDG Status register, Address offset: 0x0C */8 v, ?* g, O- U( [, C6 S; B8 \0 i
- } IWDG_TypeDef;
复制代码 : u3 @: J b% G7 Y
' h9 V- d* L2 ]* _
: j# i4 k- c2 d |