TIM输入捕获

输入捕获的概念

IC(Input Capture)输入捕获

4个输入捕获和输出比较通道,共用4个CCR寄存器,另外它们的CH1到CH4,4个通道的引脚,也是共用的(最左边和最右边),所以对于同一个寄存器,输入捕获和输出比较只能使用其中一个,不能同时使用

输入捕获模式下,当通道输入引脚出现指定电平跳变(上升沿和下降沿,可以通过程序配置)时,发生电平跳变的瞬间,输入捕获电路会干些啥呢?会让当前CNT的值将被锁存到CCR中(把当前CNT的值读出来,写到CCR中去),(目的是)可用于测量PWM波形的频率、占空比、脉冲间隔(和频率差不多的意思)、电平持续时间(和占空比差不多)等参数

对比一下输出比较,就是,输出比较,引脚是输出端口,输入捕获引脚是输入端口,输出比较,是根据CNT和CCR的大小关系来执行输出动作,输入捕获是接收到输入信号,执行CNT锁存到CCR的动作

每个高级定时器和通用定时器都拥有4个输入捕获通道(输入捕获电路,通用定时器和高级定时器没有区别,都是一样,基本定时器没有输入捕获的功能)

可配置为PWMI(PWM的输入模式)模式,同时测量频率和占空比

可配合主从触发模式,实现硬件全自动测量

后面这两条,PWMI模式和主从触发模式,设计的非常巧妙,把这两个功能结合起来,测量频率占空比就是硬件全自动执行,软件不需要进行任何干预,也不需要进中断,需要测量的时候,直接读取CCR寄存器就行了,极大的减轻了软件的压力

频率测量

8:45

输入捕获测频率

先用PWM模块,在PA0端口输出一个频率和占空比可调的波形,本节代码测量波形的输入口是PA6,所以我们需要将信号发生器和PA6连一起(也可以PA0连一起,这样就能测量自己PWM模块产生波形的频率了)

程序:

c 复制代码
#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "PWM.h"
#include "IC.h"

int main(void)
{
	OLED_Init();
	PWM_Init();
	IC_Init();
	
	OLED_ShowString(1, 1, "Freq:00000Hz");
	
	PWM_SetPrescaler(720  - 1);			//Freq = 72M / (PSC + 1) / 100
	PWM_SetCompare1(50);				//Duty = CCR / 100
	
	while (1)
	{
		OLED_ShowNum(1, 6, IC_GetFreq(), 5);
	}
}

现象:

目前这个程序只能测频率,还不能测量占空比,如果想同时测量频率和占空比,STM32的输入捕获还设计了一个PWMI模式,即PWM输入模式

PWMI模式测频率占空比

相关推荐
千秋岁rr27 分钟前
5.0 TIM
单片机·嵌入式硬件
小僧景贤1 小时前
STM32 startup.s 启动文件与 .map 映射文件深度技术解析(md/hd 版本差异化对比)
stm32·内存映射·startup.s·map 文件·单片机启动流程
2601_966799043 小时前
CH398 技术解析:USB 3.0转千兆以太网单芯片方案与内置电源设计要点
单片机·嵌入式硬件
zlinear数据采集卡4 小时前
数据采集卡从入门到精通(38):上位机开发实战——Python/QT/LabVIEW的技术选型与分层架构
python·单片机·嵌入式硬件·qt·fpga开发·开源·labview
嵌入式阿蔡4 小时前
项目实战 02:智能家居环境网关——ESP32 做 BLE 中心 + 本地联动
网络·单片机·嵌入式硬件·esp32·智能家居·嵌入式实时数据库
自小吃多5 小时前
Capture软件原理图添加差分属性笔记
笔记·嵌入式硬件
简单电磁炮5 小时前
ADXL345调试
单片机·嵌入式硬件
LCG元5 小时前
STM32 软件模拟 I2C 驱动 AT24C02 EEPROM:从时序原理到实测读写全记录
stm32·单片机·嵌入式硬件
振南的单片机世界5 小时前
终端电阻硬核拆解:不接120Ω,RS485信号“撞墙反弹”乱码
arm开发·stm32·单片机·嵌入式硬件
恒锐丰科技韩生6 小时前
SS6625E|3.0‑20V 单通道 16A 峰值 H 桥直流电机驱动 SOP8 门锁玩具机器人专用
嵌入式硬件·硬件工程