TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//复用输出 TIM_TimeBaseInitStructure.TIM_Period = 20000 - 1; //ARR 周期为20000-1,表示每隔20毫秒产生一次PWM输出 TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1; //PSC 预分频器为72-1,即时钟频率为72MHz,表示每个时钟周期划分为72个计数周期 TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//PWM1模式 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性为高电平有效 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;//使能输出状态 TIM_OCInitStructure.TIM_Pulse = 0; //CCR 空比通过修改TIM2->CCR1-4寄存器的值来实现 TIM_OC1Init(TIM2, &TIM_OCInitStructure); TIM_OC2Init(TIM2, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE);
时间: 2024-01-18 09:32:26 浏览: 168
TIM_test.rar_STM32 TIM_STM32 定时器_TIM_Test
这段代码片段使用了STM32的定时器TIM2来产生PWM输出。首先,通过对TIM_TimeBaseInitStructure结体的成员进行赋值,配置定时器的时钟分频、计模式、周期和预分频器等参数。然后,使用TIM_TimeBaseInit函数将TIM_TimeBaseInitStructure的配置应用到TIM2定时器上。
接下来,通过定义TIM_OCInitStructure结构体,并调用TIM_OCStructInit函数对其进行初始化。然后,对TIM_OCInitStructure的成员进行赋值,配置了PWM的工作模式、输出极性、使能输出状态和初始占空比等参数。
然后,分别调用TIM_OC1Init和TIM_OC2Init函数将TIM_OCInitStructure的配置应用到TIM2定时器的通道1和通道2上。
最后,通过调用TIM_Cmd函数使能TIM2定时器。
这段代码的作用是配置TIM2定时器为PWM输出模式,并设置周期为20毫秒,预分频器为72,输出占空比为0。可以根据需要修改这些参数以实现不同的PWM输出功能。
阅读全文