本帖最后由 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
上述的方法是根据代码简化后的。完整的计算方法请参考手册
|