本帖最后由 Gavin3389 于 2022-3-11 10:53 编辑
官网的资料都保存好了,
一点点的开始跑各种例程,首先感受最舒畅的一点,官网的资料非常舒适,(例程+说明文档)
好了,今天来看看看门狗例程
例程路径
\ac7801xSampleCode20210720\watchdog
非常整齐和人性化,例程代码和应用笔记
看,内容也都是干货,不冗余
这么温馨的官网资料,突然给我弄不会了,节省了很多时间。
以WDG5STimeout例程为例
主函数非常简单整洁
乍一看,这也太简单了吧
- *
- * @param[in] none
- *
- * [url=home.php?mod=space&uid=266161]@return[/url] none
- *
- * [url=home.php?mod=space&uid=247401]@brief[/url] 配置独立看门狗,超时周期为5S。
- */
- int main(void)
- {
- InitDelay();
-
- WDG_5s_Timerout();
-
- }
InitDelay();
这还没深究,应该是时钟相关吧,
回头看看手册,做做算术题
- /*!
- * [url=home.php?mod=space&uid=247401]@brief[/url] Init Delay count factor, 1s = TICKS * (1/f) s;
- *
- * @param[in] none
- * [url=home.php?mod=space&uid=266161]@return[/url] none
- */
- void InitDelay(void)
- {
- s_facus = __SYSTEM_CLOCK / 1000000;
- s_facms = s_facus * 1000;
- }
WDG_5s_Timerout();
实现看门狗的基础配置,测试
这里有些人可能会因为main函数中没有看到while循环而困惑
实则是为了测试功能,官方把while放在了这个函数里,
这样从功能上来说,形成了闭环。
- /**
- * WDG_5s_Timerout
- *
- * @param[in] none
- * @return none
- *
- * @brief 配置看门狗超时时间为5S
- */
- void WDG_5s_Timerout(void)
- {
- uint32_t tmpTimeoutValue = WDG_CLK(5); // (119999999+1)/24000000 = 5s(时钟为48M)
- WDG_ConfigType WDGConfig;
-
- memset(&WDGConfig,0,sizeof(WDGConfig));
-
- WDGConfig.clockSource = WDG_CLOCK_APB; //0 is 24MHz clk source
- WDGConfig.WDGEn = ENABLE;
- WDGConfig.interruptEn = ENABLE; //使能中断,延迟128个总线时钟后复位,可在128总线时钟内执行中断例程
- //若需要超时立即复位,禁能中断即可
- WDGConfig.prescalerEn = DISABLE; //0:disable 256 pre, 1:enable 256 pre
- WDGConfig.updateEn = ENABLE; //if update is 0,can't do any setting
- WDGConfig.windowEn = DISABLE; //window mode watchdog
- WDGConfig.timeoutValue = tmpTimeoutValue; //time = pre*timeout/clk source
- WDGConfig.windowValue = NULL;
- WDGConfig.callBack = WDGCallback; //设置中断回调
- WDG_Init(&WDGConfig);
- GPIO_SetDir(GPIOC,GPIO_PIN9,GPIO_OUT); //LED1,用于测试看门狗功能
- GPIO_SetPinLevel(GPIOC,GPIO_PIN9,GPIO_LEVEL_HIGH);
-
- WDG_Feed();
- while (1)
- {
- mdelay(4000); //延时4S再喂狗,不会重启,若为验证看门狗有效性,可把时间改为6S
- WDG_Feed(); //刷新看门狗
- GPIO_SetPinLevel(GPIOC,GPIO_PIN9,GPIO_LEVEL_LOW);
- }
- }
实际效果
原例程
板子复位后,绿灯先点亮测试
后熄灭,说明正常喂狗
延长喂狗时间
绿灯常亮,喂狗超时
回过去,看看官网的说明文档
非常的nice!!
|