Gavin3389 发表于 2022-3-11 10:53

AC7801-聊聊例程-看门狗

本帖最后由 Gavin3389 于 2022-3-11 10:53 编辑

官网的资料都保存好了,
一点点的开始跑各种例程,首先感受最舒畅的一点,官网的资料非常舒适,(例程+说明文档)


好了,今天来看看看门狗例程
例程路径
\ac7801xSampleCode20210720\watchdog
非常整齐和人性化,例程代码和应用笔记



看,内容也都是干货,不冗余


这么温馨的官网资料,突然给我弄不会了,节省了很多时间。
以WDG5STimeout例程为例
主函数非常简单整洁
乍一看,这也太简单了吧
*
* @param none
*
* @return none
*
* @brief 配置独立看门狗,超时周期为5S。
*/
int main(void)
{
    InitDelay();

    WDG_5s_Timerout();
   
}
InitDelay();
这还没深究,应该是时钟相关吧,
回头看看手册,做做算术题
/*!
* @brief Init Delay count factor, 1s = TICKS * (1/f)s;
*
* @paramnone
* @return none
*/
void InitDelay(void)
{
    s_facus = __SYSTEM_CLOCK / 1000000;
    s_facms = s_facus * 1000;
}

WDG_5s_Timerout();
实现看门狗的基础配置,测试
这里有些人可能会因为main函数中没有看到while循环而困惑
实则是为了测试功能,官方把while放在了这个函数里,
这样从功能上来说,形成了闭环。
/**
* WDG_5s_Timerout
*
* @paramnone
* @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!!



七毛钱 发表于 2022-3-15 16:07

看门狗的例程和文档都很nice

Gavin3389 发表于 2022-3-16 08:50

七毛钱 发表于 2022-3-15 16:07
看门狗的例程和文档都很nice

每个例程都有配套的文档

tpgf 发表于 2022-4-2 16:30

芯片自带的看门狗吗

guanjiaer 发表于 2022-4-2 16:39

我一般不敢用看门狗

heimaojingzhang 发表于 2022-4-2 16:47

这是非常简单的案例了

keaibukelian 发表于 2022-4-2 16:57

一般来说看门狗可靠吗

labasi 发表于 2022-4-2 17:04

看门狗可靠 但是不容易用好

paotangsan 发表于 2022-4-2 17:10

是的用不好反而起反作用

jimmhu 发表于 2022-5-28 15:18

AC7801性能怎么样

claretttt 发表于 2022-5-28 16:54

要是配置网络的时候,需要定时器喂狗了呢。

biechedan 发表于 2022-5-28 17:21

这个不都是定时喂狗吗

juliestephen 发表于 2022-5-29 08:32

while循环不大适合这个。

Gavin3389 发表于 2022-5-29 11:17

tpgf 发表于 2022-4-2 16:30
芯片自带的看门狗吗

是的

Gavin3389 发表于 2022-5-29 11:18

jimmhu 发表于 2022-5-28 15:18
AC7801性能怎么样

稳定的很
页: [1]
查看完整版本: AC7801-聊聊例程-看门狗