您的位置 首页 培训

STM32学习笔记—IWDG独立看门狗试验

继做了WWDG窗口看门狗实验后,继续进行第9个实验-IWDG独立看门狗实验,本实验通过设置窗口看门狗IWDG间断时间来定期的检查是否出错,在SysTi

继做了WWDG窗口看门狗试验后,继续进行第9个试验-IWDG独立看门狗试验,本试验经过设置窗口看门狗IWDG连续时刻来定时的查看是否犯错,在SysTick_Handler中止函数中加入了流水灯用来测验是否运行了IDWG看门狗程序,用PD6-LED2经过闪耀验证程序可行性,编程工程大致和USART试验进程差不多,先是敞开体系时钟,然后GPIO端口时钟,然后复用功用时钟AFIO,然后各个模块用的的时钟,,呵呵,之后进入各个模块初始化,设置,编写子程序,中止的话,要在中止函数中填写某模块的中止触发处理函数,重要的是在CONFG.H函数中敞开模块的声明,差不多是这样的了。

以下为IWDG函数首要部分:

//IWDG窗口看门狗设置初始化
void IWDG_Config(void)
{
//独立看门狗初始化
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//发动寄存器读写

IWDG_SetPrescaler(IWDG_Prescaler_32);//40K时钟32分频

IWDG_SetReload(349); //计数器数值

IWDG_ReloadCounter(); //重启计数器

IWDG_Enable(); //发动看门狗
}
***********************************************************

注意事项:

i. 有狗往常没工作能够不睬,可是千万别忘了喂它,不然死都不知道怎样死的!

ii. 初始化程序的调用必定要在systic的初始化之后。

iii. 独立看门狗需求systic中止来喂,可是systic做其他用途不能只做这件事,所以我写了如下几句代码,能够不影响systic的其他使用,其他systic周期代码也可参阅:

第一步:在stm32f10x_it.c中界说变量

int Tic_IWDG; //喂狗循环程序的频率判别变量

第二步:将SysTickHandler中喂狗代码改为下面:

Tic_IWDG++; //变量递加

if(Tic_IWDG>=100) //每100个systic周期喂狗

{ IWDG_ReloadCounter();//重启计数器(喂狗)

Tic_IWDG=0; //变量清零

}

完好代码为

void SysTick_Handler(void)
{
Tic_Val++; //准确延时变量递加

Tic_IWDG++; //独立看门狗变量递加

if(Tic_IWDG>=100) //每100个systic周期喂狗

{
IWDG_ReloadCounter();//重启计数器(喂狗)
Tic_IWDG=0; //变量清零

switch(IWDGFLAG)
{
case 0:
GPIO_SetBits(GPIOD, GPIO_Pin_6);
break;
case 1:
GPIO_ResetBits(GPIOD, GPIO_Pin_6);
break;
default:
break;
}
IWDGFLAG=!IWDGFLAG;

}
}
以下为IWDG函数成果部分:

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/260831.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部