耀子 发表于 2025-4-12 15:58:13

高级PWM配置问题 | 已解决,引脚虚焊

老师们,我在学习高级PWM的时候,代码不知道哪里错误,PWMB的5P和8P没有信号,请老师们帮忙 看一下代码哪里错误,谢谢了

现在是1P和1N,2P和2N是输出一样的PWM,3P,4P,6P,7P正常输出,5P和8P没有信号 。


#define PWM_PERIOD 1999 //设置PWM周期值
u16 PWM_Duty = 1500;//设置点空比

void PWM_Int(void)
{
   
      PWMA_PS |= 0x55;//高级 PWM 通道输出脚选择P20位,P22,P24,P26.
      PWMB_PS |= 0xAA;//高级 PWM 通道输出脚选择P00位,P01,P02,P03.
      
      PWMA_CCER1 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
      PWMA_CCMR1= 0x68;//通道模式配置
      PWMA_CCMR2= 0x68;//通道模式配置
      PWMA_CCER1 =0x7D;//配置通道输出使能和极性
      
      PWMA_CCER2 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
      PWMA_CCMR3= 0x68;//通道模式配置
      PWMA_CCMR4= 0x68;//通道模式配置
      PWMA_CCER2 =0x11;//配置通道输出使能和极性
      
      PWMB_CCER1 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
      PWMB_CCMR1= 0x68;//通道模式配置
      PWMB_CCMR2= 0x68;//通道模式配置
      PWMB_CCER1 =0x11;//配置通道输出使能和极性
      
      PWMB_CCER2 = 0x00;//写CCMRx前必须先清零CCxE关闭通道
      PWMB_CCMR3= 0x68;//通道模式配置
      PWMB_CCMR4= 0x68;//通道模式配置
      PWMB_CCER2 =0x11;//配置通道输出使能和极性
      
      PWMA_ARRH = (u8)(PWM_PERIOD>>8);//设置周期时间
      PWMA_ARRL = (u8)PWM_PERIOD;
      
      PWMB_ARRH = (u8)(PWM_PERIOD>>8);//设置周期时间
      PWMB_ARRL = (u8)PWM_PERIOD;
      
      PWMA_ENO = 0x5F;//使能输出
      PWMB_ENO = 0x55;//使能输出
      
      PWMA_CCR1H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMA_CCR1L = (u8)(PWM_Duty);
      
    PWMA_CCR2H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMA_CCR2L = (u8)(PWM_Duty);
      
      PWMA_CCR3H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMA_CCR3L = (u8)(PWM_Duty);
      
      PWMA_CCR4H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMA_CCR4L = (u8)(PWM_Duty);
      
    PWMB_CCR5H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMB_CCR5L = (u8)(PWM_Duty);

      PWMB_CCR6H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMB_CCR6L = (u8)(PWM_Duty);

      PWMB_CCR7H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMB_CCR7L = (u8)(PWM_Duty);

      PWMB_CCR8H = (u8)(PWM_Duty >>8);//设置占空比时间
      PWMB_CCR8L = (u8)(PWM_Duty);

      PWMA_BKR = 0x80;//使能主输出
      PWMB_BKR = 0x80;//使能主输出
      PWMA_CR1 = 0x01;//开始计时
      PWMB_CR1 = 0x01;//开始计时
}



国芯人工智能 发表于 2025-4-12 16:03:00

在您提供的代码中,PWMB的5P和8P没有信号输出,可能是由于以下几个原因导致的。以下是对代码的详细分析和建议:

1. PWMBPS寄存器配置问题
您当前的配置是PWMBPS |= 0xAA;,这表示PWMB的通道输出脚选择为P00、P01、P02、P03。然而,5P和8P可能对应的是其他引脚,您需要确认这些引脚是否被正确映射到PWMB的通道上。
建议检查芯片手册,确认5P和8P对应的引脚是否被正确配置到PWMB的通道上。如果未正确配置,需要调整PWMBPS的值。

