zoukankan      html  css  js  c++  java
  • stm32 独立看门狗学习

    STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。

    独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。

    我们的实验这样设计,主函数开始的时候,向串口输出“Hello World”,然后启动看门口(溢出时间设定为3秒钟)。在按下按键的时候喂狗,同时串口打印“喂狗”。

    预期结果:如果不按按键,则约每三秒重启一次,现象是串口隔三秒就会打印“Hello World”;如果在启动后的3秒内按键,则显示“喂狗”,再在3秒内按键……这样保证不重启。

    看一下代码吧。

    独立看门狗的初始化:

    void IWDG_Init(u8 prer,u16 rlr) 
    {	
     	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器 IWDG_PR 和 IWDG_RLR的写操作
    	IWDG_SetPrescaler(prer);  //设置预分频值
    	
    	IWDG_SetReload(rlr);  //设置重装载值
    	
    	IWDG_ReloadCounter();  //按照重装载值装载IWDG计数器
    	
    	IWDG_Enable();  //看门狗使能
    }
    这个函数有两个参数:prer 和 rlr


    PRER 就是表格中的PR[2:0],取值范围是0-7;

    RLR就是表格中的RL[11:0],取值范围是0x000-0xFFF;

    注意:这里的时间是粗略计算的,不是那么准确。

    溢出时间 = 2^PR*(RL+1)/10  

    单位:ms 

    如果我们定时3秒钟,那么应该是:

    IWDG_Init(4,1874);  // 2^4 * (1874+1) / 10 (ms)= 16*1875/10 (ms)= 3000(ms) = 3s

    主函数代码:

    int main(void)
    {	
    	delay_init();	     //延时函数初始化  
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	
    	uart_init(9600);	 //串口初始化
    	
    	printf("Hello World ! 
    ");
     	
    	IWDG_Init(4,1874);    // 看门狗初始化并使能
    	
    	key_init();   //按键IO初始化
    	EXTIX_Init(); // 按键中断初始化
    	
    	while(1)
    	{
    		
    		;
    		
    	}
    }

    喂狗的操作是:

    void IWDG_Feed(void)
    {   
     	IWDG_ReloadCounter();//reload										   
    }
    

    我们在按键中断处理中喂狗:

    void EXTI0_IRQHandler(void)
    {
    	delay_ms(10);    //消除抖动
    	if(KEY3==1)	 	 //WK_UP
    	{				 
    		printf("喂狗......
    ");
    		IWDG_Feed();
    	}
    	EXTI_ClearITPendingBit(EXTI_Line0); //清除中断标志位
    }

    实验结果如图。

    如果不喂狗,那么大约3秒钟就会重启。


    如果喂狗,效果如下。




  • 相关阅读:
    路由器配置——基于链路的OSPF简单口令认证
    路由器配置——基于区域的OSPF,MD5认证
    将博客搬至CSDN
    爬虫入门【11】Pyspider框架入门—使用HTML和CSS选择器下载小说
    爬虫入门【10】Pyspider框架简介及安装说明
    【Python基础】装饰器的解释和用法
    爬虫入门【9】Python链接Excel操作详解-openpyxl库
    爬虫实战【13】获取自己的动态代理ip池
    爬虫实战【12】使用cookie登陆豆瓣电影以及获取单个电影的所有短评
    爬虫实战【11】Python获取豆瓣热门电影信息
  • 原文地址:https://www.cnblogs.com/longintchar/p/5224426.html
Copyright © 2011-2022 走看看