无法输出两路PWM
//测试工作频率为11.0592MHz//#include "stc8h.h"
#include "stc32g.h" //头文件见下载软件
#include "intrins.h"
void main()
{
EAXFR = 1; //使能访问XFR,没有冲突不用关闭
CKCON = 0x00; //设置外部数据总线速度为最快
WTST = 0x00;//设置程序代码等待参数,
//赋值为0可将CPU执行程序的速度设置为最快
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
```
// PWMA_PS=0x55;//端口选择
```
PWMA_CCER1 = 0x00; //写CCMRx前必须先清零CCERx关闭通道
PWMA_CCMR1 = 0x60; //设置CC1为PWMA输出模式
PWMA_CCER1 = 0x01; //使能CC1通道
PWMA_CCR1H = 0x01; //设置占空比时间
PWMA_CCR1L = 0x00;
PWMA_ARRH = 0x02; //设置周期时间
PWMA_ARRL = 0x00;
PWMA_ENO = 0x01; //使能PWM1P端口输出
PWMA_BKR = 0x80; //使能主输出
PWMA_CR1 = 0x01; //开始计时
while (1)
{};
}
如果我想输出PWM1P和PWM1N相同的PWM是否只要修改PWMA_ENO = 0x03; 就可以了,但是我接上示波器,只有PWM1P有波形(1脚),PWM1N没有波形输出(2脚)。请问怎么才可以所有让所有PWM脚输出相同的波形?
如果我想输出PWM1P和PWM1N相同的PWM是否只要修改PWMA_ENO = 0x03; 就可以了,但是我接上示波器,只有PWM1P有波形(1脚),PWM1N没有波形输出(2脚)。请问怎么才可以所有让所有PWM脚输出相同的波形?
你这个想法是好的,但不对啊!
两路PWM的描述:
专门与你问题描述相关的内容:
所以正确的选择是:
PWMA中的全部P或全部N,
PWMB中的全部。
表面看,PWM的使用很简单,但每家的片子对于PWM的使用方式都会有不同。
手册一定要看的,示例代码也不太可能把手册描述搬上去。 如果是完全相同的话,直接将两个端口并一块也可以吧?
如果是需要死区,那么代码里还需要更改PWMA_CCER1 ,使能CC1N通道 请下载参考下面的例子,直接下载HEX文件即可观察PWM波形
STC32G-高级PWM范例程序下载
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1778
(出处: 国芯技术交流网站)
问题已经解决,下面代码可以输出多路相同频率PWM,之前代码没有配置好端口
PWMA_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMA_CCER2 = 0x00;
PWMA_CCMR1 = 0x60; //通道模式配置
PWMA_CCMR2 = 0x60;
PWMA_CCMR3 = 0x60;
PWMA_CCMR4 = 0x60;
PWMA_CCER1 = 0x55; //配置通道输出使能和极性
PWMA_CCER2 = 0x55;
PWMA_CCMR1 |= 0x08; //开启PWMA_CCRx预转载功能(需要CCxE=1才可写)
PWMA_CCMR2 |= 0x08;
PWMA_CCMR3 |= 0x08;
PWMA_CCMR4 |= 0x08;
PWMA_CCR1H = 0x01; //设置占空比时间0X03 -12V 0x00-0V
PWMA_CCR1L = 0x00; //0X70-8V
PWMA_CCR2H = 0x01; //设置占空比时间
PWMA_CCR2L = 0x00;
PWMA_CCR3H = 0x01; //设置占空比时间
PWMA_CCR3L = 0x00;
PWMA_CCR4H = 0x01; //设置占空比时间
PWMA_CCR4L = 0x00;
PWMA_ARRH = 0x02; //设置周期时间
PWMA_ARRL = 0x00;
PWMA_ENO = 0xFF;
PWMA_PS = 0x15;//高级 PWM 通道输出脚选择位 15
PWMA_BKR = 0x80;//使能主输出
PWMA_CR1 |= 0x81; //使能ARR预装载,开始计时
PWMB_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCMR1 = 0x60; //通道模式配置
PWMB_CCMR2 = 0x60;
PWMB_CCER1 = 0x55; //配置通道输出使能和极性
PWMB_CCMR1 |= 0x08; //开启PWMA_CCRx预转载功能(需要CCxE=1才可写)
PWMB_CCMR2 |= 0x08;
PWMB_CCR5H = 0x01; //设置占空比时间0X03 -12V 0x00-0V
PWMB_CCR5L = 0x00; //0X70-8V
PWMB_CCR6H = 0x01; //设置占空比时间
PWMB_CCR6L = 0x00;
PWMB_ARRH = 0x02; //设置周期时间
PWMB_ARRL = 0x00;
PWMB_ENO = 0xFF;
PWMB_PS = 0x0A;//高级 PWM 通道输出脚选择位 0A
PWMB_BKR = 0x80;//使能主输出
PWMB_CR1 |= 0x81; //使能ARR预装载,开始计时
页:
[1]