STM32F1通用定时器输出比较模式寄存器配置例程(以TIM2通道1为例),实现效果是PA0引脚输出PWM波
void tim2CH1OutputCompare(uint16_t psc,uint16_t arr,uint16_t ccr)
{
RCC->APB1ENR|=(1<<0); //Timer2 clock enabled
RCC->APB2ENR|=(1<<0); //Alternate Function I/O clock enabled
RCC->APB2ENR|=(1<<2); //IO port A clock enabled
GPIOA->CRL|=(3<<0); //Output mode,max speed 50Mhz
GPIOA->CRL|=(1<<3); //Alternate function output Push-pull
GPIOA->CRL&=~(1<<2);
AFIO->MAPR&=~(3<<8); //No remap
TIM2->SMCR&=~(7<<0); //Internal clock
TIM2->ARR = arr;
TIM2->CCR1= ccr;
TIM2->DIER|=(1<<0); //Update interrupt enable
TIM2->DIER|=(1<<1); //Capture/Compare 1 interrupt enable
TIM2->CCMR1|=(3<<4); //Output compare 1 mode:Toggle
TIM2->CCMR1&=~(1<<3); //Preload register on TIMx_CCR1 disabled
TIM2->CCER|=(1<<0); //OC1 signal is output on the corresponding output pin
TIM2->CCER&=~(1<<1); //OC1 active high
TIM2->CR1|=(1<<0); //Counter enabled
}
具体配置要求请参考STM32F1系列芯片的参考手册