为何STC32G 的HSPWM功能配置没有DMA
STC32G12K128和STC32G8K64两个系列的PWM都不支持DMA
kellen1024 发表于 2025-11-4 22:12
为何STC32G 的HSPWM功能配置没有DMA
这个STC32G生成的互补输出PWM输出的不是互补的波形是什么原因啊? 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开始运行 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 发表于 2025-11-5 19:17
AICUBE生成的代码如下 :PWM1P 有波形 但是PWM1N没有波形,这是咋回事
PWMA_C1SwitchP1011(); ...
这个AICUBE生成的STC32G有缺陷啊不能直接用,还得回去看资料,需要配置
PWMA_CCER1 = 0x00; // 写 CCMRx 前必须先清零 CCERx 关闭通道
PWMA_CCER1 = 0x05; // 使能 CC1 CC1N通道
才能用参考了布丁橘长的代码总算是能用了,
按道理图形配置起来应该要能跑出正常波形才是,这有点不科学了
官方的库静态库也考不到底层配置。。。。。。
页:
1
[2]