app开发流程大致包括,企业网站排名软件度智能优化,怎么样利用一些网站开发客户,企业运营管理流程图目录
概述
1 认识独立看门狗 (IWDG)
1.1 定义独立看门狗 (IWDG)
1.2 IWDG 主要特性
2 IWDG 功能说明
2.1 IWDG 框图
2.2 IWDG 内部信号
2.3 窗口选项
2.3.1 Enable WIN IWDG
2.3.2 Disable WIN IWDG
2.4 硬件看门狗
2.5 低功耗冻结
2.6 停止和待机模式下的行为
…目录
概述
1 认识独立看门狗 (IWDG)
1.1 定义独立看门狗 (IWDG)
1.2 IWDG 主要特性
2 IWDG 功能说明
2.1 IWDG 框图
2.2 IWDG 内部信号
2.3 窗口选项
2.3.1 Enable WIN IWDG
2.3.2 Disable WIN IWDG
2.4 硬件看门狗
2.5 低功耗冻结
2.6 停止和待机模式下的行为
2.7 寄存器访问保护
2.8 调试模式
3 IWDG 寄存器
3.1 键寄存器 (IWDG_KR)
3.2 预分频器寄存器 (IWDG_PR)
3.3 重载寄存器 (IWDG_RLR)
3.4 状态寄存器 (IWDG_SR)
3.5 窗口寄存器 (IWDG_WINR)
4 STM32Cube配置IWDG
4.1 配置IWDG
4.2 理解配置参数
5 IWDG库函数
5.1 初始化函数: HAL_IWDG_Init
5.2 重载计数 HAL_IWDG_Refresh 概述
本文详细介绍了STM32H7系统独立看门狗 (IWDG)的相关知识包括IWDG的实现原理其在STM32系统中时钟的关系寄存器的内容和配置方法等。还使用STM32Cube配置一个简单的Demo来做验证。
1 认识独立看门狗 (IWDG)
1.1 定义独立看门狗 (IWDG)
此器件具有一个嵌入式看门狗外设具有安全性高、定时准确及使用灵活的优点。此独立看门狗外设可检测并解决由软件错误导致的故障并在计数器达到给定的超时值时触发系统复位。
独立看门狗 (IWDG) 由其专用低速时钟 (LSI) 驱动因此即便在主时钟发生故障时仍然保持工作状态。
IWDG 最适合应用于需要看门狗作为一个在主程序之外能够完全独立工作并且对时间精度要求较低的应用。
1.2 IWDG 主要特性
1自由运行递减计数器
2时钟由独立 RC 振荡器提供可在待机和停止模式下运行
3复位条件 - 当递减计数器值小于 0x000 时复位如果看门狗已激活 - 在窗口之外重载递减计数器时复位如果看门狗已激活
2 IWDG 功能说明
2.1 IWDG 框图 1 通过向键寄存器 (IWDG_KR) 中写入值 0x0000 CCCC 来启动独立看门狗时
2 计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值 (0x000) 时会产生一个复位信号 IWDG 复位。
3任何时候将键值 0x0000 AAAA 写到键寄存器 (IWDG_KR) 中 IWDG_RLR 的值就会被重载到计数器从而避免产生看门狗复位。
2.2 IWDG 内部信号 2.3 窗口选项
1通过在窗口寄存器 (IWDG_WINR) 中设置合适的窗口 IWDG 也可以用作窗口看门狗。
2当计数器值大于窗口寄存器 (IWDG_WINR) 中存储的值时如果执行重载操作则会产生复位。
3窗口寄存器 (IWDG_WINR) 的默认值为 0x0000 0FFF因此如果不更新此默认值将禁止窗口选项。
4窗口值一经更改便执行重载操作以便将递减计数器复位为重载寄存器 (IWDG_RLR)值并方便计算周期数以生成下一次重载。
2.3.1 Enable WIN IWDG
使能窗口选项时配置 IWDG方法
1. 通过在键寄存器 (IWDG_KR) 中写入 0x0000 CCCC 来使能 IWDG。
2. 通过在键寄存器 (IWDG_KR) 中写入 0x0000 5555 来使能寄存器访问。
3. 通过将预分频器寄存器 (IWDG_PR) 编程为 0~7 中的数值来配置 IWDG 预分频器。
4. 对重载寄存器 (IWDG_RLR) 进行写操作。
5. 等待寄存器更新 (IWDG_SR 0x0000 0000)。
6. 对窗口寄存器 (IWDG_WINR) 进行写操作。这会自动刷新重载寄存器 (IWDG_RLR) 中的 计数器值。
2.3.2 Disable WIN IWDG
不使用窗口选项时可按以下步骤配置 IWDG
1. 通过在键寄存器 (IWDG_KR) 中写入 0x0000 CCCC 来使能 IWDG。
2. 通过在键寄存器 (IWDG_KR) 中写入 0x0000 5555 来使能寄存器访问。
3. 通过将预分频器寄存器 (IWDG_PR) 编程为 0~7 中的数值来配置预分频器。
4. 对重载寄存器 (IWDG_RLR) 进行写操作。
5. 等待寄存器更新 (IWDG_SR 0x0000 0000)。
6. 刷新计数器值为 IWDG_RLR 的值 (IWDG_KR 0x0000 AAAA)。
2.4 硬件看门狗
1如果通过器件选项位使能“硬件看门狗”功能上电时将自动使能看门狗
2如果在计数器计数结束前若软件没有向键寄存器 (IWDG_KR) 写入相应的值或者在窗口内部重载了递减计数器则系统会产生复位。
2.5 低功耗冻结
根据 IWDG_FZ_STOP 和 IWDG_FZ_STBY 选项配置 IWDG 可分别在停止模式和待机模式期间继续计数或停止计数。如果停止模式或待机模式期间 IWDG 保持运行它可从此模式唤醒器件。
2.6 停止和待机模式下的行为
一旦运行 IWDG 便无法停止。
2.7 寄存器访问保护
预分频器寄存器 (IWDG_PR)、 重载寄存器 (IWDG_RLR) 和窗口寄存器 (IWDG_WINR) 寄存器具有写访问保护。若要对其进行修改用户必须首先对键寄存器 (IWDG_KR) 写入代码0x0000 5555。 而写入其他值则会破坏该序列从而使寄存器访问保护再次生效。这表示重载操作即写入 0x0000 AAAA也会启动写保护功能。
状态寄存器指示预分频值、递减计数器重载值或窗口值是否正在被更新。
2.8 调试模式
当微控制器进入调试模式时内核停止 IWDG 计数器会根据 DBG 模块中DBG_IWDG_STOP 配置位选择继续正常工作或者停止工作。
3 IWDG 寄存器
3.1 键寄存器 (IWDG_KR)
偏移地址 0x00 复位值 0x0000 0000待机模式时复位
位 31:16 保留必须保持复位值。
位 15:0 KEY[15:0] 键值 (Key value)只能写读为 0x0000
1必须每隔一段时间便通过软件对这些位写入键值 0xAAAA否则当计数器计数到 0 时看门狗 会产生复位。
2写入键值 0x5555 可使能对 IWDG_PR、 IWDG_RLR 和 IWDG_WINR 寄存器的访问 3写入键值 0xCCCC 可启动看门狗选中硬件看门狗选项的情况除外
3.2 预分频器寄存器 (IWDG_PR)
偏移地址 0x04 复位值 0x0000 0000
位 31:3 保留必须保持复位值。位 2:0 PR[2:0] 预分频系数 (Prescaler divider) 这些位受写访问保护寄存器访问保护。通过软件设置这些位来选择计数器时钟的预分频因子。若要更改预分频器的分频系数 状态寄存器 (IWDG_SR) 的 PVU 位必须为 0。 000 4 分频 001 8 分频 010 16 分频 011 32 分频 100 64 分频 101 128 分频 110 256 分频 111 256 分频
注 读取该寄存器会返回 VDD 电压域的预分频器值。如果正在对该寄存器执行写操作则读取的值可能不是最新的/有效的。因此只有在状态寄存器 (IWDG_SR) 中的 PVU 位为 0时从寄存器读取的值才有效。
3.3 重载寄存器 (IWDG_RLR)
偏移地址 0x08 复位值 0x0000 0FFF待机模式时复位 位 31:12 保留必须保持复位值。位 11:0 RL[11:0]看门狗计数器重载值 (Watchdog counter reload value)
这些位受写访问保护请参见寄存器访问保护。
这个值由软件设置每次对键寄存器 (IWDG_KR) 写入值 0xAAAA 时这个值就会重装载到看门狗计数器中。之后看门狗计数器便从该装载的 值开始递减计数。超时周期由该值和时钟预分频器共同决定。有关超时信息请参见数据手册。 若要更改重载值 状态寄存器 (IWDG_SR) 中的 RVU 位必须为 0。
注 读取该寄存器会返回 VDD 电压域的重载值。如果正在对该寄存器执行写操作则读取的值可能不是最新的/ 有效的。因此只有在状态寄存器 (IWDG_SR) 中的 RVU 位为 0时从寄存器读取的值才有效。
3.4 状态寄存器 (IWDG_SR)
偏移地址 0x0C 复位值 0x0000 0000待机模式时不复位
位 31:3 保留必须保持复位值。
位 2 WVU 看门狗计数器窗口值更新 (Watchdog counter window value update) 可通过硬件将该位置 1 以指示窗口值正在更新。当在 VDD 电压域下完成重载值更新操作后需 要多达 5 个 RC 40 kHz 周期会通过硬件将该位复位。窗口值只有在 WVU 位为 0 时才可更新。此位只有在通用“窗口” 1 时才生成
位 1 RVU 看门狗计数器重载值更新 (Watchdog counter reload value update) 可通过硬件将该位置 1 以指示重载值正在更新。当在 VDD 电压域下完成重载值更新操作后需 要多达 5 个 RC 40 kHz 周期会通过硬件将该位复位。重载值只有在 RVU 位为 0 时才可更新。
位 0 PVU 看门狗预分频器值更新 (Watchdog prescaler value update) 可通过硬件将该位置 1 以指示预分频器值正在更新。当在 VDD 电压域下完成预分频器值更新操作后需要多达 5 个 RC 40 kHz 周期会通过硬件将该位复位。预分频器值只有在 PVU 位为 0 时才可更新。
3.5 窗口寄存器 (IWDG_WINR)
偏移地址 0x10 复位值 0x0000 0FFF待机模式时复位
位 31:12 保留必须保持复位值。位 11:0 WIN[11:0] 看门狗计数器窗口值 (Watchdog counter window value)
这些位受写访问保护它们包含用于与递减计数器进行比较的窗口值上限。 为防止发生复位当递减计数器的值低于窗口寄存器值且大于 0x0 时必须重载。若要更改重载值 状态寄存器 (IWDG_SR) 中的 WVU 位必须为 0。
4 STM32Cube配置IWDG
4.1 配置IWDG
使能IWDG 配置IWDG工作时钟 4.2 理解配置参数
使用STM32Cube配置的参数内容如下 IWDG使用的系统时钟为 fclk 32K Hz分频系数为 prescaler 4
窗口复位时钟周期为
Tc 4/32 000 * 4095 511.875 ms
5 IWDG库函数
5.1 初始化函数: HAL_IWDG_Init
函数原型
HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
使用Demo:
/* IWDG1 init function */
void MX_IWDG1_Init(void)
{/* USER CODE BEGIN IWDG1_Init 0 *//* USER CODE END IWDG1_Init 0 *//* USER CODE BEGIN IWDG1_Init 1 *//* USER CODE END IWDG1_Init 1 */hiwdg1.Instance IWDG1;hiwdg1.Init.Prescaler IWDG_PRESCALER_4;hiwdg1.Init.Window 4095;hiwdg1.Init.Reload 4095;if (HAL_IWDG_Init(hiwdg1) ! HAL_OK){Error_Handler();}/* USER CODE BEGIN IWDG1_Init 2 *//* USER CODE END IWDG1_Init 2 */}
5.2 重载计数 HAL_IWDG_Refresh
函数原型
HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
在4.2节中通过使用STM32Cube配置的参数算的一个最大复位的时间为511.875 ms如果该时间到了之后没有调用 HAL_IWDG_Refresh函数此时MCU将复位。