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

【经验分享】STM32 独立看门狗相关函数和类型

[复制链接]
STMCU小助手 发布时间:2022-6-13 16:54
01. IWDG概述# o/ i0 D  X) i2 V. m5 p
stm32f4xx_iwdg.h和stm32f4xx_iwdg.c文件中* Y/ r5 K* M- {

, X3 x3 G' ~: p5 T# [+ a0 u02. 相关类型- g& ^' X; e. h  g( u/ v$ j
IWDG_WriteAccess# Y+ Q. k& \9 H# d

/ f% T+ n8 N9 z. N6 p1 I
  1. /** @defgroup IWDG_WriteAccess- @9 X, k$ R# W! w
  2.   * @{
    " z' _' B+ O2 G* P. E% U
  3.   */4 G+ C' R  ?3 {/ w" a. ~( C
  4. #define IWDG_WriteAccess_Enable     ((uint16_t)0x5555)
    $ k+ g" B# z) U" g% ]
  5. #define IWDG_WriteAccess_Disable    ((uint16_t)0x0000)
    - T- U6 a0 d, C! ?/ H9 e
  6. #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
    6 j/ l" D1 S: c( y4 h
  7.                                       ((ACCESS) == IWDG_WriteAccess_Disable))
复制代码
" Z2 m: b( X. p
IWDG_prescaler3 }' L2 _1 f- S) Z9 V2 G- o! }& _
+ S' T1 u/ c* v# o" @6 m. q
  1. /** @defgroup IWDG_prescaler
    ' `4 ^4 C' E5 Z: }" h, w
  2.   * @{
    / w# j9 `9 D/ g: o
  3.   */
    ( A2 D0 R0 y# ?/ |
  4. #define IWDG_Prescaler_4            ((uint8_t)0x00)
    4 G5 u# N  ?+ ^$ C
  5. #define IWDG_Prescaler_8            ((uint8_t)0x01)- o# G1 P: x# V& E6 T
  6. #define IWDG_Prescaler_16           ((uint8_t)0x02). ]$ {* f6 ~; i
  7. #define IWDG_Prescaler_32           ((uint8_t)0x03)
    9 L9 i9 y7 j$ O1 M9 ?8 S% e# n: D
  8. #define IWDG_Prescaler_64           ((uint8_t)0x04)0 x+ y5 Y; O& C* X2 ~
  9. #define IWDG_Prescaler_128          ((uint8_t)0x05)- N  Z3 ~$ ?# M
  10. #define IWDG_Prescaler_256          ((uint8_t)0x06)0 A/ }; \0 }2 U
  11. #define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4)  || \
    ; A. u* i- H6 e' m6 u9 z0 U8 H
  12.                                       ((PRESCALER) == IWDG_Prescaler_8)  || \# g( a/ [0 ~# d' S% k
  13.                                       ((PRESCALER) == IWDG_Prescaler_16) || \
    7 r# u9 j7 \# l* [0 Z4 @2 s( t
  14.                                       ((PRESCALER) == IWDG_Prescaler_32) || \
    . @; X9 Z' {' a0 C/ @) _" U1 P/ g
  15.                                       ((PRESCALER) == IWDG_Prescaler_64) || \7 Z) q0 l0 J1 s# Q+ ~
  16.                                       ((PRESCALER) == IWDG_Prescaler_128)|| \
    & c+ P/ @, c3 [9 e% h" ?9 ^
  17.                                       ((PRESCALER) == IWDG_Prescaler_256))
复制代码

, J5 x% e/ k# e4 hIWDG_Flag8 C9 E1 K1 R) j" V0 x1 {" v

, S, g5 A3 @/ B* A& _7 Z9 R6 H
  1. /** @defgroup IWDG_Flag " W6 A: y, M. f3 L
  2.   * @{
    7 I3 B( W. ~8 V# `/ E$ ^, m
  3.   */; c( r) Q4 V' ^% [/ [1 L! N3 \
  4. #define IWDG_FLAG_PVU               ((uint16_t)0x0001)- B0 C7 i7 r8 y+ Q
  5. #define IWDG_FLAG_RVU               ((uint16_t)0x0002)# x8 Z* F3 `" W, M1 T
  6. #define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU))* m9 y' p" z2 B/ v
  7. #define IS_IWDG_RELOAD(RELOAD) ((RELOAD) <= 0xFFF)
复制代码

. e$ S  ^. P* ~" L2 @# ?' R7 O# e7 I+ D
03. 相关函数
- G. c2 Y2 R$ t2 \, R
  1. /* Exported macro ------------------------------------------------------------*/- a( g0 E2 R9 W/ \4 c
  2. /* Exported functions --------------------------------------------------------*/6 i, P4 u4 [; t6 Q* `- x% L

  3. : b' ^8 T% O- |1 v; q! b
  4. /* Prescaler and Counter configuration functions ******************************/
    . S8 x+ D4 _/ S  o
  5. void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
    + t6 }' G, N( L
  6. void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
    6 V+ S8 X! I+ E/ t4 Z; _) ], i
  7. void IWDG_SetReload(uint16_t Reload);
    1 ]) Z) t7 O2 r- m
  8. void IWDG_ReloadCounter(void);
    7 H0 v6 c$ x# p- S7 B8 E

  9. , t% H2 x7 [  s5 A' o
  10. /* IWDG activation function ***************************************************/
    / s8 g! f8 Q4 U& s
  11. void IWDG_Enable(void);
    7 j, g5 R/ G0 s+ G1 ^3 }* I  R

  12. 6 a+ V  x" T. F2 u4 \6 a% E
  13. /* Flag management function ***************************************************/& R/ e& O! Y1 y
  14. FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
复制代码

4 i  v! D" X5 `2 P6 {. n04. 结构体封装

7 x  ]& }+ u' N/ w: ]; o" w
  1. /** 9 w! I% \/ J/ G# V" N2 F  v
  2.   * @brief Independent WATCHDOG4 r2 G5 J. X# M8 s7 d6 r
  3.   */' [: N! \% f6 i" ?1 a. L; [/ {& }

  4. 5 B3 i$ m0 z" f. F# q; e2 V( n
  5. typedef struct
    9 ~; \" \/ [" R/ k9 C0 C
  6. {
      P5 g  L& D9 j
  7.   __IO uint32_t KR;   /*!< IWDG Key register,       Address offset: 0x00 */
    % y' \$ x: x5 E
  8.   __IO uint32_t PR;   /*!< IWDG Prescaler register, Address offset: 0x04 */& O1 H2 g$ s/ s/ b
  9.   __IO uint32_t RLR;  /*!< IWDG Reload register,    Address offset: 0x08 */
    1 C4 N; r$ }$ k* y
  10.   __IO uint32_t SR;   /*!< IWDG Status register,    Address offset: 0x0C */! E( g( {. V6 v; O5 k& d- Y
  11. } IWDG_TypeDef;
复制代码

6 H$ s& A' m8 r# O7 G: ?' {
+ ^  k+ _9 v2 ]" d' ^7 }8 u) b( e% o- t: O7 [" {6 f( m
赞 收藏 评论0 发布时间:2022-6-13 16:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

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