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模式测频率占空比

相关推荐
ytttr8737 小时前
基于STM32和W5500芯片的Modbus TCP协议栈实现
stm32·嵌入式硬件
上大科技蔡生7 小时前
CS5715:2.7V~26V宽输入,单节锂电池适用,最高36V输出,省掉电感电流检测电阻,软启动时间可调,异步升压DCDC控制器
单片机·嵌入式硬件·dcdc
芯思路8 小时前
STM32开发学习笔记之三【按键】
笔记·stm32·学习
CQ_YM8 小时前
51单片机(1)
单片机·嵌入式硬件·51单片机
qq_401700418 小时前
单片机之ADC(模拟数字转换器)
单片机·嵌入式硬件
无事好时节8 小时前
51 单片机GPIO / 按键 / 中断 / 定时器 / PWM
单片机·嵌入式硬件
一枝小雨10 小时前
【OTA专题】17 打通Bootloader与App逻辑之间的通信
stm32·单片机·嵌入式·流程图·freertos·ota·bootloader
2401_8633186312 小时前
基于单片机的家庭防盗报警系统
单片机·嵌入式硬件
一枝小雨13 小时前
【OTA专题】18 OTA性能优化:优化bootloader存储空间与固件完整性校验(CRC)
stm32·单片机·性能优化·嵌入式·freertos·ota·bootloader
iYun在学C13 小时前
驱动程序(注册字符设备)
linux·嵌入式硬件