STM32 4路PWM配置完全函數:STM324路PWM配置完全函數:
void PWM_Configuration(void)//PWM初始化函數
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//定時器初始化結構
TIM_OCInitTypeDef TIM_OCInitStructure;//通道輸出初始化結構
GPIO_InitTypeDefGPIO_InitStructure;//輸出通道的GPIO管腳結構
//(1)TIM3初始化,時間基部分
TIM_TimeBaseStructure.TIM_Period=999; //周期0~999
TIM_TimeBaseStructure.TIM_Prescaler =71; //時鐘分頻
TIM_TimeBaseStructure.TIM_ClockDivision =0; //時鐘分割
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;//模式
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //基本初始化
//TIM_ITConfig(TIM3, TIM_IT_CC4,ENABLE); //打開中斷,中斷需要這行代碼
//(2)TIM3通道初始化 ,CCP部分
TIM_OCStructInit(&TIM_OCInitStructure); //默認參數
TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //工作狀態
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //設定為輸出,需要PWM輸出才需要這行代碼
TIM_OCInitStructure.TIM_Pulse =250; //占空長度
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; //高電平
TIM_OC4Init(TIM3,&TIM_OCInitStructure); //通道初始化 TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //工作狀態
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //設定為輸出,需要PWM輸出才需要這行代碼
TIM_OCInitStructure.TIM_Pulse =500; //占空長度
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; //高電平
TIM_OC3Init(TIM3,&TIM_OCInitStructure); //通道初始化
TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //工作狀態
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //設定為輸出,需要PWM輸出才需要這行代碼
TIM_OCInitStructure.TIM_Pulse =750; //占空長度
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; //高電平
TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM1; //工作狀態
TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //設定為輸出,需要PWM輸出才需要這行代碼
TIM_OCInitStructure.TIM_Pulse =900; //占空長度
TIM_OCInitStructure.TIM_OCPolarity =TIM_OCPolarity_High; //高電平
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_Cmd(TIM3,ENABLE); //使能TIM3,到此在TIM中已配置完成,下面開始配置GPIO
//(3)PWM輸出通道初始化
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//選擇PC
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz; //管腳頻率為50MHZ
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP; //模式為推挽輸出
GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化GPIOA寄存器
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 ,ENABLE);
}
|