使用寄存器配置PWM时,PWM波形必须由低电平往高点平转换才能正确输出PWM,反过来就不行了,参考别人的代码,发现别人并没有这种情况,我就是想问问这种情况跟配置有关系吗?
附代码
[mw_shl_code=c,true]void TIMER3_Init(void){
//对应库函数RCC_APB1PeriphClockCmd()
RCC -> APB1ENR |= 0x02; //使能TIMER3时钟
//对应库函数RCC_APB2PeriphClockCmd()
RCC -> APB2ENR |= 0x11; //使能GPIOC和AFIO时钟
AFIO -> MAPR |= 0xC00; //TIMER3端口全部重映像到PC口(PC6、PC7、PC8、PC9)
//对应库函数GPIO_Init()
GPIOC -> CRL &= 0x00FFFFFF; //设置GPIO模式为复用开漏50M输出
GPIOC -> CRH &= 0xFFFFFF00;
GPIOC -> CRL |= 0xBBFFFFFF;
GPIOC -> CRH |= 0xFFFFFFBB;
GPIOC -> ODR |= 0x3c0; //设置为上拉
//对应库函数TIM_TimeBaseInit()
TIM3 -> PSC = 72-1; //设置预分频为72,72M / 72 = 1Mhz
TIM3 -> ARR = 2000; //总计数周期为20000,20000 * 1M = 20ms
TIM3 -> EGR = 0x01; //产生更新事件
//对应库函数TIM_OCxInit() 、 TIM_OCxPreloadConfig()
TIM3 -> CCMR1 = 0x7878; //设置为输出、PWM模式一,输出比较预装载使能
TIM3 -> CCMR2 = 0x7878;
TIM3 -> CCER = 0x1111; //设置高电平有效并使能输出
TIM3 -> CR1 = 0x0080; //使能自动重装载预装载,设置为边沿对齐模式,技术方向向上
TIM3 -> CR1 |= 0x01; //使能TIM3
}[/mw_shl_code]
|