当我们需要保证系统稳定运行并防止意外崩溃时,独立看门狗(Independent Watchdog,简称IWDG)是一种非常有用的硬件功能。IWDG是一种硬件定时器,用于定期检测系统是否处于预期状态,并在系统出现异常或超时时进行重置。
在本篇博客文章中,我们将使用CubeMX工具和STM32微控制器来实现一个独立看门狗的实验。我们的要求是开启独立看门狗,设置溢出时间为1秒,并使用按键1进行喂狗操作。我们还将通过UART1串口将喂狗操作的结果打印出来。
硬件接线部分如下:
- 按键1:连接到PA0引脚
- UART1:连接到PA9(发送)和PA10(接收)引脚
所用公式
f的值粗略使用40
以下是实现步骤:
步骤 1:创建新的工程和配置器件
首先,我们需要打开STM32CubeMX,并创建一个新的工程。选择对应的微控制器型号,并确定所需的外设。
步骤 2:配置GPIO外设
在"Pinout & Configuration"选项卡中,配置PA0引脚作为输入引脚并启用上拉电阻。
步骤 3:配置UART1外设
在同一选项卡中,配置UART1外设。选择PA9为发送引脚和PA10为接收引脚,并设置波特率等配置参数。
步骤 4:配置独立看门狗
切换到"Configuration"选项卡,然后在左侧的"System Core"菜单中选择"IWDG(Independent Watchdog)"。
在右侧的配置窗口中,启用独立看门狗,并设置溢出时间为1秒(或者根据需要进行调整)。
步骤 5:生成代码并导出至IDE
点击"Project"菜单,选择生成代码。将生成的代码导出至所使用的集成开发环境(IDE)中。
步骤 6:编写代码
在IDE中打开生成的代码,找到main.c
文件,然后按照以下方式进行修改:
- 在
main()
函数中的while (1)
循环中添加以下代码: -
- 在读取按键操作前,刷新独立看门狗:
HAL_IWDG_Refresh(&hiwdg);
- 在按键操作语句前,添加判断条件来检测按键1的按下:
if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) // 判断按键1是否按下
- 在按键操作结束后,通过UART1将喂狗结果打印出来:
char uart_data[20];
sprintf(uart_data, "Feed watchdog\r\n");
HAL_UART_Transmit(&huart1, (uint8_t *)uart_data, strlen(uart_data), HAL_MAX_DELAY);
代码部分,懂意思就行.
步骤 7:编译和下载代码
完成代码编写后,进行编译并下载到微控制器板上。
步骤 8:测试和验证
启动开发板并连接串口调试工具,将波特率设置为与配置时一致的数值。
在串口调试工具中,可以观察到每隔1秒钟,独立看门狗会喂一次狗。当按下按键1时,可以在串口调试工具中看到"Feed watchdog"的输出。
至此,我们成功使用CubeMX工具和STM32微控制器实现了独立看门狗的实验。通过按键1进行喂狗操作,并且通过UART1串口将喂狗的结果打印出来。
独立看门狗在实际项目中起到了确保系统的可靠性的重要作用。希望这篇教程对您有帮助!
标签:引脚,步骤,代码,独立,看门狗,UART1,实验,按键 From: https://blog.51cto.com/u_16152459/7371337