新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2023-4-9
- 在线时间
- 1 小时
|
买的Nano 板 学习到独立看门狗这章时,被IWDG_PR IWDG_RLR 两个寄存器搞的头大。
所以特别做了一个表格,每隔100ms的定时值做了一个统计,发现在32倍频时,可以设置的数据居多。想着直接把倍频固定死,然后输入一个时间值多方便,于是有了下表
然后将初始化函数 修改如下,
// 固定32倍频 Prep =3 时的设定值
void IWATCHDOG_Init1(uint16_t time_ms)
{
IWDG_Handle.Instance = IWDG;
IWDG_Handle.Init.Prescaler = 3U;
uint16_t rlr = (time_ms*40)/(32);
IWDG_Handle.Init.Reload = rlr;
HAL_IWDG_Init(&IWDG_Handle);
// 重新加载IWDG计数器
__HAL_IWDG_RELOAD_COUNTER(&IWDG_Handle);
// 启动看门狗外设
__HAL_IWDG_START(&IWDG_Handle);
}
在Main.c 中直接这样使用就好了,很方便。
IWATCHDOG_Init1(2000U); //分频数为32,重载值自动计算,溢出时间为2000ms
|
|