PWM多通道输出问题 | 已找到问题
//等主板到了再看一下需要用到的引脚//不是PWMB极性的问题,也不是PS的问题,会不会是极性的问题
void PWM_R_L_motor_init(void)
{
P2M1&=~0x03;
P2M0|=0x03;
PWMB_CCER1 = 0x00;//写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCMR1 = 0x60;//通道模式配置
PWMB_CCMR2 = 0x60;//通道模式配置
PWMB_CCER1=0x33; //使能5 6通道
PWMB_PSCRH = 0;
PWMB_PSCRL = 0; // 1 分频,计数时钟 48 MHz
PWMB_ARRH = 0x12; // ARR = 4800 - 1 = 4799
PWMB_ARRL = 0xBF; // 0x12BF
PWMB_CCR5H = 0x04; // CCR = 2400 → 50% 占空比
PWMB_CCR5L = 0xB0; // 0x0960 = 2400
PWMB_CCR6H = 0x09; // CCR = 2400 → 50% 占空比
PWMB_CCR6L = 0x60; // 0x04B0 = 1200
PWMB_ENO = 0x00;
PWMB_ENO |= ENO5P;//使能输出
PWMB_ENO |= ENO6P;//使能输出
PWMB_PS = 0x00; //高级 PWM 通道输出脚选择位
PWMB_PS |= PWMB5_1; //选择 PWMB5 通道 P00~P03
PWMB_PS |= PWMB6_1;
PWMB_BKR = 0x80; //使能主输出
PWMB_CR1 |= 0x01; //开始计时
}为什么ch5可以正常输出,ch6却不行,已经详细对比了芯片手册,没找到问题在哪
代码是没有问题的,有这么几种可能,可以依次排查一下
1.可能是PWMB_PS没有选择正确,当P00作为PWM5的时候,P01才是PWM6,PWMB组没有互补输出
2.也有可能是最开头的IO模式没有设置正确,
最开头的只设置了P20和P21,需要设置对应的输出口为强推挽模式才可以,
否则默认为高阻输入模式,就是没有输出信号的
其他的应该没有什么问题,可以先排查上面两项
王昱顺 发表于 2026-2-13 07:57
代码是没有问题的,有这么几种可能,可以依次排查一下
1.可能是PWMB_PS没有选择正确,当P00作为PWM5的时候 ...
好的,我看了一下问题出在第二点,谢谢王工
{:baoquan:}
页:
[1]