本文不提供完整程序,僅點出要點
1:時鐘配置。因為PWM輸出屬于復用功能,所以時鐘使能必須使能RCC_APB2Periph_AFIO ;
2:IO口使能。因為PWM屬于復用功能,所以IO輸出設置要配置成GPIO_Mode_AF_PP;而不能配置成普通輸出IO的GPIO_Mode_OUT_PP模式;
3:PWM初始化代碼如下,本程序只用通道3輸出,所以pwm輸出只配置了通道3,TIM_OC3Init(TIM3, &TIM_OCInitStructure);需要多通道輸出PWM則需要配置多個PWM輸出通道,通過改變TIM_Pulse 的值可以改變pwm的占空比(可以通過直接操作寄存器TIM3->CCR3=2400來實現)。
/* Time Base configuration */
TIM_TimeBaseStructure.TIM_Prescaler = 0; //預分頻為0
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上計數
TIM_TimeBaseStructure.TIM_Period = 4800; //8191=8.789 KHz, 4095=17.57 KHz,頻率太高超過人耳聽力范圍
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //時鐘分頻系數為0
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; //計數周期數為0
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //TIM3配置參數寫入
/* Channel 1, 2,3 and 4 Configuration in PWM mode */
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //pwm模式選擇PWM2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道輸出使能
// TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //反向通道輸出使能
TIM_OCInitStructure.TIM_Pulse = 2400; //占空比設置
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //正向通道輸出極性
//TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCPolarity_Low; //反向通道輸出極性
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set; //正向通道閑散電平
//TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; //反向通道閑散電平
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Disable);
TIM_ClearITPendingBit(TIM3,TIM_IT_CC3);
TIM_Cmd(TIM3, ENABLE);
TIM_CtrlPWMOutputs(TIM3, ENABLE);
上一篇:STM32-----NVIC
下一篇:STM32的時鐘系統
- 熱門資源推薦
- 熱門放大器推薦