完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
IWDG 由其自己的专用低速时钟 (LSI) 计时,因此即使主时钟出现故障也能保持活动状态。一旦 IWDG 启动,LSI 被强制 ON 且不能被禁用(LSI 也不能被禁用),并且计数器从 0xFFF 的复位值开始向下计数。当它达到计数值结束 (0x000) 时,将生成系统复位。IWDG 计数器应定期重新加载,以防止 MCU 复位。IWDG 在 VDD 电压域中实现,在 STOP 和 STANDBY 模式下仍然有效(IWDG 复位可以从 STANDBY 唤醒)。RCC_CSR 寄存器中的 IWDGRST 标志可用于通知何时发生 IWDG 复位。最小-最大超时值@32KHz (LSI):~125us / ~32。7s IWDG 超时可能因 LSI 频率分散而异。STM32F4xx 器件能够测量 LSI 频率(LSI 时钟在内部连接到 TIM5 CH4 输入捕获)。测量值可用于具有可接受精度的 IWDG 超时。
======================================================================================================================================================================================================================================================================== ================================================== ===== [。。] (#) 使用 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable) 函数启用对 IWDG_PR 和 IWDG_RLR 寄存器的写访问 (#) 使用 IWDG_SetPrescaler() 函数配置 IWDG 预分频器 (#) 使用 IWDG_SetReload() 配置 IWDG 计数器值功能。每次重新加载计数器时,该值将加载到 IWDG 计数器中,然后 IWDG 将从该值开始向下计数。(#) 使用 IWDG_Enable() 函数启动 IWDG,当 IWDG 在软件模式下使用时(无需使能 LSI,由硬件使能) (#) 然后应用程序必须定期重新加载 IWDG 计数器在正常操作期间,使用 IWDG_ReloadCounter() 函数防止 MCU 复位。@endverbatim **************************************************** ****************************** * @attention * * 《h2》《center》© COPYRIGHT 2015 STMicroelectronics《/center》《 /h2》 * * 根据 MCD-ST Liberty SW 许可协议 V2 获得许可(“许可”);* 除非符合许可,否则您不得使用此文件。* 您可以在以下位置获得许可证副本:* * * * 除非适用法律要求或书面同意,否则根据许可分发的软件 * 是按“原样”分发的,* 不提供任何类型的明示或暗示的保证或条件。* 请参阅许可证以了解管理权限的特定语言和 * 许可证下的限制。* ***************************************************** ***************************** *//* 包括 ---------------- -------------------------------------------------- */#include “stm32f4xx_iwdg.h” 配置函数 *@verbatim ============================================== ================================== ##### 预分频器和计数器配置函数##### = ================================================== ==========================@endverbatim * @{ *//** * @brief 启用或禁用对 IWDG_PR 和 IWDG_RLR 的写访问寄存器。* @param IWDG_WriteAccess:对 IWDG_PR 和 IWDG_RLR 寄存器的写访问的新状态。* 此参数可以是以下值之一: * @arg IWDG_WriteAccess_Enable:启用对 IWDG_PR 和 IWDG_RLR 寄存器的写访问 * @arg IWDG_WriteAccess_Disable:禁用对 IWDG_PR 和 IWDG_RLR 寄存器的写访问 * @retval None */void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess){ /* 检查参数 */ assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess)); IWDG-》KR = IWDG_WriteAccess;}/** * @brief 设置 IWDG 预分频器值。* @param IWDG_Prescaler:指定 IWDG 预分频器值。* 此参数可以是以下值之一: * @arg IWDG_Prescaler_4:IWDG 预分频器设置为 4 * @arg IWDG_Prescaler_8:IWDG 预分频器设置为 8 * @arg IWDG_Prescaler_16:IWDG 预分频器设置为 16 * @arg IWDG_Prescaler_32 设置为 IWDG 预分频器32 * @arg IWDG_Prescaler_64:IWDG 预分频器设置为 64 * @arg IWDG_Prescaler_128:IWDG 预分频器设置为 128 * @arg IWDG_Prescaler_256:IWDG 预分频器设置为 256 * @retval None */void IWDG_SetPrescaler(uint8_t IWDG_Prescaler){ /* 检查参数 */ assert_param(IS_IWDG_PRESCALER(IWDG_Prescaler)); IWDG-》PR = IWDG_Prescaler;}/** * @brief 设置 IWDG 重载值。* @param Reload: 指定 IWDG 重载值。* 此参数必须是介于 0 和 0x0FFF 之间的数字。* @retval None */void IWDG_SetReload(uint16_t Reload){ /* 检查参数 */ assert_param(IS_IWDG_RELOAD(Reload)); IWDG-》RLR = Reload;}/** * @brief 使用重载寄存器 * 中定义的值重载 IWDG 计数器(禁用对 IWDG_PR 和 IWDG_RLR 寄存器的写访问)。* @param None * @retval None */void IWDG_ReloadCounter(void){ IWDG-》KR = KR_KEY_RELOAD; }/** * @} *//** @defgroup IWDG_Group2 IWDG 激活函数 * @brief IWDG 激活函数 *@verbatim ======================== ================================================== ====== ##### IWDG 激活函数##### ============================== ================================================@endverbatim * @{ *//** * @brief 启用 IWDG(禁用对 IWDG_PR 和 IWDG_RLR 寄存器的写访问)。* @param None * @retval None */void IWDG_Enable(void){ IWDG-》KR = KR_KEY_ENABLE; }/** * @} *//** @defgroup IWDG_Group3 Flag 管理函数 * @brief Flag 管理函数 *@verbatim =========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== ================================================== ====== ##### 标志管理功能##### ============================== ================================================@endverbatim * @{ *//** * @brief 检查是否设置了指定的 IWDG 标志。* @param IWDG_FLAG:指定要检查的标志。* 此参数可以是以下值之一: * @arg IWDG_FLAG_PVU:正在进行的预分频器值更新 * @arg IWDG_FLAG_RVU:正在进行的重新加载值更新 * @retval IWDG_FLAG 的新状态(设置或重置)。*/FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG){ FlagStatus bitstatus = RESET; /* 检查参数 */ assert_param(IS_IWDG_FLAG(IWDG_FLAG)); if ((IWDG-》SR & IWDG_FLAG) != (uint32_t)RESET) { bitstatus = SET; } else { bitstatus = RESET; } /* 返回标志状态 */ return bitstatus;}/** * @} *//** * @} *//** * @} *//** * @} *//**** ******************** (C) 版权 STMicroelectronics *****文件结尾****/ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1874 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1658 浏览 1 评论
1143 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
759 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1720 浏览 2 评论
1963浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
789浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
612浏览 3评论
628浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
590浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-11 20:15 , Processed in 1.147310 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号