最近再做一个带蓝牙接口的血压计项目,项目中使用了STM32F10364引脚的MCU,在硬件设计中,因为外设较多,导致每个通用定时器至少有两个PWM输出引脚被占用,现在要控制RGB灯,只能用一个普通IO引脚模拟PWM输出。
相关的硬件电路设置如下:
GPIOA1------------------------------RGBBLUE灯
GPIOB1------------------------------RGBGREEN灯
GPIOD2------------------------------RGBRED灯
RGB灯采用了共阳极电路,所以在PWM的输出急性设置时,将极性设置为高电平,定时器的初始化如下图所示:
void initLedTimer( void ){
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_DeInit( TIM2 );
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure );
TIM_TimeBaseStructure.TIM_Period =TIMER_PERIOD;
TIM_TimeBaseStructure.TIM_Prescaler =TIMER_PRESCALER;
TIM_TimeBaseStructure.TIM_ClockDivision= TIM_CKD_DIV1; // 不分频
TIM_TimeBaseStructure.TIM_CounterMode =TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,