STM32标准库通用定时器输出比较

STM32标准库通用定时器输出比较

1. 初始化

void TIM2_Init()
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);                 //使能TIM2时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);                //使能GPIOA时钟
	
	GPIO_InitTypeDef GPIO_InitStructure;                                //定义一个GPIO_InitTypeDef类型的结构体
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;                  //定义一个TIM_TimeBaseInitTypeDef类型的结构体
	TIM_OCInitTypeDef TIM_OCInitStructure;                              //定义一个TIM_OCInitTypeDef类型的结构体
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                           //选择要控制的GPIO引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                     //设置GPIO的模式为复用推挽
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                   //设置GPIO的输出速度为50MHz
	GPIO_Init(GPIOA,&GPIO_InitStructure);                               //初始化GPIOA
	
	TIM_TimeBaseInitStructure.TIM_Period = 1000-1;                      //设置在向上计数模式下计数器自动重装的值
	TIM_TimeBaseInitStructure.TIM_Prescaler = 7200-1;                   //设置预分频的值
	TIM_TimeBaseInitStructure.TIM_ClockDivision  = TIM_CKD_DIV1;		//设置时钟分割:TDTS = Tck_tim
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;		//设置计数器模式:向上计数
	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);					//初始化TIM2
	
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Active;					//设置TIM2的通道3为PWM模式1
	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;		//使能TIM2的通道3输出
	TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;			//设置TIM2的通道3空闲状态为高电平
	TIM_OC3Init(TIM2,&TIM_OCInitStructure);								//初始化TIM2的通道3
	
	TIM_OC3PreloadConfig(TIM2,TIM_OCPreload_Enable);					//使能TIM2的通道3的预装载寄存器
	
	TIM_CtrlPWMOutputs(TIM2,ENABLE);									//使能TIM2的通道3的输出
	
	TIM_Cmd(TIM2,ENABLE);												//启动TIM2
}

输出比较模式与PWM模式大致相同,区别只有TIM_OCMode参数的不同。

  • TIM_OCMode:定时器比较模式
    • TIM_OCMode_Timing:定时器输出冻结,在这种情况下,不会触发输出通道的输出
    • TIM_OCMode_Active:单脉冲输出模式,在这种情况下会输出一个脉冲然后将输出通道置高
    • TIM_OCMode_Inactive:单脉冲输出模式,在这种情况下会输出一个脉冲然后将输出通道置低
    • TIM_OCMode_Toggle:定时器输出翻转模式,在这种情况下,通道会输出类似PWM的方波,但是该方波占空比固定为50%,且周期为同配置下PWM波的2倍。
    • TIM_OCMode_PWM1:定时器输出PWM模式1,在这种情况下,通道会输出PWM方波,占空比可变。
    • TIM_OCMode_PWM2:定时器输出PWM模式2,在这种情况下,通道会输出PWM方波,占空比可变,但该方波与TIM_OCMode_PWM1输出的方波反相。
posted @ 2024-03-11 21:34  T7H  阅读(138)  评论(0编辑  收藏  举报