stm32f103c8t6开启定时器4并配置PB8和PB9为PWM输出
时间: 2023-08-09 20:09:38 浏览: 329
好的,以下是配置代码:
```c
// 使能 GPIOB 时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;
// 配置 GPIOB.8 和 GPIOB.9 为复用推挽输出
GPIOB->CRH &= ~(GPIO_CRH_CNF8 | GPIO_CRH_CNF9 | GPIO_CRH_MODE8 | GPIO_CRH_MODE9);
GPIOB->CRH |= GPIO_CRH_CNF8_1 | GPIO_CRH_CNF9_1 | GPIO_CRH_MODE8_1 | GPIO_CRH_MODE9_1;
// 使能定时器 4 时钟
RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;
// 配置 TIM4 为 PWM 模式,计数器时钟为 72MHz,自动重载值为 999
TIM4->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1;
TIM4->CCMR1 &= ~(TIM_CCMR1_OC1M_0 | TIM_CCMR1_OC2M_0);
TIM4->PSC = 0;
TIM4->ARR = 999;
// 配置输出比较通道 1 和 2 的占空比
TIM4->CCR1 = 500; // PB8 的占空比为 50%
TIM4->CCR2 = 250; // PB9 的占空比为 25%
// 使能输出比较通道 1 和 2
TIM4->CCER |= TIM_CCER_CC1E | TIM_CCER_CC2E;
// 启动定时器 4
TIM4->CR1 |= TIM_CR1_CEN;
```
注意,以上代码需要在启用时钟之前将引脚配置为复用推挽输出模式,否则会导致无法输出 PWM 信号。另外,占空比的值需要根据具体的应用场景进行设置。
阅读全文