zhp 发表于 前天 09:13

kellen1024 发表于 2025-11-4 22:12
为何STC32G 的HSPWM功能配置没有DMA

STC32G12K128和STC32G8K64两个系列的PWM都不支持DMA

kellen1024 发表于 前天 19:09

kellen1024 发表于 2025-11-4 22:12
为何STC32G 的HSPWM功能配置没有DMA

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

kellen1024 发表于 前天 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开始运行

kellen1024 发表于 前天 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开始运行

kellen1024 发表于 前天 21:58

kellen1024 发表于 2025-11-5 19:17
AICUBE生成的代码如下   :PWM1P 有波形 但是PWM1N没有波形,这是咋回事

PWMA_C1SwitchP1011();          ...

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

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

按道理图形配置起来应该要能跑出正常波形才是,这有点不科学了
官方的库静态库也考不到底层配置。。。。。。
页: 1 [2]
查看完整版本: STC图形化程序自动生成工具,AiCube-ISP, 【高级PWM-DMA自动产生互补SPWM波形】的代码