用户工具

站点工具


icore3_arm_hal_7
银杏科技有限公司旗下技术文档发布平台
技术支持电话0379-69926675-801
技术支持邮件Gingko@vip.163.com
版本 日期 作者 修改内容
V1.0 2020-04-11 gingko 初次建立

STM32CubeMX教程七——IWDG看门狗实验

1. 新建工程:在主界面选择File–>New Project 或者直接点击ACCEE TO MCU SELECTOR 2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置 在搜索栏的下面,提供的各种查找方式,可以选择芯片内核、型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F407IGTx。

3. 配置RCC,使用外部时钟源  4. 配置调试引脚  5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output  6. 将ARM_KEY对应的引脚(PH15)设置为GPIO_EXTI15  7. 引脚模式配置

  • 三色LED引脚配置

  • ARM_KEY引脚配置,GPIO_EXIT有6种模式,这里选择下降沿触发外部中断。

 8. 配置IWDG  9. 时钟源设置,选择外部高速时钟源,配置为最大主频  10. 工程文件的设置, 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 IDE我们使用的是 MDK5  11. 点击Code Generator,进行进一步配置

  • Copy all used libraries into the project folder
  • 将HAL库的所有.C和.H都复制到所建工程中
    • 优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便
    • 缺点:体积大,编译时间很长
  • Copy only the necessary library files
  • 只复制所需要的.C和.H(推荐)
    • 优点:体积相对小,编译时间短,并且工程可复制拷贝
    • 缺点:新增外设时需要重新用STM32CubeMX导入
  • Add necessary library files as reference in the toolchain project configuration file
  • 不复制文件,直接从软件包存放位置导入.C和.H
    • 优点:体积小,比较节约硬盘空间
    • 缺点:复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径

自行选择方式即可

12. 然后点击GENERATE CODE 创建工程。创建成功,打开工程。

实验七:IWDG看门狗实验——复位ARM

一、 实验目的与意义

  1. 了解STM32 IWDG结构
  2. 了解STM32 IWDG特征
  3. 掌握IWDG的使用方法
  4. 掌握STM32 HAL库中IWDG属性的配置方法
  5. 掌握KEIL MDK 集成开发环境使用方法

二、 实验设备及平台

  1. iCore3 双核心板点击购买
  2. JLINK(或相同功能)仿真器点击购买
  3. Micro USB线缆
  4. Keil MDK 开发平台
  5. STM32CubeMX开发平台
  6. 装有WIN XP(及更高版本)系统的计算机

三、 实验原理

1、看门狗简介

  • 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环。程序的正常运行被打断,由单片机控制的系统无法继续正常工作,会造成整个系统陷入停滞状态,发生不可预料的后果。看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启的电路。看门狗命令在程序的中断中拥有最高的优先级。

2、IWDG简介

  • 此器件具有两个嵌入式看门狗外设,具有安全性高、定时准确及使用灵活的优点。两个看门狗外设(独立和窗口)均可用于检测并解决由软件错误导致的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。
  • 独立看门狗(IWDG)由其专用低速时钟(LSI)驱动,因此即便在主时钟发生故障时仍然保持工作状态。窗口看门狗(WWDG)时钟由APB1时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够安全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精度计时窗口起作用的应用程序。

3、IWDG主要特性

  • (1) 自由运行递减计数器。
  • (2) 时钟由独立RC振荡器提供(可在待机和停止模式下运行)。
  • (3) 当递减计数器值达到0x000时产生复位(如果看门狗已激活)。

  • STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在规定时间喂狗,自动复位ARM。本实验通过按键按下,停止喂狗,制造程序运行错误,从而产生复位。

四、 实验程序

1. 主函数

int main(void)  
{  
  HAL_Init();  
  SystemClock_Config();  
  MX_GPIO_Init();  
  MX_IWDG_Init();  
  while (1)  
  {  
     while(ARM_KEY_STATE == KEY_DOWN); //按键按下进入循环,不再喂狗,2秒后灯熄灭 
        HAL_IWDG_Refresh(&hiwdg);   //喂狗
        LED_RED_ON;  
        LED_GREEN_OFF;  
        LED_BLUE_OFF;  
        HAL_Delay(500); 
        LED_RED_OFF;  
        LED_GREEN_ON;  
        LED_BLUE_OFF;  
        HAL_Delay(500);  
        LED_RED_OFF;  
        LED_GREEN_OFF;  
        LED_BLUE_ON;  
        HAL_Delay(500);  
   }  
}  

2.HAL库独立看门狗函数库

  • 看门狗初始化函数:
HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
  • 喂狗函数:
HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
  • 功能:使用该函数定时喂狗

五、 实验步骤

  1. 把仿真器与iCore3的SWD调试口相连(直接相连或者通过转接器相连);
  2. 把iCore3通过Micro USB线与计算机相连,为iCore3供电;
  3. 打开Keil MDK 开发环境,并打开本实验工程;
  4. 烧写程序到iCore3上;
  5. 也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。

六、 实验现象

  • iCore3双核心板三色LED交替闪烁,当按键按下超过2s,看门狗复位ARM。
icore3_arm_hal_7.txt · 最后更改: 2022/03/18 15:02 由 sean