找回密码
 立即注册
楼主: zhp

STC图形化程序自动生成工具,AiCube-ISP, 【高级PWM-DMA自动产生互补SPWM波形】的代码

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:101
  • 最近打卡:2025-11-06 14:14:51

30

主题

1184

回帖

4534

积分

超级版主

积分
4534
发表于 前天 09:13 | 显示全部楼层
kelle*** 发表于 2025-11-4 22:12
为何STC32G 的HSPWM功能配置没有DMA

STC32G12K128和STC32G8K64两个系列的PWM都不支持DMA
截图202511050913496464.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-11-05 19:09:43
已绑定手机

0

主题

5

回帖

40

积分

新手上路

积分
40
发表于 前天 19:09 | 显示全部楼层
kelle*** 发表于 2025-11-4 22:12
为何STC32G 的HSPWM功能配置没有DMA

这个STC32G生成的互补输出PWM输出的不是互补的波形是什么原因啊?
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-11-05 19:09:43
已绑定手机

0

主题

5

回帖

40

积分

新手上路

积分
40
发表于 前天 19:14 | 显示全部楼层
AICUBE生成的代码如下    PWMA_C1SwitchP1011();               //设置PWMA通道1数据端口: PWM1P (P1.0), PWM1N (P1.1)

    HSPWMA_Disable();                   //关闭高速模式,使用同步方式进行初始化
    PWMA_InternalClockMode();           //选择内部时钟模式
    PWMA_SetClockDivider(0);            //设置16位预分频
    PWMA_SetReload16(1228);             //设置16位重载值
    PWMA_BufferARR();                   //使能重载值寄存器预装载功能
    PWMA_SetCounter(0);                 //初始化计数值

    PWMA_CC1PDisable();                 //关闭通道
    PWMA_CC1Output();                   //使能通道输出功能
    PWMA_CC1PEnable();                  //打开通道
    PWM_UpdateDuty(PWMA_CH1, 360);      //设置通道的PWM占空比
    PWMA_OC1REFPWMMode1();              //设置通道输出参考信号为PWM模式1信号
    PWMA_BufferCCR1();                  //使能CCRn预装载功能
    PWMA_EnablePWM1POutput();          //开启正极通道输出
    PWMA_EnablePWM1NOutput();          //开启负极通道输出
       
    PWMA_EnableMainOutput();            //使能PWM主输出

    PWMA_SetIntPriority(3);             //设置中断为最高优先级
    PWMA_EnableUpdateInt();             //使能PWMA更新中断

    HSPWMA_Enable();                    //使能高速模式
    HSPWMA_EnableInt();                 //使能高速模式下的PWM中断

    HSPWMA_Run();                       //PWMA开始运行
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-11-05 19:09:43
已绑定手机

0

主题

5

回帖

40

积分

新手上路

积分
40
发表于 前天 19:17 | 显示全部楼层
AICUBE生成的代码如下   :PWM1P 有波形 但是PWM1N没有波形,这是咋回事

PWMA_C1SwitchP1011();               //设置PWMA通道1数据端口: PWM1P (P1.0), PWM1N (P1.1)

    HSPWMA_Disable();                   //关闭高速模式,使用同步方式进行初始化
    PWMA_InternalClockMode();           //选择内部时钟模式
    PWMA_SetClockDivider(0);            //设置16位预分频
    PWMA_SetReload16(1228);             //设置16位重载值
    PWMA_BufferARR();                   //使能重载值寄存器预装载功能
    PWMA_SetCounter(0);                 //初始化计数值

    PWMA_CC1PDisable();                 //关闭通道
    PWMA_CC1Output();                   //使能通道输出功能
    PWMA_CC1PEnable();                  //打开通道
    PWM_UpdateDuty(PWMA_CH1, 360);      //设置通道的PWM占空比
    PWMA_OC1REFPWMMode1();              //设置通道输出参考信号为PWM模式1信号
    PWMA_BufferCCR1();                  //使能CCRn预装载功能
    PWMA_EnablePWM1POutput();          //开启正极通道输出
    PWMA_EnablePWM1NOutput();          //开启负极通道输出
      
    PWMA_EnableMainOutput();            //使能PWM主输出

    PWMA_SetIntPriority(3);             //设置中断为最高优先级
    PWMA_EnableUpdateInt();             //使能PWMA更新中断

    HSPWMA_Enable();                    //使能高速模式
    HSPWMA_EnableInt();                 //使能高速模式下的PWM中断

    HSPWMA_Run();                       //PWMA开始运行

截图202511051916335521.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-11-05 19:09:43
已绑定手机

0

主题

5

回帖

40

积分

新手上路

积分
40
发表于 前天 21:58 | 显示全部楼层
kelle*** 发表于 2025-11-5 19:17
AICUBE生成的代码如下   :PWM1P 有波形 但是PWM1N没有波形,这是咋回事

PWMA_C1SwitchP1011();          ...

这个AICUBE生成的STC32G有缺陷啊不能直接用,还得回去看资料,需要配置
PWMA_CCER1 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道

PWMA_CCER1 = 0x05; // 使能 CC1 CC1N通道
才能用参考了布丁橘长的代码总算是能用了,

按道理图形配置起来应该要能跑出正常波形才是,这有点不科学了
官方的库静态库也考不到底层配置。。。。。。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-11-7 15:55 , Processed in 0.117333 second(s), 66 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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