本帖最后由 hexbei 于 2024-1-22 18:06 编辑
例程给的代码如下: - void IWDT_Init(uint32_t freqLIRC)
- {
- IWDT_Enable();
- IWDT_EnableWriteAccess();
- //简化计算为
- // y = x * 2 / T
- // x为DIV的系数 y为freqLIRC除以的值
- IWDT_SetDivider(IWDT_DIV_4);
- IWDT_SetReloadCounter(freqLIRC / 2666);
- IWDT_ReloadCounter();
- }
- 按照上面的配置,需要填入的值有两个。一个是IWDT_SetDivider(IWDT_DIV_4)里面的DIV;另一个是IWDT_SetReloadCounter(freqLIRC / 2666)里面freqLIRC除以的数。
- 设需要定的超时时间为T,要除以的数为x,计算方式为 DIV * 2 / T = x
- 例如想要设定定时值为3ms,计算方式为 4 * 2 / 0.003 ≈ 2667。所以我们填入2667
- DIV的选取可以参考手册里的。一般来说,freqLIRC / x 的值不能超过256
上述的方法是根据代码简化后的。完整的计算方法请参考手册
|