STM32——基本定时器(TIM6,TIM7)工作过程,解读功能框图,时序分析,周期计算

本文主要是介绍STM32——基本定时器(TIM6,TIM7)工作过程,解读功能框图,时序分析,周期计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定时器的基本功能:

(1)定时发送USART数据

(2)定时采集AD数据

(3)测量输入信号的脉冲宽度

(4)采集输出波形

(5)产生PWM控制电机状态

 STM32定时器包括2个高级控制定时器,10个通用定时器和2个基本定时器

 基本定时器

功能:定时功能,产生时基,驱动数模转换器

两个基本定时器TIM6和TIM7,功能完全一样,所用资源彼此独立,可以同时使用

工作过程:TIM6和TIM7是16位向上递增寄存器,在自动重载寄存器(TIMx_ARR)添加一个计数值后并使能TIMx,计数寄存器(TIMx_CNT)就会从0开始递增,当TIMx_CNT的数值与TIMx_ARR的数值相同时,就会生成事件,并把TIMx_CNT清0,完成一次循环过程,如果不停止计时器就循环执行上述过程。

 基本定时器功能框图

 图中带有阴影的方框(自动重载寄存器,PSC预分频器),方框里的内容就是寄存器的名称,阴影表示这个寄存器还自带影子寄存器,在硬件结构上实际上有2个寄存器,源寄存器是我们可以进行读写的,而影子寄存器我们不能操作,由内部硬件使用。影子寄存器是在程序运行过程中真正起作用的,源寄存器是使用者读写用到的,只有在特定的时候,才把源寄存器的值拷贝到影子寄存器,多个影子寄存器有i其实用可以达到同步更新多个寄存器内容的目的。

 图中的自动重装载寄存器有影子寄存器,它左边的事件图标U表示在更新事件生成时就把自动重装在寄存器的内容拷贝进影子寄存器。寄存器右边的事件图标,中断和DMA输出图标表示当自动重载寄存器的值计数器寄存器的值相等时生成事件,中断和DMA输出

基本定时器的时钟源

定时器要实现技术必须有时钟源,基本定时器的时钟只能来自始终内部,高级控制定时器和通用定时器还可以选择外部时钟源或者直接来自其他定时器的等待模式

定时器时钟频率的设置(RCC_DCKCFGR)

 一般设置该位默认值0,即TIMxCLK位总线时钟的2倍,使得TIM6和TIM7的最大定时器时钟位84MHz,即基本定时器的内部时钟(CK_INT)的频率为84MHz。

 基本定时器只能使用内部时钟,当TIM6和TIM7控制寄存器1(TIMx_CR1)的CEN位置1时,启动基本定时器,预分频器的时钟来源就是CK_INT

 

 控制器

定时器控制器控制实现定时器功能,控制定时器复位,使能,计数是其基础功能,基本定时器还专门用于DAC转换触发

计数器

基本定时器的技术过程主要设计三个寄存器的内容,计数器寄存器(TIMx_CNT),预分频器寄存器(TIMx_PSC),自动重载寄存器(TIMx_ARR),这3个寄存器都是16位有效数字,可设置的值为(0,2^16-1)即(0,65535)

(1)TIMx_PSC

由图可知,预分频器PSC有一个输入时钟CK_PSC输出时钟CK_CNT,输入时钟CK_PSC来源于控制器部分,基本定时器只有内部时钟源,所以CK_PSC实际等于CK_INT,即84MHz。通过设置PSC的值可以得到不同的CK_CNT,计算方法如下图所示

 基本定时器的时序分析

4分频过程分析

(1) 原来是1分频,CK_PSC和CK_CNT频率相同。

(2)向TIMx_PSC中写入新值时,并不会马上改变CK_CNT的输出频率

(3)当事件更新时,把TIMx_PSC的寄存器的值更新到影子寄存器中,使其真正产生效果,更新为4分频后,在CK_PSC连续产生4个脉冲后CK_CNT才产生一个脉冲

(4)在定时器使能(CEN=1)时,计数器COUNTER根据CK_CNT的频率向上计数,每有一个CK_CNT的脉冲,TIMx_CNT的值就加1

(5)当TIMx_CNT的值与TIMx_ARR的设定值相等时,自动生成事件,TIMx_CNT自动清0,然后自动开始重新计数,如此循环上述过程

(6)自动重载寄存器TIMx_ARR用来存放计数器值比较的数值,如果两个数值相等就生成事件,将相关事件标志位置位,生成DMA和数据中断输出。TIMx_ARR有影子寄存器,可以通过TIMx_CR1寄存器的ARPE位控制影子寄存器功能,ARPE=1,影子寄存器有效,只有在事件更新时,才把TIMx_ARR的值赋值给影子寄存器,ARPE=0,修改TIMx_ARR值马上有效。

 定时器周期计算

定时器的事件生成时间主要由TIM_PSC和TIMx_ARR两个寄存器值决定,这个也就是定时器的周期。比如,我们需要1s的定时器,那么这两个寄存器的值如何设置?

(1)先设置TIMx_ARR的值为9999,也就是当TIMx_CNT从0开始计算,刚好等于9999时生成事件,总共计数10000次

(2)此时,时钟源周期为100μs即可刚好得到1s的定时周期(100μsx10000=1000000μs=1000ms=1s)

(3)设置TIMx_PSC寄存器值使CK_CNT输出100μs周期(10000Hz)的时钟,预分频器的输入时钟CK_PSC为84MHZ,所以设置预分频器值为(8400-1)就可以满足(84000000/(8400-1+1)=10000)

这篇关于STM32——基本定时器(TIM6,TIM7)工作过程,解读功能框图,时序分析,周期计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261656

相关文章

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

SpringCloud负载均衡spring-cloud-starter-loadbalancer解读

《SpringCloud负载均衡spring-cloud-starter-loadbalancer解读》:本文主要介绍SpringCloud负载均衡spring-cloud-starter-loa... 目录简述主要特点使用负载均衡算法1. 轮询负载均衡策略(Round Robin)2. 随机负载均衡策略(

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和