当前位置: 首页> 文旅> 美景 > 深圳全网推广怎么投放_平面设计软件大全免费_友情链接收录_百度seo优化是做什么的

深圳全网推广怎么投放_平面设计软件大全免费_友情链接收录_百度seo优化是做什么的

时间:2025/7/10 12:11:38来源:https://blog.csdn.net/weixin_56459724/article/details/143078327 浏览次数:0次
深圳全网推广怎么投放_平面设计软件大全免费_友情链接收录_百度seo优化是做什么的

目录

一、什么是独立看门狗

1、什么是看门狗

2、看门狗的原理

3、看门狗的作用

4、看门狗的分类

二、如何配置独立看门狗

1、独立看门狗框图

2、独立看门狗的相关寄存器

2.1 关键字寄存器

2.2 分频寄存器

2.3 重载值寄存器

2.4 状态寄存器

3、程序设计

4、独立看门狗的应用

三、具体使用看门狗

一、什么是独立看门狗

1、什么是看门狗

看门狗,又叫watchdog timer,从本质上来说就是一个12bit的递减计数器。看门狗定时器是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。看门狗电路一般会有一个输入和一个输出,其中的输入叫做喂狗,输出一般连接到另外一个部分的复位端。

2、看门狗的原理

看门狗的一个输出到MCU的RST端(复位电路),MCU正常工作的时候,每隔一端时间输入一个信号到喂狗端,给WDT(Watch Dog Timer,看门狗定时器)清零;如果超过规定的时间(事先给看门狗一个约定的时间,即计数上限值)不喂狗(一般在程序跑飞时),WDT定时超时,就会给出一个复位信号到MCU,使MCU复位,从而防止MCU死机。

3、看门狗的作用

程序运行的保障措施。在程序中定期喂狗,在程序卡死的情况下,自动帮我们复位,看门狗就是一个自动复位电路,防止程序长时间卡死。其本质就是一个定时器,定时器溢出,产生复位信号。

4、看门狗的分类

独立看门狗和窗口看门狗

二、如何配置独立看门狗

1、独立看门狗框图

独立看门狗的工作流程:

1.内部低速时钟LSI通过预分频后得到了分频后的时钟信号(橙色箭头

2.该时钟信号驱动递减计数器,每来一个时钟,自减一个数,当自减到0后产生IWDG复位(绿色箭头)

3.正常运行时,为了避免复位,可提前在重装寄存器写一个值,IWDG_RLR与定时器的ARR是一样的,当预先写好值之后,在运行过程中,在关键字寄存器里,写入一个特定的关键字,控制电路进行喂狗,这时重装值就会加载到递减计数器中,重新自减运行了(红色箭头)

2、独立看门狗的相关寄存器

2.1 关键字寄存器

0xAAAA           每次喂狗的写入值(更新重装载)--------狗粮

0x5555            解除寄存器的写保护

0xCCCC         启动计数器

0x5555以外的数值    激活寄存器的写保护

注意:独立看门狗一旦启动就不能关闭

2.2 分频寄存器

就是对内部低速时钟(LSI 32K)进行分频的

32000/s    32分频    1000/s

2.3 重载值寄存器

2.4 状态寄存器

 

3、程序设计

独立看门狗初始化配置函数

{

        /*时钟源配置*/

        RCC控制和状态寄存器:

        //使能内低速振荡器       0位

        //等待内部低速振荡器就绪 1位

        /*解除写保护*/

        //等待PVU清零

        //设置分频

        //等待RVU清零

        //设置重载

        //第一次喂狗,目的是将重载值加载到计数器内

        /*使能看门狗(也算激活写保护)*/

}

4、独立看门狗的应用

场景:工业自动化控制器

要求: 在一个工业自动化控制器中,需要确保周期性任务能够按时完成。在这个场景中,如果周期性任务在规定的时间内没有完成,可能会导致系统的不稳定。

实现: 你可以使用独立看门狗,设置一个固定的超时时间。系统在每个周期内开始计数,如果在超时时间内没有完成,独立看门狗就会触发复位。这确保了系统不会因为周期性任务的失败而进入不稳定状态。

三、具体使用看门狗

独立看门狗初始化函数:

/*
函数名: iwdg_init
函数功能:独立看门狗初始化
返回值:void
形参:u16 ms
函数说明:*/
void iwdg_init(u16 ms)
{/*时钟源配置*///RCC控制和状态寄存器:RCC->CSR |= (1 << 0);//使能内低速振荡器       0位while(!(RCC->CSR & (1 << 1)));//等待内部低速振荡器就绪 1位/*解除写保护*/IWDG->KR  = 0x5555;while(IWDG->SR & (1 << 0));/*设置分频*/IWDG->PR |= (3 << 0);while(IWDG->SR & (1 << 1));/*设置重载*/IWDG->RLR = 1 * ms - 1;IWDG->KR  = 0xAAAA;//喂狗/*使能看门狗(相当于激活写保护)*/IWDG->KR  = 0xCCCC;}

主程序: 

int main(void)
{NVIC_SetPriorityGrouping(5); //设置优先级分组Usart1_init(115200);//串口初始化Key_init();LED_init();Beep_init();iwdg_init(1000);timer7_Interrupt_ms_init(1);printf("重启\r\n");while(1){LED_flash(1);if(Tim7_cnt[9] >= 900){IWDG->KR  = 0xAAAA;//喂狗Tim7_cnt[9] = 0;}}}

总结:在预设的时间内,正常喂狗一切正常运行;在预设时间外,则会触发复位。

关键字:深圳全网推广怎么投放_平面设计软件大全免费_友情链接收录_百度seo优化是做什么的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: