找回密码
 立即注册
查看: 84|回复: 4

32g pwm配置失败问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-03-26 10:21:37
已绑定手机

6

主题

9

回帖

86

积分

注册会员

积分
86
发表于 2025-3-24 17:15:22 | 显示全部楼层 |阅读模式
请教一下各位大佬,我想使用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;
               
               
}

芯片引脚图:
apwm.png



回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-24 17:23:00 | 显示全部楼层
针对您在使用STC32G8K64微控制器时遇到的PWM配置问题,以下是可能的原因和解决方案:

1. 引脚复用功能配置
STC32G8K64的PWM输出功能需要通过引脚复用功能配置寄存器(PxM0、PxM1)来使能。请确保P1.4和P2.0的引脚复用功能已正确配置为PWM输出模式。例如:
  1. c
  2. P1M0 |= 0x10; // 设置P1.4为复用功能(PWM输出)
  3. P1M1 &= ~0x10; // 清除P1.4的普通IO功能
  4. P2M0 |= 0x01; // 设置P2.0为复用功能(PWM输出)
  5. P2M1 &= ~0x01; // 清除P2.0的普通IO功能
复制代码

2. PWM通道使能
您提到的代码中,PWMBCCER1、PWMBCCER2、PWMACCER1和PWMACCER2均被初始化为0x00,这意味着所有通道均未被使能。请确保P1.4和P2.0对应的PWM通道已正确使能。例如:
```c
PWMBCCER1 |= (1

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:15
  • 最近打卡:2025-04-30 08:42:14

10

主题

126

回帖

1463

积分

版主

积分
1463
发表于 2025-3-24 17:26:22 | 显示全部楼层
【新提醒】部分较难的贴可通知我:时钟树,PWM,DMA,CAN,电机控制 | 不要在本贴咨询 - 第5页 - FOC,有ICache的 32F12K54 测试版块 国芯技术交流网站 - AI32位8051交流社区  https://www.stcaimcu.com/forum.p ... p;extra=&page=5   关注下这个帖子46楼
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-3-24 17:41:17 | 显示全部楼层
pwma_ps和pwmb_ps给反了
pwma对应pwm1~4,pwmb对应pwm5~8
所以现在是有的pwm错误的输出到了其他引脚上
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-03-26 10:21:37
已绑定手机

6

主题

9

回帖

86

积分

注册会员

积分
86
发表于 2025-3-26 10:21:37 | 显示全部楼层
感谢各位大佬
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 22:08 , Processed in 0.126144 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表