最让我头大的是初始化函数的各个参数的设置,在这里给出pwm_init的模板
pwm.h:
#include "pwm.h"
void TIM14_PWM_init(u32 arr, u32 psc) //arr为定时器的自动装载值(决定周期),cnt达到arr时io要置0,psc为预分频系数
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE); //使能TIM14的时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //使能GPIOF的时钟
//初始化IO口
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_PuPd_UP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
//响应IO口复用映射到响应寄存器
GPIO_PinAFConfig(GPIOF, GPIO_PinSource9, GPIO_AF_TIM14);
//初始化定时器
TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //定时器分频
TIM_TimeBaseInit