STM32F103V IWDG 独立看门狗操作

最近编写一个程序,因为需要考虑到可靠性,所以需要在程序了添加看门狗功能。查了下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 Reset\r\n"); 
    speakertest();
    RCC_ClearFlag();//清除标志位
  }
  else
  {;}

 }

 

while(1)

{

//正常运行的程序

IWDG_ReloadCounter();//喂狗

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,它具有看门狗(Watchdog)功能。看门狗是一种硬件定时器,用于监控系统的运行状态,当系统出现异常情况时,看门狗会自动重启系统,保证系统的稳定性和可靠性。 在STM32F103C8T6中,看门狗的配置需要以下步骤: 1. 使能看门狗时钟:通过RCC寄存器使能看门狗时钟。 2. 配置看门狗预分频器和重载值:看门狗预分频器和重载值用于确定看门狗计数器的计数周期,通过IWDG_PR和IWDG_RLR寄存器进行配置。 3. 启动看门狗:配置好看门狗后,通过IWDG_KR寄存器启动看门狗。 4. 定时喂狗:在系统运行正常时,需要定时喂狗,以避免看门狗超时,导致系统重启。通过IWDG_KR寄存器定时喂狗。 以下是一个简单的示例代码,演示如何配置和使用看门狗: ``` #include "stm32f10x.h" void WDG_Init(void) { RCC_APB1PeriphResetCmd(RCC_APB1Periph_IWDG, ENABLE); // 使能看门狗时钟 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); // 允许写入IWDG_PR和IWDG_RLR寄存器 IWDG_SetPrescaler(IWDG_Prescaler_256); // 配置预分频器,分频系数为256 IWDG_SetReload(0xFFF); // 配置重载值,最大值为0xFFF IWDG_ReloadCounter(); // 重载看门狗计数器 IWDG_Enable(); // 启动看门狗 } int main(void) { WDG_Init(); // 初始化看门狗 while(1) { // 定时喂狗 IWDG_ReloadCounter(); // 喂狗 } } ``` 在上面的例子中,预分频器的分频系数为256,重载值为0xFFF,这意味着看门狗计数器的计数周期为256*4096/40M=26.2144ms,如果系统在这个周期内没有重载看门狗计数器,那么看门狗就会超时,导致系统重启。通过定时喂狗,可以避免这种情况的发生。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值