STM32 独立看门狗&基本定时器

本文详细介绍了STM32中看门狗的工作原理、使用方法以及IWDG的具体实现,同时探讨了基本定时器的结构、计数方式和溢出事件计算,以及如何在HAL库中配置这两种定时器。
摘要由CSDN通过智能技术生成

一.看门狗

1.1   了解看门狗

1.1.1什么是看门狗?

看门狗是一种递减的计数器,当递减的计数器的值为0时,该系统将被复位。看门狗分为两种IWDG(独立看门狗)与窗口看门狗。

1.1.2看门狗的使用

看门狗被激活后,要进行对应的“喂狗”操作,既不让在程序正常进行的过程中被复位,将看门狗的计数器重装载值定时的赋给计数器,达到值不为0。看门狗的时钟源由内部RC振荡器提供,为低速时钟,因此可在待机,睡眠的情况下计数。

1.1.3stm32的五种复位方式

1.1.4看门狗的作用

由于看门狗主要检测系统的各种问题(陷入问题后程序会卡死,不会喂狗),所以该系统的稳定性高时才会应用到,但由于RC振荡器的时钟并不精准,所以被应用的系统时间精度要求也应较低。

1.2.1IWDG的框图

在看门狗被激活后,LSI时钟(RC振荡器)会被自动开启,经过了8位预分频后,会进入到计数器。由四个寄存器控制该流程。

1.2.2看门狗寄存器

(1)看门狗状态寄存器:当硬件电路检测到看门狗的重装值与PCR发生变化后,会自动地把标志位置1,需要在软件中把标志位清0后才可以进行下次变化。

(2)看门狗重装计数器:看门狗的重装载值是12位的,有写保护功能,如果需要进行改变,需要将KR寄存器写入相应的值5555并且RVU标志位清0。没有缓冲寄存器。

(3)预分频寄存器:3位有效,可以通过图上找到对应的分频系数,公式为4*2prer次方,同样的只有PUV清0后并kr写入5555才可以改变值。

(4)建寄存器,三种写入值,四种读出返回值如图。AAAA是重新赋计数器,5555是解除写保护。CCCC在硬件看门狗时,不需要使用,因为看门狗分为软件与硬件,硬件看门狗只需要将其使能便可开启,并无法关闭,软件看门狗需要进行配置。

1.3.1HAL库配置

在HAL库中,看门狗的结构体配置为一个基地址+一个结构体,HAL库封装了,因此只需要写入要写的两种值(写保护与使能已经封装),并且用户写一个喂狗函数(定期AAAA)

 二.基本定时器

在STM32中,定时器共分为三大类,其中常规定时器为主要用途工具,常规定时器又分为三类。

1.1基本定时器简介 

1.1.1定时器基础

如图所示,即为寄存器工作原理。

三种不同的定时器的功能与复杂程度各不相同

1.1.2基本定时器介绍

16位递增计数器,16位预分频器,可触发DAC,产生中断与DMA请求。

1.1.2时钟频率

基本定时器挂在在APB1总线上,但是APB1的分频几乎都为2,因此基本定时器的时钟频率通常也用最大72MHZ。APB1仍是1.

通过时钟来的信号经过总线变频后,进去定时器内,首先经过触发控制器(一种控制TIMER功能的寄存器),进入时基单元。当CNT=ARR(重装载寄存器)的值时,发生寄存器溢出。溢出会产生事件与中断请求、DMA输出。其中PSC与ARR是缓冲寄存器,既存在影子寄存器工作,影子寄存器不可以直接访问。

 1.1.3影子寄存器

影子寄存器是一种寄存器缓冲机制,因为定时器通常应用在持续计数的系统中,因此不能让寄存器的ARR与PCR改变时突然赋给寄存器,可能会造成数据丢失与程序错误,因此引用了缓冲寄存器与影子寄存器搭配的方法,当某一时序的ARR与PCR改变时,系统会等到该时序产生溢出后,再将缓冲寄存器的改变值赋给影子寄存器。

如图是影子寄存器的配置方式,可选存不存在。当定时器的溢出周期一致时,可不选用缓冲功能,但是当系统功能对定时器溢出周期需求不一致时,要开启定时器缓冲,因为在堆栈的函数调用中,cpu的运行也是需要时间的,会造成时间不精准(例如,要做一个LED灯,1ms亮,2ms灭间隔闪烁,此时由于溢出时间不同,因此要改变定时器的重装值,而cpu将没有缓冲作用的定时器重装值赋给寄存器时也是需要时间的,所以会导致时间不精确,如果使用了缓冲作用,cpu会在赋值之前就把新的值放在缓冲寄存器中,溢出后影子寄存器立马获得新值,时间不误差)

1.1.4中断位

在定时器产生溢出时,会出现中断请求,开启中断使能时,中断标志位会被挂起。

 1.2.1溢出事件计算

思路,F(频率)/PSC(分频系数)的倒数得到每计数一次的时间。再将此时间*ARR的值,即可得出溢出时间。看门狗定时器同理,但是是递减。

 1.3.1定时器的三种计数方式

1CNT=ARR

2CNT=0

3CNT=ARR-1(上升中)CNT=1(下降中)

如图为中央对齐时序的实例,备忘分析。

1.4库函数 

1.4.1定时器HAL库函数配置

在使能中断的过程中,1需要线将初始化函数配置,

2其次进行时钟,NVIC配置,

3使能配置 4设置中断,并编写中断函数与回调函数

1.4.2基本定时器的配置

 

在基本定时器中,只需要配置基地址,预分频系数,计数模式,arr,是否开启缓冲寄存器(自动重装) 。

 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值