//这是初始化程序
void TIM8_PWM_Init(u16 Period)//高级定时器
{
GPIO_InitTypeDef GPIO_InitStruct;//定义GPIO_Init初始化结构体
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;//定义TIM_TimeBaseInit的初始化结构体
TIM_OCInitTypeDef TIM_OCInitStruct;//定义TIM_OC1234Init初始化的结构体变量
//开启TIM8时钟,配置PC6 7 8 9为复用输出
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8,ENABLE);
//使能GPIO外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//设置该引脚为复用输出功能,输出 TIM8 CH1234 的PWM脉冲波形
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStruct);
//设置TIM8的ARR和PSC
TIM_TimeBaseInitStruct.TIM_ClockDivision=0;//设置时钟分割(?)
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
TIM_TimeBaseInitStruct.TIM_Period=Period;
TIM_TimeBaseInitStruct.TIM_Prescaler=71;
TIM_TimeBaseInit(TIM8,&TIM_TimeBaseInitStruct);//在tim.h里1055行
//设置 TIM8_CH1234 的PWM模式及通道方向,使能TIM8的CH1输出
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式
TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High;//输出极性为高
TIM_OCInitStruct.TIM_Pulse=0;//CRRx的值
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OC1Init(TIM8,&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式
TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High;//输出极性为高
TIM_OCInitStruct.TIM_Pulse=0;//CRRx的值
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OC2Init(TIM8,&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式
TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High;//输出极性为高
TIM_OCInitStruct.TIM_Pulse=0;//CRRx的值
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OC3Init(TIM8,&TIM_OCInitStruct);
TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;//PWM1模式
TIM_OCInitStruct.TIM_OCNPolarity=TIM_OCPolarity_High;//输出极性为高
TIM_OCInitStruct.TIM_Pulse=0;//CRRx的值
TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OC4Init(TIM8,&TIM_OCInitStruct);
//CH1234预装载使能
TIM_OC1PreloadConfig(TIM8,TIM_OCPreload_Enable);
TIM_OC2PreloadConfig(TIM8,TIM_OCPreload_Enable);
TIM_OC3PreloadConfig(TIM8,TIM_OCPreload_Enable);
TIM_OC4PreloadConfig(TIM8,TIM_OCPreload_Enable);
//使能TIMx的预装载寄存器
TIM_ARRPreloadConfig(TIM8,ENABLE);
//使能TIM8
TIM_Cmd(TIM8,ENABLE);//使能TIM8
//高级定时器-接着弄-设置MOE输出,使能PWM输出
TIM_CtrlPWMOutputs(TIM8,ENABLE);//tim.h的1068行
}
如果不是初始化错了,有可能是其他什么原因呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>