简单写一点寄存器的代码,以下利用Cx32L003单片机控制TIM1PWM功能,引脚自定义。
//CX32L003_PWM 寄存器
void Tim1_PwmInit(uint16_t period, uint8_t psc, uint16_t duty)
{
//使能外设时钟
RCC->PCLKEN |= RCC_PCLKEN_TIM1CKEN;
//设置重载寄存器,分频寄存器,计数器
TIM1->ARR = period;
TIM1->PSC = psc;
TIM1->CNT = 0;//计数器归零
//配置PWM输出
TIM1->CR1 = 0xE4;
TIM1->CCMR1 = 0x6868;//配置CHA输出
TIM1->CCMR2 = 0x6868;//配置CHB输出
TIM1->CCER = 0x550;//输出配置
//设置占空比
TIM1->CCR3 = duty;
TIM1->CCR2 = period - duty;
TIM1->BOTR = 0xFC0F;//死区
TIM1->BOTR |= 0x0100;
TIM1->CR1 |= 1<<0;//使能定时器
}