浅谈通用定时器的输入捕获输出比较与PWM实现

1.通用定时器(TIM2-TIM5)主要特性

(1)==16 位(TIM3 和 TIM4)==或 32 位(TIM2 和 TIM5) 递增、递减和递增/递减自动重载计数器。

(2)16 位可编程预分频器,用于对计数器时钟频率进行分频 (即运行时修改),分频系数介于 1 到 65536 之间。

(3)多达 4 个独立通道,可用于:
输入捕获
输出比较
PWM 生成(边沿和中心对齐模式)
— 单脉冲模式输出

(4)使用外部信号控制定时器且可实现多个定时器互连的同步电路。

(5)发生如下事件时生成中断/DMA 请求
更新:计数器上溢/下溢、计数器初始化(通过软件或内部/外部触发)
触发事件(计数器启动、停止、初始化或通过内部/外部触发计数)
输入捕获
输出比较

(6)支持定位用增量(正交)编码器和霍尔传感器电路

(7)外部时钟触发输入或逐周期电流管理

2.功能实现

0

2.1输入捕获/输出比较

1

2
3
输入捕获的实现代码(获取key2的按下时间并打印)

//TIM5输入捕获初始化函数
void TIM5_ICInit(u8 PreemptionPriority, u8 SubPriority)
{
   
   
	//开启GPIOA时钟线
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
	//开启TIM5时钟线
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
	
	
	GPIO_InitTypeDef GPIO_InitStructure;
	//引脚配置为复用模式
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	//初始化GPIO
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	//将PA0引脚重映射到TIM5上
	GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5);
	
	//配置时基单元
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStruct.TIM_Period = 10000-1;
	TIM_TimeBaseInitStruct.TIM_Prescaler = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值