32g pwm配置失败问题
请教一下各位大佬,我想使用32g8k64的6个引脚输出pwm波形,经过以下配置后p2.1、p2.2、p2.3、p1.0都配置pwm成功,但是p1.4和p2.0的pwm功能没有配置成功,各位大佬能帮我看看我的配置哪里不对么void Init_PWM(void)
{
// 初始化标志位和占空比
PWM6_Flag = 0;
PWM7_Flag = 0;
PWM8_Flag = 0;
PWM5_Flag = 0;
PWM3P_Flag = 0;
PWM1P_Flag = 0;
PWM6_Duty = 0;// P2.1
PWM7_Duty = 0;// P2.2
PWM8_Duty = 0;// P2.3
PWM5_Duty = 0;// P2.0
PWM3P_Duty = 0; // P1.4
PWM1P_Duty = 0; // P1.0
// PWM配置
PWMB_CCER1 = 0x00;
PWMB_CCER2 = 0x00;
PWMA_CCER1 = 0x00;
PWMA_CCER2 = 0x00;
PWMB_CCMR2 = 0x68;// PWM6配置
PWMB_CCMR3 = 0x68;// PWM7配置
PWMB_CCMR4 = 0x68;// PWM8配置
PWMB_CCMR1 = 0x68;// PWM5配置
PWMA_CCMR3 = 0x68;// PWM3P配置
PWMA_CCMR1 = 0x68;// PWM1P配置
// PWM输出极性
PWMB_CCER1 = 0x55;
PWMB_CCER2 = 0x55;
PWMA_CCER1 = 0x55;
PWMA_CCER2 = 0x55;
PWMB_ARRH = (u8)(PWM_PERIOD >> 8);
PWMB_ARRL = (u8)PWM_PERIOD;
PWMA_ARRH = (u8)(PWM_PERIOD >> 8);
PWMA_ARRL = (u8)PWM_PERIOD;
// 使能PWM通道
PWMB_ENO = 0x00;
PWMB_ENO |= ENO6P;// PWM6 - P2.1
PWMB_ENO |= ENO7P;// PWM7 - P2.2
PWMB_ENO |= ENO8P;// PWM8 - P2.3
PWMB_ENO |= ENO5P;// PWM5 - P2.0
PWMA_ENO = 0x00;
PWMA_ENO |= ENO3P;// PWM3P - P1.4
PWMA_ENO |= ENO1P;// PWM1P - P1.0
// 选择PWM通道
PWMB_PS = 0x00;
PWMB_PS |= PWM1_0;// PWM6 -> P2.1
PWMB_PS |= PWM2_0;// PWM7 -> P2.2
PWMB_PS |= PWM3_0;// PWM8 -> P2.3
PWMB_PS |= PWM4_0;// PWM5 -> P2.0
PWMA_PS = 0x00;
PWMA_PS |= PWM5_0;// PWM3P -> P1.4
PWMA_PS |= PWM6_0;// PWM1P -> P1.0
PWMB_BKR = 0x80;
PWMB_CR1 |= 0x81;
PWMA_BKR = 0x80;
PWMA_CR1 |= 0x81;
}
芯片引脚图:
针对您在使用STC32G8K64微控制器时遇到的PWM配置问题,以下是可能的原因和解决方案:
1. 引脚复用功能配置
STC32G8K64的PWM输出功能需要通过引脚复用功能配置寄存器(PxM0、PxM1)来使能。请确保P1.4和P2.0的引脚复用功能已正确配置为PWM输出模式。例如:
c
P1M0 |= 0x10; // 设置P1.4为复用功能(PWM输出)
P1M1 &= ~0x10; // 清除P1.4的普通IO功能
P2M0 |= 0x01; // 设置P2.0为复用功能(PWM输出)
P2M1 &= ~0x01; // 清除P2.0的普通IO功能
2. PWM通道使能
您提到的代码中,PWMBCCER1、PWMBCCER2、PWMACCER1和PWMACCER2均被初始化为0x00,这意味着所有通道均未被使能。请确保P1.4和P2.0对应的PWM通道已正确使能。例如:
```c
PWMBCCER1 |= (1
[本文内容由国芯人工智能辅助生成,仅供参考] 【新提醒】部分较难的贴可通知我:时钟树,PWM,DMA,CAN,电机控制 | 不要在本贴咨询 - 第5页 - FOC,有ICache的 32F12K54 测试版块 国芯技术交流网站 - AI32位8051交流社区https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12059&extra=&page=5 关注下这个帖子46楼 pwma_ps和pwmb_ps给反了
pwma对应pwm1~4,pwmb对应pwm5~8
所以现在是有的pwm错误的输出到了其他引脚上 感谢各位大佬
页:
[1]