STM32F0(5)定时器PWM
扫描二维码
随时随地手机看文章
// 经过下面的设置之后,该设置的引脚就会产生PWM波
void TIM1_PWM_Init(void)
{
// 配置引脚的复用功能
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
GPIOA->AFR[1] |= 0x00000002;
GPIOA->MODER |= GPIO_MODER_MODER8_1;
GPIOA->MODER &= ~GPIO_MODER_MODER8_0;
GPIOA->OSPEEDR |= GPIO_OSPEEDR_OSPEEDR8;
GPIOA->OTYPER |= GPIO_OTYPER_OT_8;
// 配置PWM波的相关属性
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // 开启该定时器的时钟开关
// OC1M -- 控制PWM波模式
TIM1->CCMR1 |= (TIM_CCMR1_OC1PE | TIM_CCMR1_OC1FE | TIM_CCMR1_OC1M);
TIM1->PSC = 0; // 预分频寄存器
TIM1->ARR = 256; // 自动重装载值 == 频率值
TIM1->CCR1 = 0; // 占空比的值,控制占空比的数值不同从而控制输出波形
// 开启 1 ,2 ,3 , 4哪一个通道的开关,以及输出引脚有效电平
TIM1->CCER |= TIM_CCER_CC1E;
TIM1->BDTR |= TIM_BDTR_MOE; // PWM波输出使能
TIM1->CR1 |= TIM_CR1_CEN; // 定时器使能
}