首页 > 其他分享 >STM32基本定时器

STM32基本定时器

时间:2024-01-18 20:13:19浏览次数:23  
标签:基本 分频 定时器 TIMx 更新 STM32 计数器 缓存 寄存器

STM32基本定时器

1.时基单元

  • 计数寄存器 (TIMx_CNT)
    • 计数器从0累加计数到自动重装载数值(TIMx_ARR寄存器),然后重新从0开始计数并产生一个计数器溢出事件。
  • 预分频寄存器 (TIMx_PSC)
    • 它也有缓存,也是在更新事件产生时刷新缓存。
  • 自动重装载寄存器(TIMx_ARR)
    • 设置此值。计数器达到这个值,溢出。
    • 可以给此值设置缓存,这个缓存被称为影子寄存器。 当TIMx_CR1的ARPE位为1时,表示有缓存;否则没有。
    • 有缓存时:更新缓存的时机是 更新事件(计数器溢出或者TIMx_EGR寄存器的UG位为1)产生 时。所以缓存有时不是实时的值。

2.时序中的一些概念

  • CK_PSC : 预分频寄存器的时钟,也就是内部系统时钟,用来控制预分频寄存器的工作频率。

  • CNT_EN : 计数寄存器的使能,对应TIMx_CR1的CEN位,开启后计数器才能计数。

  • CK_CNT : 计数器的频率,也就是分频后的频率,一个频率计数寄存器加一。

  • 计数器寄存器: 每个频率加一。

  • 更新事件(UEV): 一个逻辑的概念,一般计数器溢出或者TIMx_EGR寄存器的UG位为1时产生。

    • 当发生一次更新事件时,所有寄存器会被更新并(根据URS位)设置更新标志(TIMx_SR寄存器的

      UIF位)。

    • 立即产生中断的问题原因是:预分频寄存器的缓存为没分频前的数,频率越高,计数越快,很快就加到了溢出,所以置位后很短时间就产生了一次中断。只有更新事件发生时,才会更新缓存。

    • 解决立即产生中断的问题时,我们可以在设置中断使能之前将UG设置为1,让缓存在中断打开前就更新,之后再将TIMx_SR的UIF位置0,告诉系统我们没有产生更新事件。另外,如果设置了TIMx_CR1寄存器中的URS(选择更新请求),设置UG位可以产生一次更新事件UEV,但不设置UIF标志(即没有中断或DMA请求)。

  • 预分频控制寄存器:也就是预分频寄存器,保存的值为分频的数,想7200分频,就存7199。

  • 预分频器缓冲器: 预分频寄存器的缓冲区,在更新事件产生时更新缓冲区的值。

  • 预分频器计数器: 一个内部时钟周期加一,也就是计算定时器时钟走到当前时走了几个内部时钟。

标签:基本,分频,定时器,TIMx,更新,STM32,计数器,缓存,寄存器
From: https://www.cnblogs.com/wangsiyaoa/p/17973287

相关文章

  • 嵌入式操作系统的一些基本概念
    1、前后台系统一些对实时性要求不那么严格的基于芯片的开发会采用前后台系统架构来进行开发,前后台系统前台由中断构成,后台由一个顺序处理任务的无限循环构成。//中断服务程序voidkeyHandle();voiduartHandle();//主函数intmain(intargc,char**argv){BSP......
  • stm32笔记[12]-LoRa通信
    摘要在蓝桥杯物联网的CT127C开发板上测试LoRa通信;Node_A按下按钮触发按键中断,经过定时器消抖后触发LoRa发送函数并切换LED的状态,Node_B接收到数据后在屏幕显示累计次数.开发环境Keil5.35.00HAL库版本:STM32CubeFW_L0V1.12.0STM32CubeMX:6.2.1原理简介LoRa简介[htt......
  • 基本的DOS命令
    基本的DOS命令打开COM的方法**1.点击开始+系统+命令提示符**2.在任意文件夹下面按住shift+鼠标右键点击打开3.win+r,输入cmd**4.管理员方式运行**常用的DOS命令盘符切换查看当前目录下的所有文件dir切换目录cd返回上级目录cd..清理屏幕cls推出终端exit查......
  • (五):ElasticSearch基本概念
    1、ElasticSearchElasticsearch是面向文档(documentoriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearc......
  • pip基本用法
    pip简介pip是一个安装和管理Python包的工具,类似RedHat里面的yum,安装Python包非常方便。安装完Python,就自带了pip工具,如下图: pip基本用法查看已经安装的包piplist 安装包pipinstallpytest,是安装最新版本如果要安装指定版本,先查看包所有版本:pipinstallpytest== 选择7.1.2pip......
  • RocketMQ消息客户端生产与消费的基本实现
    支撑环境JDK:javaversion"1.8.0_391"应用框架:org.springframework.boot:2.7.17RocketMQ客户端SDK:rocketmq-spring-boot-starter:2.2.3生产者消息提供者添加依赖implementation'org.apache.rocketmq:rocketmq-spring-boot-starter:2.2.3'添加配置application.......
  • Dijkstra基本内容
    众所周知,Dijkstra算法是一个十分有效且常用的算法.既然说了,有效且常用那我们就有课学习的必要了呀!话不多说,开始讲解.概念1.是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。Dijkstra算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点......
  • stm32硬件实现IIC
    #include"Driver_IIC.h"#include"Delay.h"/***IIC默认地工作于从模式。*生成起始条件后自动地从从模式切换到主模式,*当仲裁丢失或产生停止信号时,从主模式切换到从模式。***从模式用于接收数据;主模式用于发送数据。*//***初始化*/voidDriver_II......
  • STM32系统开发--位、字节操作
    针对MCU的嵌入是开发中经常涉及到寄存器的操作,例如GPIO配置低寄存器GPIOx_CRL(共32个bit),有时需要改变其中的一位或者几位bit值,同时不能影响其它bit位的值。 例如,需要设置第0位bit=1时,不能简单的设置为:GPIOx_CRL=0x01,这样的方法会使得低配置寄存器GPIOx_CRL的其它比特位都置......
  • mysql基本数据类型范围与存储说明
    一、整型数据类型存储方式整型数据类型是Mysql中最常用的数据类型之一,其存储方式如下:(默认是有符号,即取值范围是正负范围;无符号,即取值范围就是正值范围)1.TINYINT:占用1个字节,范围为-128~127。2.SMALLINT:占用2个字节,范围为-32768~32767。3.MEDIUMINT:占用3个字节,范围为-8388608~8......