微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32学习笔记——独立看门狗库函数

STM32学习笔记——独立看门狗库函数

时间:10-02 整理:3721RD 点击:
独立看门狗之所以称为独立看门狗,就是因为其时钟是由片内独立的RC振荡器提供的约40KHz的时钟源
独立看门狗的主要寄存器有四个:
IWDG_KR:键值寄存器(三个功能)
KEY[15:0]: 键值(只写寄存器,读出值为0x0000) (Key value)
1、软件必须以一定的间隔写入0xAAAA,否则,当计数器为0时,看门狗会产生复位。
2、写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器
3、写入0xCCCC,启动看门狗工作(若选择了硬件看门狗则不受此命令字限制)
IWDG_PR:预分频寄存器
具有写保护设置,向IWDG_KR寄存器写入0x55555后可进行写操作,低3位有效,分频值:4~256
IWDG_RLR: 重装寄存器
具有写保护设置,每当向IWDG_KR寄存器写入0xAAAA时,重装载值会被传送到计数器中。随后计数器从这个值开始递减计数。低12位有效
IWDG_SR:状态寄存器,低两位有效
RVU: 看门狗计数器重装载值更新 (Watchdog counter reload value update)
PVU: 看门狗预分频值更新 (Watchdog prescaler value update)

独立看门狗的库函数有5个:
IWDG_WriteAccessCmd               //使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作
IWDG_SetPrescaler                      //设置 IWDG 预分频值
IWDG_SetReload                         //设置 IWDG 重装载值
IWDG_ReloadCounter                 //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器,喂狗函数,在设定的时间                                                         内要执行一次这个函数,进行喂狗,否则程序就会复位
IWDG_Enable                              //使能 IWDG
IWDG_GetFlagStatus                  //检查指定的 IWDG 标志位被设置与否

独立看门狗初始化程序:
void IWDG_Init(u8 prer,u16 rlr)
{       
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作
       
        IWDG_SetPrescaler(prer);  //设置IWDG预分频值:设置IWDG预分频值为64
       
        IWDG_SetReload(rlr);  //设置IWDG重装载值
       
        IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器
       
        IWDG_Enable();  //使能IWDG
}
//喂独立看门狗程序,可以在中断程序中进行,比如设一个定时器,在其中断函数中执行喂狗程序。
void IWDG_Feed(void)
{   
        IWDG_ReloadCounter();       //reload                                                                                  
}



为了正义,为了积分,多谢分享

了解一下   毕竟我对此不太懂   

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top