2. PWMBCCER1和PWMBCCMR1配置问题
您当前的配置是PWMBCCER1 = 0x00;和PWMBCCMR1= 0x68;。PWMBCCER1用于配置通道输出使能和极性,而PWMBCCMR1用于配置通道模式。
确保PWMBCCER1的值正确配置了5P和8P对应的通道使能位。如果未使能,通道将不会输出信号。
建议检查PWMBCCER1的值,确保5P和8P对应的通道使能位被正确设置。

3. PWMBCCMR2配置问题
您当前的配置是PWMBCCMR2= 0x68;。PWMBCCMR2用于配置通道模式,确保5P和8P对应的通道模式被正确配置。
如果通道模式配置不正确,可能会导致信号无法输出。建议检查PWMBCCMR2的值,确保5P和8P对应的通道模式被正确设置。

4. PWM周期和占空比配置
您当前的PWM周期和占空比配置为#define PWMPERIOD 1999和u16 PWMDuty = 1500;。确保这些值在芯片的允许范围内,并且与您的应用需求相符。
如果周期或占空比配置不正确,可能会导致信号无法正常输出。建议检查这些值,并根据需要进行调整。

5. 硬件连接问题
除了软件配置,还需要检查硬件连接是否正确。确保5P和8P对应的引脚与外部电路连接正确,并且没有短路或断路现象。

6. 调试建议
使用调试工具(如示波器或逻辑分析仪)检查5P和8P的引脚是否有信号输出。如果没有信号输出,可以逐步检查上述配置,找出问题所在。
如果仍然无法解决问题,建议参考芯片手册中的PWM模块章节,详细了解每个寄存器的功能和配置方法。

7. 代码示例
   以下是一个可能的修正代码示例,供您参考:

c
define PWMPERIOD 1999 //设置PWM周期值
u16 PWMDuty = 1500; //设置占空比

void PWMInt(void)
{
    // 配置PWMA和PWMB的输出引脚
    PWMAPS |= 0x55; // 高级PWM通道输出脚选择P20位,P22,P24,P26.
    PWMBPS |= 0xAA; // 高级PWM通道输出脚选择P00位,P01,P02,P03.

    // 配置PWMA的通道1和2
    PWMACCER1 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
    PWMACCMR1 = 0x68; // 通道模式配置
    PWMACCMR2 = 0x68; // 通道模式配置
    PWMACCER1 = 0x7D; // 配置通道输出使能和极性

    // 配置PWMA的通道3和4
    PWMACCER2 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
    PWMACCMR3 = 0x68; // 通道模式配置
    PWMACCMR4 = 0x68; // 通道模式配置
    PWMACCER2 = 0x11; // 配置通道输出使能和极性

    // 配置PWMB的通道1和2
    PWMBCCER1 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
    PWMBCCMR1 = 0x68; // 通道模式配置
    PWMBCCMR2 = 0x68; // 通道模式配置
    PWMBCCER1 = 0x7D; // 配置通道输出使能和极性

    // 配置PWMB的通道3和4
    PWMBCCER2 = 0x00; // 写CCMRx前必须先清零CCxE关闭通道
    PWMBCCMR3 = 0x68; // 通道模式配置
    PWMBCCMR4 = 0x68; // 通道模式配置
    PWMBCCER2 = 0x11; // 配置通道输出使能和极性
}

总结
通过以上分析和建议,您可以逐步排查并解决PWMB的5P和8P没有信号输出的问题。如果问题仍然存在,建议进一步检查硬件连接和芯片手册中的相关配置。希望这些建议对您有所帮助。

[本文内容由国芯人工智能辅助生成,仅供参考]

耀子 发表于 2025-4-12 16:12:52

找到问题了,芯片引脚虚焊了,查了一下午代码。唉
页: [1]
查看完整版本: 高级PWM配置问题 | 已解决,引脚虚焊