这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
iwdg看门狗实验_复位arm [2020/07/04 09:43] zgf |
iwdg看门狗实验_复位arm [2022/03/22 10:18] (当前版本) sean |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | |||
+ | | **银杏科技有限公司旗下技术文档发布平台** |||| | ||
+ | |技术支持电话|**0379-69926675-801**||| | ||
+ | |技术支持邮件|Gingko@vip.163.com||| | ||
+ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
+ | | V1.0 | 2020-07-04 | gingko | 初次建立 | | ||
===== 实验六:IWDG看门狗实验——复位ARM ===== | ===== 实验六:IWDG看门狗实验——复位ARM ===== | ||
行 9: | 行 15: | ||
- 掌握KEIL MDK 集成开发环境使用方法。 | - 掌握KEIL MDK 集成开发环境使用方法。 | ||
==== 二、 实验设备及平台 ==== | ==== 二、 实验设备及平台 ==== | ||
- | - iCore4 双核心板。 | + | - iCore4 双核心板[[https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22598974120.15.5923532fsFrHiE&id=551864196684|点击购买]]。 |
- | - JLINK(或相同功能)仿真器。 | + | - JLINK(或相同功能)仿真器[[https://item.taobao.com/item.htm?id=554869837940|点击购买]]。 |
- Micro USB线缆。 | - Micro USB线缆。 | ||
- Keil MDK 开发平台。 | - Keil MDK 开发平台。 | ||
行 27: | 行 33: | ||
* 当递减计数器值达到0x000时产生复位(如果看门狗已激活)。 | * 当递减计数器值达到0x000时产生复位(如果看门狗已激活)。 | ||
* 在窗口之外重载递减计数器时复位(如果看门狗已激活)。 | * 在窗口之外重载递减计数器时复位(如果看门狗已激活)。 | ||
- | + | {{ :icore4:icore4_arm_hal_6_1.png?direct |}} | |
* 看门狗功能由 VCORE 电压域供电,在停止模式和待机模式下仍能工作。 | * 看门狗功能由 VCORE 电压域供电,在停止模式和待机模式下仍能工作。 | ||
* 通过向键寄存器 (IWDG_KR)中写入值 0x0000 CCCC 来启动独立看门狗时,计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值(0x000)时会产生一个复位信号(IWDG复位)。 | * 通过向键寄存器 (IWDG_KR)中写入值 0x0000 CCCC 来启动独立看门狗时,计数器开始从复位值 0xFFF 递减计数。当计数器计数到终值(0x000)时会产生一个复位信号(IWDG复位)。 | ||
* 任何时候将键值 0x0000 AAAA写到IWDG_KR寄存器中, IWDG_RLR的值就会被重载到计数器,从而避免产生看门狗复位。 | * 任何时候将键值 0x0000 AAAA写到IWDG_KR寄存器中, IWDG_RLR的值就会被重载到计数器,从而避免产生看门狗复位。 | ||
- | + | {{ :icore4:icore4_arm_hal_6_1.png?direct |}} | |
=== 4、IWDG寄存器 === | === 4、IWDG寄存器 === | ||
行 37: | 行 43: | ||
* 该寄存器的各位描述如图: | * 该寄存器的各位描述如图: | ||
- | + | {{ :icore4:icore4_arm_hal_6_1.png?direct |}} | |
* 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。 | * 在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。 | ||
* IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 | * IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。将其他值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 | ||
行 43: | 行 49: | ||
* 该寄存器用来设置看门狗时钟的分频系数,最低为4,最高位256,该寄存器是一个32位的寄存器,但是我们只用了最低3位,其他都是保留位。预分频寄存器各位定义如图所示: | * 该寄存器用来设置看门狗时钟的分频系数,最低为4,最高位256,该寄存器是一个32位的寄存器,但是我们只用了最低3位,其他都是保留位。预分频寄存器各位定义如图所示: | ||
- | + | {{ :icore4:icore4_arm_hal_6_1.png?direct |}} | |
== (3)重装载寄存器(IWDG_RLR) == | == (3)重装载寄存器(IWDG_RLR) == | ||
* 该寄存器用来保存重装载到计数器中的值。该寄存器也是一个32位寄存器,但是只有低12位是有效的,该寄存器的各位描述如图所示: | * 该寄存器用来保存重装载到计数器中的值。该寄存器也是一个32位寄存器,但是只有低12位是有效的,该寄存器的各位描述如图所示: | ||
- | + | {{ :icore4:icore4_arm_hal_6_1.png?direct |}} | |
* 只要对以上三个寄存器进行相应的设置,我们就可以启动 STM32F7 的独立看门狗。 | * 只要对以上三个寄存器进行相应的设置,我们就可以启动 STM32F7 的独立看门狗。 | ||
* 这里我们还要特别说明一下,STM32F7的独立看门狗还可以当做窗口看门狗使用,这是通过配置窗口寄存器IWDG_WINR来实现的。当我们没有设置IWDG_WINR寄存器的时候,独立看门狗就是我们前面讲解的工作过程,窗口计数器从其复位值0xFFF递减计数,当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET),只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。如果我们设置了IWDG_WINR寄存器的值(不等于0xFFF),那么当计数器值大于窗口值(IWDG_WINR)的值的时候如果执行重装操作,则会产生复位。所以我们必须在计数器的值在IWDG_WINR和0之间的时候执行重载,也就形成了一个窗口的概念。本实验我们将不设置IWDG_WINR寄存器的值,也就是不开启窗口功能。 | * 这里我们还要特别说明一下,STM32F7的独立看门狗还可以当做窗口看门狗使用,这是通过配置窗口寄存器IWDG_WINR来实现的。当我们没有设置IWDG_WINR寄存器的时候,独立看门狗就是我们前面讲解的工作过程,窗口计数器从其复位值0xFFF递减计数,当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET),只要键寄存器IWDG_KR中被写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器中从而避免产生看门狗复位。如果我们设置了IWDG_WINR寄存器的值(不等于0xFFF),那么当计数器值大于窗口值(IWDG_WINR)的值的时候如果执行重装操作,则会产生复位。所以我们必须在计数器的值在IWDG_WINR和0之间的时候执行重载,也就形成了一个窗口的概念。本实验我们将不设置IWDG_WINR寄存器的值,也就是不开启窗口功能。 |