PWM配置
1.定义结构体
<1.定义GPIO结构体
GPIO_InitTypeDef GPIO_InitStructure;
<2.定义定时器结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
< 3.定时器输出比较结构体
TIM_OCInitTypeDef TIM_OCInitStructure;
2.开启时钟总线
<1.定时器时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_定时器,ENABLE);
<2.GPIO时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOX, ENABLE);
3.引脚复用为定时器
GPIO_PinAFConfig(GPIOX,GPIO_PinSource引脚,GPIO_AF_定时器); //GPIOF9复用为定时器
4.配置GPIO为推挽复用输出上拉
1.设置GPIO引脚
GPIO_InitStructure.GPIO_Pin = 引脚
2.设置GPIO模式为复用
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
3.设置GPIO输出为推挽
GPIIO_InitStructure.GPIO_OType = GPIO_OType_PP;
4.设置GPIO为上拉
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
5.初始化GPIO
GPIO_Init(GPIOX,&GPIO_InitStructure);
5.配置定时器
1.配置定时器自动重载值
TIM_TimeBaseStructure.TIM_Period = 自动重载值
2.配置定时器分频
TIM_TimeBaseStructure.TIM_Prescaler = 定时器分频
3.配置定时器计数模式为向上计数
TIM_TIMEBaseStructure.TIM_CounterMode = TIM_CounterMode_Up
4.配置定时器时钟分频模式
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
5.初始化定时器
TIM_TimeBaseInit(定时器,&TIM_TimeBaseStructure);
6.配置定时器输出比较
1.选择定时器模式为:TIM脉冲宽度调制
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
2.比较输出使能
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
3.输出极性
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;
4.初始化
TIM_OC1Init(TIM14, &TIM_OCInitStructure);
5.使能预装载寄存器
TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
6.使能ARPE
TIM_ARRPreloadConfig(TIM14,ENABLE);//ARPE使能
7.使能定时器
TIM_Cmd(TIM14, ENABLE);
7.PWM使用
1.修改比较值
TIM_SetCompare1(定时器,比较值);