打印
[学习笔记]

AC7801-聊聊例程-看门狗

[复制链接]
2621|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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!!



使用特权

评论回复

相关帖子

沙发
七毛钱| | 2022-3-15 16:07 | 只看该作者
看门狗的例程和文档都很nice

使用特权

评论回复
板凳
Gavin3389|  楼主 | 2022-3-16 08:50 | 只看该作者
七毛钱 发表于 2022-3-15 16:07
看门狗的例程和文档都很nice

每个例程都有配套的文档

使用特权

评论回复
地板
tpgf| | 2022-4-2 16:30 | 只看该作者
芯片自带的看门狗吗

使用特权

评论回复
5
guanjiaer| | 2022-4-2 16:39 | 只看该作者
我一般不敢用看门狗

使用特权

评论回复
6
heimaojingzhang| | 2022-4-2 16:47 | 只看该作者
这是非常简单的案例了

使用特权

评论回复
7
keaibukelian| | 2022-4-2 16:57 | 只看该作者
一般来说看门狗可靠吗

使用特权

评论回复
8
labasi| | 2022-4-2 17:04 | 只看该作者
看门狗可靠 但是不容易用好

使用特权

评论回复
9
paotangsan| | 2022-4-2 17:10 | 只看该作者
是的  用不好反而起反作用

使用特权

评论回复
10
jimmhu| | 2022-5-28 15:18 | 只看该作者
AC7801性能怎么样

使用特权

评论回复
11
claretttt| | 2022-5-28 16:54 | 只看该作者
要是配置网络的时候,需要定时器喂狗了呢。  

使用特权

评论回复
12
biechedan| | 2022-5-28 17:21 | 只看该作者
这个不都是定时喂狗吗

使用特权

评论回复
13
juliestephen| | 2022-5-29 08:32 | 只看该作者
while循环不大适合这个。

使用特权

评论回复
14
Gavin3389|  楼主 | 2022-5-29 11:17 | 只看该作者
tpgf 发表于 2022-4-2 16:30
芯片自带的看门狗吗

是的

使用特权

评论回复
15
Gavin3389|  楼主 | 2022-5-29 11:18 | 只看该作者
jimmhu 发表于 2022-5-28 15:18
AC7801性能怎么样

稳定的很

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

536

帖子

3

粉丝