最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能。查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作。首先需要调用库文件 #include “stm32f10x_iwdg.h”
再配置下看门狗相关参数
//独立看门狗IWDG设置
void WatchDog_int(void)// 独立看门狗IWDG设置
{
/* Enable write access to IWDG_PR and IWDG_RLR registers */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* IWDG counter clock: 32KHz(LSI) / 32 = 1KHz */
IWDG_SetPrescaler(IWDG_Prescaler_32); //独立看门狗预分频为32
/* Set counter reload value to 1000 */
IWDG_SetReload(1000);//设置IWDG重装载值 范围为 0~0x0FFF;
/* Reload IWDG counter */
IWDG_ReloadCounter();//按照重装载的寄存器的值来重装载IWDG计数器
/* Enable IWDG (the LSI oscillator will be enabled by hardware) */
IWDG_Enable();//使能 独立看门狗
}
在主程序中实现喂狗的程序如下:
///主程序//
int main(void)
{
RCC_Configuration(); //时钟配置
NVIC_Configuration();//中断配置
GPIO_Configuration();//GPIO配置
WatchDog_int();// 独立看门狗IWDG设置
/* 检查是否看门狗复位*/
if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
{
printf(“WatchDog Resetrn”);
speakertest();
RCC_ClearFlag();//清除标志位
}
else
{;}
}
while(1)
{
//正常运行的程序
IWDG_ReloadCounter();//喂狗
}
最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能。查了下STM32的相关资料,于是利用下库文件来实现IWDG独立看门狗操作。首先需要调用库文件 #include “stm32f10x_iwdg.h”
再配置下看门狗相关参数
//独立看门狗IWDG设置
void WatchDog_int(void)// 独立看门狗IWDG设置
{
/* Enable write access to IWDG_PR and IWDG_RLR registers */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* IWDG counter clock: 32KHz(LSI) / 32 = 1KHz */
IWDG_SetPrescaler(IWDG_Prescaler_32); //独立看门狗预分频为32
/* Set counter reload value to 1000 */
IWDG_SetReload(1000);//设置IWDG重装载值 范围为 0~0x0FFF;
/* Reload IWDG counter */
IWDG_ReloadCounter();//按照重装载的寄存器的值来重装载IWDG计数器
/* Enable IWDG (the LSI oscillator will be enabled by hardware) */
IWDG_Enable();//使能 独立看门狗
}
在主程序中实现喂狗的程序如下:
///主程序//
int main(void)
{
RCC_Configuration(); //时钟配置
NVIC_Configuration();//中断配置
GPIO_Configuration();//GPIO配置
WatchDog_int();// 独立看门狗IWDG设置
/* 检查是否看门狗复位*/
if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
{
printf(“WatchDog Resetrn”);
speakertest();
RCC_ClearFlag();//清除标志位
}
else
{;}
}
while(1)
{
//正常运行的程序
IWDG_ReloadCounter();//喂狗
}
举报