STM32通用定时器TIM3 CH3输出PWM,根据数据手册 通用定时器 进行编写,最终结果不能输出PWM,不知道哪里出错了。
完全按照数据手册进行编写的
void BSP_GPIO_init()
{
RCC->APB2ENR|=(1<<3);//GPIOB时钟打开
/*****配置PB0******/
GPIOB->CRL&=0xfffffff0;//CRL 清除低四位
GPIOB->CRL|=0x0b;//PB0 配置位 复用推挽输出 50MHZ
}
void TIM3_CH3_PWM_init(uint16_t PWM_period ,uint16_t duty)
{
RCC->APB1ENR|=(1<<1);//TIM3时钟开启
TIM3->EGR|=(1<<0);//UG置位,初始化计数器
TIM3->ARR =PWM_period-1;//自动加载,决定频率
TIM3->PSC=1;//预分频值
TIM3->CCR3=duty-1;//占空比
TIM3->CCMR2&=0xff8f;
TIM3->CCMR2|=0x60;//OC3M[2:0]=110 PWM1 模式
TIM3->CCMR2|=(1<<3);//OC3PE输出比较3预装载使能
TIM3->CCER&=~(1<<9);//CC3P: 输出极性 高电平有效
TIM3->CCER|=(1<<8);//CC3E:输入/捕获 3输出使能
TIM3->CCMR2&=~(3<<0);//CC3S CC3配置位输出通道
TIM3->CR1&=~(3<<8);//CKD=00 时钟分频因子
TIM3->CR1&=~(3<<5);//CMS=00 边沿对齐模式
TIM3->CR1&=~(1<<4);//DIR=0; 向上计数
TIM3->CR1|=(1<<7);//APRE 使能自动预装载寄存器
TIM3->CR1|=(1<<0);//CEN 计数器使能
}
|