单片机型号:STM32L053R8T6
开发笔记STM32开发笔记45:看门狗驱动程序的移植介绍了看门狗驱动程序的基本设计方法。今天项目中看门狗的延时时间达到10秒,则实际运行效果只有3秒。
以下是看门狗最大延时时间的设置函数:
void CIwdg::SetMaxRefreshInterval(uint8_t u8_second)
{
this->hIwdg.Instance = IWDG;
this->hIwdg.Init.Prescaler = IWDG_PRESCALER_64;
this->hIwdg.Init.Window = 4095;
#if defined STM32F091xC || defined STM32F070x6
this->hIwdg.Init.Reload = 625 * u8_second; //40000000 / 1000 / 64 * 5 = 3125
#elif defined STM32L053xx
this->hIwdg.Init.Reload = 578 * u8_second; //37000000 / 1000 / 64 * 5 = 2890
#endif
if (HAL_IWDG_Init(&this->hIwdg) != HAL_OK)
{
Target.ErrorHandler(__FILE__, __LINE__);
}
}
以当前使用的STM32L053R8T6为例,如果希望产生10秒延时则设置的值为37000000/1000/64*10=5780。
看下面的程序,这是STM32底层的看门狗驱动,其Reload的最大值为0x0FFF,也就是4095。这就是为什么达不到10秒延时的原因,因为其设置的值已经溢出。
typedef struct
{
uint32_t Prescaler; /*!< Select the prescaler of the IWDG.
This parameter can be a value of @ref IWDG_Prescaler */
uint32_t Reload; /*!< Specifies the IWDG down-counter reload value.
This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
uint32_t Window; /*!< Specifies the window value to be compared to the down-counter.
This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
} IWDG_InitTypeDef;
可以通过增加分频系数的方式,加以解决,当然前提是不需要看门狗的实践过于精准,一般来说也不需要过于精准的看门狗时间。
以下是修正后的程序,再设置10秒延时已非常准确。
void CIwdg::SetMaxRefreshInterval(uint8_t u8_second)
{
this->hIwdg.Instance = IWDG;
this->hIwdg.Init.Prescaler = IWDG_PRESCALER_256;
this->hIwdg.Init.Window = 4095;
#if defined STM32F091xC || defined STM32F070x6
this->hIwdg.Init.Reload = 156 * u8_second; //40000000 / 1000 / 256 = 156
#elif defined STM32L053xx
this->hIwdg.Init.Reload = 145 * u8_second; //37000000 / 1000 / 256 = 145
#endif
if (HAL_IWDG_Init(&this->hIwdg) != HAL_OK)
{
Target.ErrorHandler(__FILE__, __LINE__);
}
}
这样设置后,对于STM32F0来说,其最大延时时间约为26秒;对于STM32L0来说,其最大延时时间约为28秒。
上一篇:STM32休眠时关闭看门狗计数的简单解决方案
下一篇:stm32f103 c6t6 CAN总线的配置
推荐阅读最新更新时间:2024-11-24 11:15
设计资源 培训 开发板 精华推荐
- 带有 PTN5110 USB PD TCPC PHY 的 Type-C 适配器的典型应用
- AM2F-1218SH52Z 18V 2瓦DC-DC转换器的典型应用
- 【南京邮电大学】 lt4320整流桥
- 使用 Broadcom Inc 的 HCPL-7851#100 的参考设计
- usb-hubV2.0
- AM1G-0503DZ ±3.3V 1 瓦 DC-DC 转换器的典型应用
- 用于医疗和消费类可穿戴设备的无线 ECG、SpO2、PTT 和心率监测仪参考设计
- schematic
- 基于ESP32-WROOM-32D(16MB)的开发板设计
- AM2G-2418SZ 18V 2 瓦 DC/DC 转换器的典型应用
- 2024年Automechanika Shanghai海量同期活动刷新历届记录,汇聚行业智慧,共谋未来发展
- 企业文化分享 如何培养稀缺的硅IP专业人员?SmartDV开启的个人成长与团队协作之旅
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 北交大本科生探秘泰克先进半导体开放实验室,亲历前沿高科技魅力
- 新帅上任:杜德森博士(Dr. Torsten Derr)将于2025年1月1日出任肖特集团首席执行官
- 边缘 AI 如何提升日常体验
- 苹果要首发!台积电宣布2nm已准备就绪
- AMD有望用上全新芯片堆叠技术:延迟大幅减少、性能显著提升
- 宁德时代发布10月战报
- 2024年10月电池行业:增长势头不减!