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

相关推荐
Aaron15885 小时前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
foundbug9996 小时前
STM32 睡眠模式测试程序
stm32·单片机·嵌入式硬件
wxmtwfx8 小时前
littlefs 源码分析
单片机·littlefs·嵌入式文件系统
嵌入式小站9 小时前
STM32 零基础可移植教程 18:I2C 入门,先用扫描器找一找总线上有没有设备
chrome·stm32·嵌入式硬件
天涯铭10 小时前
深入浅出:单片机I/O口串联电阻选型
单片机·嵌入式硬件·io口串联电阻
国科安芯11 小时前
ASP7A84AS——航天级低噪声高PSRR线性稳压器
网络·单片机·嵌入式硬件·架构·安全性测试
普中科技11 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 42 章 STM32 内部 FLASH 实验
stm32·单片机·嵌入式硬件·开发板·普中科技·内部flash
不做无法实现的梦~12 小时前
CLion+pyocd配置教程
嵌入式硬件
破晓单片机13 小时前
012、STM32项目分享:智能台灯系统
stm32·单片机·嵌入式硬件
悠哉悠哉愿意14 小时前
【单片机复习笔记】十五届国赛复盘
笔记·单片机·嵌入式硬件·学习