目录
(一)简介
(二)CUBEMX工程配置
(三)相关函数
总结:
(一)简介
独立看门狗本质是一种定时器,其作用是监视系统的运行,当系统发生错误(如程序卡死,程序跑飞)时,能自动让系统复位;观察cubemx中的时钟树可以发现,IWDG是由LSI提供32KHz的时钟,而IWDG内部可以对LSI时钟进行分频,预分频系数从4~256(须为2的次幂);并且系统复位时,IWDG的12位递减计数器初值为4095,在启动IWDG后,计数器递减计数,当计数值为0时,系统复位;所以如果程序正常运行的话,必须在规定时间里刷新IWDG内递减计数器的值(这就是大家说的“喂狗”),以防止系统复位;另外,根据预分频系数可以算出IWDG的最长超时,如下表所示;计算方法为:T = 1 / (32KHz / 预分频系数)* 4096(注意K表示10e3,k才是2e10);
预分频系数 | 超时/ms |
---|---|
/4 | 512 |
/8 | 1024 |
/16 | 2048 |
/32 | 4096 |
/64 | 8192 |
/128 | 16384 |
/256 | 32768 |
(二)CUBEMX工程配置
在cubemx中,只需要开启IWDG,并配置预分频系数和递减计数值即可:
(三)相关函数
IWDG相关函数(非常少,所以直接贴上来):
1、初始化:HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);初始化之后自动启动;
2、喂狗:HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);
3、宏:__HAL_IWDG_START(__HANDLE__) ;启动iwdg,启动后不可关闭;
4、宏:__HAL_IWDG_RELOAD_COUNTER(__HANDLE__);重置计数值,也就是喂狗;
5、宏:IWDG_ENABLE_WRITE_ACCESS(__HANDLE__);使预分频reg和重载reg可写入;
6、宏:IWDG_DISABLE_WRITE_ACCESS(__HANDLE__);使预分频reg和重载reg不可写入;
IWDG使用方法非常简单,只需要在计数值减为0之前,按时喂狗即可,否则就会重启系统(常称为“狗叫”);
总结:
其实相关内容有许多,比如说定时器(基本、通用、高级)、RTC时钟、ADC、DAC、SPI、I2C、CAN等等等等,但是感觉没有必要全部再来一遍,当需要用到的时候,再重新捡起来(因为具体内容确实有点忘了,,,),毕竟时间、精力有限;其实自我感觉学习这些知识最重要的是去学会了如何发现问题->找相关资料->学习->解决问题,一条龙服务 :D
Fighting!~~~
完~
以上均为个人学习心得,如有错误,请不吝赐教~
THE END