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

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

[复制链接]
STMCU小助手 发布时间:2022-4-1 15:19
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
  1. /** @defgroup IWDG_WriteAccess; s9 i( i" |7 ^9 B" O
  2.   * @{
    0 l6 z- {0 ?! t, H# J
  3.   */! i9 O9 L. `9 h8 E" Y
  4. #define IWDG_WriteAccess_Enable     ((uint16_t)0x5555)
    / |) s  j& G! h
  5. #define IWDG_WriteAccess_Disable    ((uint16_t)0x0000)
    1 D2 d( o& F7 f% U) J& _
  6. #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \/ \7 `/ l4 c. I: E
  7.                                       ((ACCESS) == IWDG_WriteAccess_Disable))
复制代码
' I& e5 f& a8 N
IWDG_prescaler
+ Q, \- T+ G& C
" k2 N5 }( [4 b  G
  1. /** @defgroup IWDG_prescaler
    0 j5 Q/ V' `  [1 _) _- D
  2.   * @{3 Y- S+ a3 ^% z7 g. A0 \+ p
  3.   */8 r+ |/ i, i+ N+ n( }! T) ?
  4. #define IWDG_Prescaler_4            ((uint8_t)0x00)8 o. y) X% Z* h% C( [) n. D% `5 U
  5. #define IWDG_Prescaler_8            ((uint8_t)0x01): m+ j& \- N, Z  h# N" t
  6. #define IWDG_Prescaler_16           ((uint8_t)0x02)4 G1 b' E4 T* R; R4 F8 }, p4 T
  7. #define IWDG_Prescaler_32           ((uint8_t)0x03)) t) |9 h* Q3 _0 K
  8. #define IWDG_Prescaler_64           ((uint8_t)0x04)
    , P# w* l& d- D6 w* W, \# j7 S
  9. #define IWDG_Prescaler_128          ((uint8_t)0x05)
    & h  M. [  V! E9 m  ], Q8 P- G9 G
  10. #define IWDG_Prescaler_256          ((uint8_t)0x06)2 h! |' H  b2 a4 `
  11. #define IS_IWDG_PRESCALER(PRESCALER) (((PRESCALER) == IWDG_Prescaler_4)  || \
    ( f1 t5 V" |2 h4 \9 c8 d
  12.                                       ((PRESCALER) == IWDG_Prescaler_8)  || \8 v. A4 h$ K7 r! @& I6 G. o
  13.                                       ((PRESCALER) == IWDG_Prescaler_16) || \8 ]; G# b* r* I
  14.                                       ((PRESCALER) == IWDG_Prescaler_32) || \3 t" s4 d8 V( S2 A5 `/ Z" k/ Z
  15.                                       ((PRESCALER) == IWDG_Prescaler_64) || \, u0 V& j2 n9 [- r2 h: ^
  16.                                       ((PRESCALER) == IWDG_Prescaler_128)|| \
    / E# x3 m* o- @. P& [3 \  N2 h
  17.                                       ((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
  1. /** @defgroup IWDG_Flag 2 ~. _- ?' @: @  y4 C" `# p) m' `
  2.   * @{
    * Q5 q" G% v; |6 b, ~2 h( G
  3.   */0 ~! M! ~' k: z, r( c; T* U$ h
  4. #define IWDG_FLAG_PVU               ((uint16_t)0x0001)
    ) v# C4 s$ P* Q' J$ ~8 D* h& {
  5. #define IWDG_FLAG_RVU               ((uint16_t)0x0002)$ w$ w& w2 j1 U3 h* g! w9 B
  6. #define IS_IWDG_FLAG(FLAG) (((FLAG) == IWDG_FLAG_PVU) || ((FLAG) == IWDG_FLAG_RVU))
    ! \3 f0 F7 u$ O  i) Y* [
  7. #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
  1. /* Exported macro ------------------------------------------------------------*/
    % U9 z3 g! n; o
  2. /* Exported functions --------------------------------------------------------*/
    . e) b: @9 Y6 |

  3. & Q- K* E4 t6 M" q1 H/ h1 J
  4. /* Prescaler and Counter configuration functions ******************************/5 M: @. H/ N, B; Z7 ?/ T) M4 w
  5. void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
    . d& L4 P" T+ Y
  6. void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);! R' L* _( J! u# B
  7. void IWDG_SetReload(uint16_t Reload);$ v: s9 t3 L# `! a' ~  a
  8. void IWDG_ReloadCounter(void);
    ( S/ c4 n2 [) G8 b5 m) w/ h

  9. 7 U8 q4 d# x) K% O
  10. /* IWDG activation function ***************************************************/
    1 P& Q  \( @+ ~2 H% m
  11. void IWDG_Enable(void);
    1 \. L$ V3 S. h- d4 @& ^" _
  12. 7 n8 e# _4 D5 D
  13. /* Flag management function ***************************************************/' _1 H* I0 d1 D. X
  14. FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
复制代码

4 d  P' b' T8 o# d9 S04. 结构体封装* g, }' K+ E" i
  1. /**
    # g6 Z3 h6 C( v9 ~$ b
  2.   * @brief Independent WATCHDOG  g8 i* P. j4 O6 t, m$ r
  3.   */
    9 h# k4 L" z8 {0 l7 c6 {2 N

  4. * w( w- a. e8 v. c
  5. typedef struct, [+ x' n, i# W% S! I9 O# I6 Q
  6. {
    $ i) q  W7 I4 ~$ }, e, T: P3 E4 W& W
  7.   __IO uint32_t KR;   /*!< IWDG Key register,       Address offset: 0x00 */3 A4 f8 a7 c4 u) V0 [
  8.   __IO uint32_t PR;   /*!< IWDG Prescaler register, Address offset: 0x04 */
    6 i9 d& s% G. A6 o" ?
  9.   __IO uint32_t RLR;  /*!< IWDG Reload register,    Address offset: 0x08 */
    # h4 \0 B) O/ S. b; s/ |" h
  10.   __IO uint32_t SR;   /*!< IWDG Status register,    Address offset: 0x0C */3 v  P2 T" S! f
  11. } IWDG_TypeDef;
复制代码
. j  @4 O# G- S5 L7 `0 P* _
收藏 评论0 发布时间:2022-4-1 15:19

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版