背景:
STM32的看门狗有2个:独立看门狗IWDG和窗口看门狗WWDG本文主要介绍STM32的IWDG。
内容:
IWDG主要性能
(1)自由运行的递减计数器;
(2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作),LSI为其时钟源,STOP和SLEEP模式仍可运行;
(3)看门狗被激活后,在计数器计数至0x000的的时产生复位。
下图为看门狗的框图。
上图中,IWDG由4个寄存器控制,PR,SR,RLR和KR。下面继续分析STM32的HAL库中IWDG的使用。
IWDG_HandleTypeDef hiwdg;定义一个IWDG_HandleTypeDef类型的结构体,查看其结构体,如下
typedef struct
{
IWDG_TypeDef * Instance; / *!<寄存器基地址* /
IWDG_InitTypeDef Init; / *! } IWDG_HandleTypeDef; 继续查看其内部的两个结构体,如下 typedef struct { __IO uint32_t KR; / *! __IO uint32_t PR; / *! __IO uint32_t RLR; / *! __IO uint32_t SR; / *! } IWDG_TypeDef; typedef struct { uint32_t Prescaler; / *!<选择IWDG的预分频器。 此参数可以是@ref的值IWDG_Prescaler * / uint32_t Reload; / *!<指定IWDG减计数器重载值。 此参数必须是介于Min_Data = 0和Max_Data = 0x0FFF之间的数字* / } IWDG_InitTypeDef; 下面继续分析看门狗的初始化函数: static void MX_IWDG_Init(void) { hiwdg.Instance = IWDG; //传入IWDG的基地址; hiwdg.Init.Prescaler = IWDG_PRESCALER_32; //32预分频 hiwdg.Init.Reload = 3000; if(HAL_IWDG_Init(&hiwdg)!= HAL_OK) { _Error_Handler(__ FILE__,__LINE__); } } 继续查看HAL_IWDG_Init函数: HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef * hiwdg) { uint32_t tickstart; / *检查IWDG句柄分配* / if(hiwdg == NULL) { return HAL_ERROR; } / *检查参数* / assert_param(IS_IWDG_ALL_INSTANCE(hiwdg-> Instance)); assert_param(IS_IWDG_PRESCALER(hiwdg-> Init.Prescaler)); assert_param(IS_IWDG_RELOAD(hiwdg-> Init.Reload)); / *启用IWDG。LSI开启automaticaly * / __HAL_IWDG_START(hiwdg); / *通过在KR * / IWDG_ENABLE_WRITE_ACCESS(hiwdg)中写入0x5555来启用对IWDG_PR和IWDG_RLR寄存器的写入访问; / *写入IWDG寄存器Prescaler&Reload值与* / hiwdg-> Instance-> PR = hiwdg-> Init.Prescaler; hiwdg-> Instance-> RLR = hiwdg-> Init.Reload; / *检查未决的标志,如果以前的更新没有完成,则返回超时* / tickstart = HAL_GetTick(); / *等待寄存器更新* / while(hiwdg-> Instance-> SR!= RESET) { if((HAL_GetTick() - tickstart)> HAL_IWDG_DEFAULT_TIMEOUT) { return HAL_TIMEOUT; } } / *在重装载寄存器* /定义的值重新加载IWDG计数器 __HAL_IWDG_RELOAD_COUNTER(hiwdg); / *返回函数状态* / return HAL_OK; } 当实际程序中使用看门狗后,需要在计数时间内不停地喂狗,以防止程序重启。若程序较为复杂,也可通过开启的一个定时器来不停地喂狗,喂狗即让看门狗复位从新计数,调用 __HAL_IWDG_RELOAD_COUNTER(hiwdg)函数来喂狗。
上一篇:lpc1768中结构体在RAM中的存储格式
下一篇:基于arm11处理器S3C6410内核的linux下串口通信实现
推荐阅读最新更新时间:2024-03-16 16:20