当前位置:网站首页>虫子 STM32 高级定时器 (哈哈我说实话硬件定时器不能体现实力,实际上想把内核定时器发上来的,一想算了,慢慢来吧)
虫子 STM32 高级定时器 (哈哈我说实话硬件定时器不能体现实力,实际上想把内核定时器发上来的,一想算了,慢慢来吧)
2022-06-23 03:44:00 【华为云】
高级定时器
时钟源
这里先说一下时钟源百分之99用内部的,其他3个基本不用,下面三个当做了解,有地方错了,有点迷糊
- 内部时钟源CK_INT
- 外部时钟模式1—外部的GPIO Tix(x=1 2 3 4)
- 外部时钟模式2—外部的GPIO ETR
- 内部触发输入
内部时钟源
- 内部时钟源来自RCC的TIMx_CLK
- TIMx_CLK等于多少呢?如何确定?
外部时钟模式1
时钟信号输入引脚
- 外部的GPIO TIx,对应:TIMx_CH1/2/3/4
- TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1 控制 TI1/2, CCMR2 控制 TI3/4
滤波器
- 如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的
- 由TIMx_CCMRx 的位 ICxF[3:0]配置
边沿检测
- 边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。
- 由 TIMx_CCER 的位 CCxP 和 CCxNP 配置
触发选择
- 当使用外部时钟模式 1 时,触发源有两个,一个是滤波后的定时器输入 1( TI1FP1)和滤波后的定时器输入 2( TI2FP2)
- 由 TIMx_SMCR 的位 TS[2:0]配置
使能计数器
- 经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 1 的配置就算完成。
- 使能计数器由 TIMx_CR1 的位 CEN 配置。
外部时钟模式2
时钟信号输入引脚
当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR,只有 1 个。
外部触发极性
- 来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效
- 具体的由 TIMx_SMCR的位 ETP 配置
外部触发预分频器
- 由于 ETRP 的信号的频率不能超过 TIMx_CLK( 180M)的 1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频
- 具体的由 TIMx_SMCR 的位 ETPS[1:0]配置
滤波器
- 如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的,需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的
- 具体的由 TIMx_SMCR 的位 ETF[3:0]配置,其中的 fDTS 是由内部时钟 CK_INT 分频得到,具体的由 TIMx_CR1 的位CKD[1:0]配置
从模式选择
- 经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。
- 具体的配置 TIMx_SMCR 的位 ECE 为 1即可选择外部时钟模式 2
使能计数器
- 经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 2 的配置就算完成
- 使能计数器由 TIMx_CR1 的位 CEN 配置。
内部触发输入
- 内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。
- 由TIMx_SMCR 的位 TS[2:0]配置
控制器
- 控制器就是用来控制的,发送命令的
- CR1、CR2、SMCR、CCER,主要学习这几个寄存器即可。
时基单元
时基单元的组成
- 16位的预分频器 PSC,PSC
- 16位的计数器CNT, CNT
- 8位的重复计数器RCR,RCR(高级定时器独有)
- 16位的自动重装载寄存器ARR,ARR
输入捕获
输入通道
当使用需要被测量的信号从定时器的外部引脚 TIMx_CH1/2/3/4 进入,通常叫 TI1/2/3/4,在后面的捕获讲解中对于要被测量的信号我们都以 TIx 为标准叫法。
输入滤波和边沿检测
捕获通道
预分频器
- ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。
- 具体的由寄存器 CCMRx 的位 ICxPSC 配置,如果希望捕获信号的每一个边沿,则不分频。
捕获寄存器
输出比较
输出比较寄存器
死区发生器
带死区插入的半桥驱动电路
带死区插入的互补输出波形图
输出控制
输出引脚
输入捕获的应用
测量脉宽和频率
PWM输入模式
- 输出比较模式总共有 8 种,常用的是PWM模式。
- 由寄存器 CCMRx 的位 OCxM[2:0]配置。
代码
首先我们选好脚,这里我们用高级定时器
PWM互补输出实验,带死区时间,带刹车控制
互补需要两个脚,死区可以软件配置,刹车还需要一个脚。我们只能用高级定时器1了,没有8
边栏推荐
猜你喜欢

JS Part 4

Insert sort directly
![[two points] leetcode1011 Capacity To Ship Packages Within D Days](/img/fd/c6f31a44ebaf41bd5ab2a342f10d06.png)
[two points] leetcode1011 Capacity To Ship Packages Within D Days

两招提升硬盘存储数据的写入效率

在 KubeSphere 上部署 Apache Pulsar

Full analysis of embedded software testing tool tpt18 update

AI video cloud vs narrowband HD, who is the favorite in the video Era

AI 视频云 VS 窄带高清,谁是视频时代的宠儿

Static code block, code block, constructor execution order

冒泡排序法
随机推荐
This point (II)
How to print array contents
数据加密技术之源代码加密
What is the difference between the poll () method and the remove () method?
MySQL data recovery (.Ibdata1, bin log)
聊聊内存模型和内存序
pyspark,有偿询问数据清洗和上传到数据库的问题
The power of code refactoring: how to measure the success of refactoring
Goframe framework: quick creation of static file download web service
APM 工具 SkyWalking 是什么
【LeetCode】179. 最大数
mysql存储引擎之Myisam和Innodb的区别
仿360桌面悬浮球插件
【LeetCode】179. Maximum number
What is the difference between ArrayList and LinkedList?
元素的常用事件
第一批00后下场求职:不要误读他们的“不一样”
Half search method
[two points] leetcode1011 Capacity To Ship Packages Within D Days
mysql优化,sql执行非常卡顿,不改变sql结构达到10秒内结束




























