1. 个人认为要想理解Autosar WDG代码,需要特别注意如下两个全局静态变量的改变:
Wdg_ChannelSetTriggerCondition函数根据u16Timeout值,计算出了 Wdg_Timeout 值, timeout值还包含了 uElapsedTime
Wdg_ChannelSetMode函数将Wdg_Timeout给减去了一个uElapsedTime
我认为 Wdg_ChannelSetTriggerCondition() 函数要在 Wdg_ChannelSetMode() 函数之前执行。
所以,我推测,Wdg的函数使用顺序如下绿色箭头标记。
2. Wdg_Wdog_Init函数
3.读写寄存器
4. Wdg_SetMode函数里需要重新计算timeout frame
依据如下:
而且S32K 的Mcal中,该函数也确实做到了要求: