当前位置:网站首页>虫子 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
边栏推荐
- Firewall and IP security policy configuration
- mysql能不能在linux中使用
- 折半查找法
- For patch rollback, please check the cbpersistent log
- Learning summary of spanquery source code
- APM 工具 SkyWalking 是什么
- 纳瓦尔宝典:不靠运气致富的原则
- How to process large volume xlsx/csv/txt files?
- Tcapulusdb Jun · industry news collection (III)
- 【LeetCode】23. Merge K ascending linked lists
猜你喜欢

The new version of Kali switches the highest account

Google Earth Engine(GEE)——长时间序列逐月VCI数据提取分析和面积计算(墨西哥为例)

Web page dynamic and static separation based on haproxy

直接插入排序

选择排序法

Compilation, installation and global configuration section description of haproxy

Svn local computer storage configuration

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

第一批00后下场求职:不要误读他们的“不一样”
随机推荐
Common events for elements
Is LinkedList a one-way linked list or a two-way linked list?
怎样能在小程序中实现视频通话及互动直播功能?
Half search method
1058 multiple choice questions (20 points)
An implementation of warning bombing
背景彩带动画插件ribbon.js
Stress testing with locust on rainbow
[machine learning] wuenda's machine learning assignment ex2 logistic regression matlab implementation
Full analysis of embedded software testing tool tpt18 update
Apicloud native module, H5 module and multi terminal component tutorial
January 17, 2022: word rule II. Give you a pattern and a character
直接插入排序
Using jhipster to build microservice architecture
centos7 安装 MySQL 及配置 innodb_ruby
Twitter与Shopify合作 将商家产品引入Twitter购物当中
The tax software exits when it detects that it is a virtual machine. How to solve this problem?
TRTC setaudioroute invalid problem
What if the self incrementing IDs of online MySQL are exhausted?
SVG+JS智能家居监控网格布局




























