PWM输出实例:
PWM在电力电子技术中占据着重要的地位,被广泛地用在逆变电路之中。利用STM32定时器的PWM输出功能,可以直接获取PWM波。根据面积等效原理,利用规则采样法、查表法可以调制出SPWM波及各种调制PWM波形。
这里实现的是输入占空比固定的PWM波形
PS:
通用定时器TIM3产生4路不同占空比的PWM波。(仅仅适合本实例))
TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR)* 100 = 50%
TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR)* 100 = 37.5%
TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR)* 100 = 25%
TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR)* 100 = 12.5%
main函数:
int main(void)
{
TIM3_PWM_Init();
while(1)
{}
}
main函数十分简单,调用 TIM3_PWM_Init()把TIM初始化成PWM输出模式后,内核就把所有的工作都交给TIM外设,完全有TIM来控制GPIO引脚输出PWM波.
定时器初始化:
void TIM3_PWM_Init(void)
{
TIM3_GPIO_Config();
TIM3_Mode_Config();
}
调用TIM3_GPIO_Config()作为TIM外设通道复用的GPIO引脚进行初始化,再调用TIM3_Mode_Config()对TIM外设进行初始化.
GPIO初始化:
static void TIM3_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/使能TIM3时钟/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
/使能GPIO引脚 4个通道 GPIOA_Pin6和Pin7 GPIOB_Pin0和Pin1/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(G