stm32单片机个人学习笔记9(TIM输入捕获)

前言

本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

一、简介

二、频率测量

三、输入捕获通道

四、主从触发模式

从模式选择Reset模式可以实现自动清零计数器CNT

五、输入捕获基本结构

六、PWM输入模式基本结构

七、实例一(输入捕获测频率)

IC.c

复制代码
#include "stm32f10x.h"                  // Device header

void IC_Init(void)
{
	//开启内部时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
	
	//GPIO口初始化
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	//设置为内部时钟模式
	TIM_InternalClockConfig(TIM3);
	
	//时基单元初始化
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1;			//ARR
	TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;		//PSC
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);
	
	//输入捕获通道初始化
	TIM_ICInitTypeDef TIM_ICInitStructure;
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
	TIM_ICInitStructure.TIM_ICFilter = 0xF;
	TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
	TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
	TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	
	//配置主从触发模式
	TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);
	TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);
	
	//使能定时器
	TIM_Cmd(TIM3, ENABLE);
}

uint32_t IC_GetFreq(void)
{
	return 1000000 / (TIM_GetCapture1(TIM3)+1);
}

八、实例二(PWMI模式测频率占空比)

输入通道初始化时添加一个指令

复制代码
	TIM_ICInitTypeDef TIM_ICInitStructure;
	TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
	TIM_ICInitStructure.TIM_ICFilter = 0xF;
	TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
	TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
	TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
	TIM_ICInit(TIM3, &TIM_ICInitStructure);
	TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);

最后一句会把结构体成员改变,通道1改为通道2,上升沿触发改为下降沿触发,直连方式改为交互连接

相关推荐
济6177 分钟前
STM32SPI实验:外部Flash掉电记忆实验---STM32 HAL库专栏
stm32·嵌入式·stm32hal库编程
我在人间贩卖青春8 分钟前
U(S)ART 串口应用
单片机·串口·uart·usart
似水明俊德15 分钟前
16-C#.Net-自研ORM框架-学习笔记
windows·笔记·学习·c#·.net
m0_7388202017 分钟前
Tailwind CSS 完整学习笔记
css·笔记·学习
人邮异步社区19 分钟前
大一学生如何入门机器学习,深度学习,学习顺序如何?
深度学习·学习·机器学习
_李小白26 分钟前
【OSG学习笔记】Day 4: 矩阵变换
笔记·学习·矩阵·图形渲染
2201_7548647833 分钟前
学习日记(2026年3月24日)
学习
sensen_kiss37 分钟前
CPT304 SoftwareEngineeringII 软件工程 2 Pt.1软件危机
学习·软件工程
xw-busy-code2 小时前
sass学习笔记整理
笔记·学习·sass