STMCU小助手
发布时间:2022-4-7 11:36
|
实验内容: 一、原理图
——————————————————独立看门狗—————————————————— 二、 CubeMX配置 Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。
Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。
Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这两个引脚用于其他复用功能,如果用于其他复用功能,debug就不起作用了。)
Step4.配置LED灯所涉及到的GPIO口方便我们观察实验现象。
Step5.设置独立看门狗的参数,因为独立看门狗的时钟是由内部低速时装钟LSI提供,时钟值为40KHZ,我们这边设置分频值为64(寄存器的值为4),计数值为3125,计算可得看门狗超时时间为 64*(3125+1)/40000=5S,超时时间 Tout = (rlv+1)*(4*2^prv) / 40000 (s) ,prv 是预分频器寄存器的值,rlv 是 重装载寄存器的值。
到这里关于相关参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。 三、添加功能代码 因为设置的是超时时间为5s,所以只要在5s内喂狗就可以,代码可以通过设置不同的延时时间得到不同实验现象。同时代码中,通过检测标志位区别上电复位和看门狗复位,注意标志位需要手动清除。
——————————————————窗口看门狗—————————————————— 二、 CubeMX配置 Step1-Step4的配置与独立看门狗基本一致,所以参考独立看门狗即可。 Step5.串口配置(主要为了在串口调试助手显示调试数据),因为没有用到中断和DMA所以我们就不过多讲解。
Step6.窗口看门狗的配置。PCLK1时钟频率为36M,计数器时钟频率为CNTCK=PCLK1/4096/(2^WDGTB)。因为分频数配置为8分频,即WDGTB=3,计一个数的时间TCNT=1/PCLK1=910us。窗口值最大值设置为0X49(73),最小值默认为0x40(64),计数的值为0X7F(127),最大超时时间:(127-64+1)*0.91=58.24ms,最小超时时间:(127-73+1)*0.91=50ms, 所以喂狗的时间段为:50ms-58.24ms。
到这里关于相关参数配置基本已经完成,只需要根据之前文章《STM32Cube HAL:GPIO输入/输出(一)》Step4-Step8,设置相关工程参数和生成代码。 三、添加功能代码 1、我们等会会向串口调试助手发送数据,进行实验结果的验证。 发送数据我们采用printf函数,所有需要重定向c库函数printf到串口。注意使用时需要在keil设置中勾选微库(use mircolib),同时需要添加头文件#include <stdio.h>。
2、在主函数while(1)循环中添加检测语句,用于检测计时是够到达窗口值(喂狗的时间段)。在实际程序中,需要计算程序的实际运行时间再来设置窗口值。
3、如果没有正常喂狗,进入死前中断函数,进行一些重要数据的处理。
关于看门狗的重点: 1、独立看门狗和窗口看门狗的区别
2、看门狗超时时间的设置。 |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版