STM32学习笔记(HAL库)(8)

前 言

本文仅供个人参考记录复习,如有错误或者模糊的地方欢迎指教.

看门狗是一种硬件计时器,它用于监控系统的运行状态并在出现故障或异常情况时采取相应的措施。它类似于一个定时器,如果系统在特定的时间间隔内没有向看门狗喂食,即未及时重置其计时器,那么看门狗将被触发并执行预定的动作,例如软件复位系统。

WDG看门狗

看门狗是一种很重要的硬件功能,0用于监视系统是否正常运行。当系统出现故障或死锁时,看门狗会自动采取措施,以保证系统的稳定性和正确性。

看门狗可以对系统的运行状态进行监控,包括程序计数器、堆栈指针等关键信息,以检测系统是否正常运行。如果系统出现死锁或其他异常情况,例如程序无限循环、中断嵌套等,看门狗就会检测到,并采取相应的措施,如软件复位、中断处理等,以恢复正常运行。当系统出现严重错误时,可能会导致系统挂起,无法响应外部事件或命令。此时,看门狗可以强制复位系统,从而使其恢复到初始状态。

需要我们合理规划程序,对漏洞、故障和干扰提前准备处理办法,最后才使用看门狗对系统复位解决无法预见的问题。

独立看门狗(Independent Watchdog)和窗口看门狗(Window Watchdog)都是常见的看门狗类型

独立看门狗

独立看门狗使用一个定时器来监控系统的运行状态,并在特定的时间间隔内没有喂狗信号时触发动作。通常,独立看门狗可以通过配置一个超时时间来确定系统的响应时间。

        工作原理:当系统正常运行时,会周期性地向独立看门狗发送喂狗信号,重置看门狗计时器,防止其超时触发。如果系统出现故障或死锁,无法正常发送喂狗信号,则看门狗计时器将超时,触发看门狗中断或复位操作,以恢复系统的正常运行状态。

由图可知看门狗计数器溢出后会直接发出复位信号而不是中断,而喂狗即重装载数值,若程序卡死没有及时喂狗,则计算器归零后程序复位。

输入时钟为LSI内部低速时钟,经过8位(256)预分频器分频后驱动12位(4095)递减计数器,需先在键寄存器写入特定数据控制电路喂狗。喂狗时重装载寄存器中的值会被复制在递减计数器中,这时计数器回到重载值重新自减。

超时时间

超时时间指的是看门狗定时器的计数周期。当IWDG开始计数后,如果在超过超时时间之后没有被重置,就会触发看门狗复位。这样可以确保系统在正常运行时定期重置看门狗,以避免系统崩溃或死锁的情况。

超时时间:T_{IDWG} = T_{LSI} * PR * \left ( RL + 1\right )

                 T_{LSI} = \frac{1}{F_{LSI}}

寄存器

键寄存器(IWDG_KR)

用于启动或重载独立看门狗计数器。通过向该寄存器写入特定的值,可以激活、重加载或喂狗。

预分频寄存器(IWDG_PR)

用于设置IWDG的时钟预分频系数。通过修改该寄存器的值,可以改变IWDG计数器的时钟频率,从而影响IWDG的溢出时间。

重装载寄存器(IWDG_RLR)

用于设置IWDG的重装载值。当IWDG计数器达到该值时,会导致IWDG溢出并触发复位。通过修改该寄存器的值,可以调整IWDG的溢出时间。

状态寄存器(IWDG_SR)

用于检查IWDG的状态。其中包含了是否发生了看门狗溢出的标志位。

  窗口看门狗

与独立看门狗不同,窗口看门狗引入了一个时间窗口,在这个时间窗口内喂狗不会触发看门狗。只有在时间窗口外没有喂狗信号时,看门狗才会触发。

        工作原理:窗口看门狗设置了一个较长的超时时间和一个较短的时间窗口。当系统正常运行时,在时间窗口内向窗口看门狗发送喂狗信号可以重置计时器,并防止触发看门狗。只有当系统出现故障或无法在时间窗口内喂狗时,看门狗计时器超时,触发看门狗中断或复位操作。看门狗控制寄存器的T6位既可以当作计算器的值参与递减计数,又可以作为溢出位控制复位。

窗口看门狗相对于独立看门狗具有更高的灵活性和精确性。它可以根据应用需求调整时间窗口的大小,以适应不同的工作模式和时间要求。通过合理配置和使用独立看门狗或窗口看门狗,可以提高系统的可靠性和稳定性,防止由于软件错误或其他异常情况导致的系统故障。

超时时间

超时时间:T_{WWDG}=T_{PCLK1}*4096*WDGTB*\left ( T\left [ 5:0 \right ]+1 \right )

窗口时间:T_{WIN}=T_{PCLK1}*4096*WDGTB*\left ( T\left [ 5:0 \right ]-W\left [ 5:0 \right ]\right )

                 T_{PCLK1}=\frac{1}{F_{PCLK1}}

寄存器

配置寄存器(WWDG_CFR)

配置寄存器用于设置窗口看门狗的工作模式、预分频值和窗口时间。

控制寄存器(WWDG_CR)

控制寄存器用于控制窗口看门狗的启动、停止和重载等操作。

状态寄存器(WWDG_SR)

状态寄存器用于读取窗口看门狗的状态信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!关于STM32F407HAL库的教学,我可以为您提供一些基本信息和指导。 首先,STM32F407HAL库是针对STMicroelectronics的STM32F407系列微控制器而开发的高级抽象层(HAL)库。它提供了一套易于使用的API,用于配置和控制STM32F407微控制器的各种外设功能。 要开始使用STM32F407HAL库,您需要准备以下工具和资源: 1. STM32F407微控制器开发板:您可以选择使用官方的Discovery开发板或其他兼容的开发板。 2. STM32CubeMX:这是STMicroelectronics提供的一个图形化配置工具,用于生成基本的项目框架和初始化代码。 3. STM32Cube HAL库:这是STM32F407HAL库的核心部分,可以从STMicroelectronics的官方网站上下载。确保选择与您的微控制器型号相对应的版本。 4. 集成开发环境(IDE):您可以选择使用Keil MDK、IAR Embedded Workbench或者STM32CubeIDE等IDE来编写、编译和调试代码。 一旦您准备好了上述工具和资源,您可以按照以下步骤开始使用STM32F407HAL库: 1. 使用STM32CubeMX创建一个新的工程,并选择适当的微控制器型号(例如STM32F407VG)。 2. 在配置选项中选择您需要的外设功能(如GPIO、UART、SPI等)并进行相应的配置。 3. 生成代码并导出到您选择的IDE中。 4. 打开IDE,编写您的应用程序代码,包括初始化和配置外设、处理中断、控制和读取外设等。 5. 编译代码并下载到STM32F407开发板上进行调试和测试。 除了上述步骤,您还可以参考官方的文档、示例代码和教程来学习更多关于STM32F407HAL库的使用方法。STMicroelectronics的官方网站上提供了丰富的资源,包括参考手册、应用笔记和视频教程。 希望这些信息能够帮助您入门STM32F407HAL库学习和使用。如有任何进一步的问题,请随时向我提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值