请教STC32PWM输出问题
本帖最后由 wangyifan 于 2023-1-29 09:50 编辑//------------------PWM输出P2^0 P2^1------------
PWMB_CCER1 = 0x00; //写 CCMRx 前必须先清零 CCxE 关闭通道
PWMB_CCER2 = 0x00;
PWMB_CCMR1 = 0x68; //通道模式配置
PWMB_CCMR2 = 0x68;
PWMB_CCER1 = 0x55; //配置通道输出使能和极性33输出低55输出高
PWMB_CCER2 = 0x55;
PWMB_ARRH = (u8)(PWM_PERIOD >> 8); //设置周期时间
PWMB_ARRL = (u8)PWM_PERIOD;
PWMB_ENO = 0x00;
PWMB_ENO |= ENO5P; //使能输出
PWMB_ENO |= ENO6P; //使能输出
PWMB_PS = 0x00; //高级 PWM 通道输出脚选择位
PWMB_PS |= PWM5_0; //选择 PWM5_0 通道
PWMB_PS |= PWM6_0; //选择 PWM6_0 通道
//PWMA_CCR1H=0x00;
//PWMA_CCR1L=0x00;
//PWMB_CCR6H = 0x00; //设置占空比时间
//PWMB_CCR6L = 0x00;
PWMB_BKR = 0x80; //使能主输出
PWMB_CR1 |= 0x81;//使能ARR预装载,开始计时
P2.0和P2.1口PWM输出,我要开机时输出低电平,电机调速用,现在开机瞬间输出高电平然后才正常,这样电机会转动一会才停下。 我要开机时输出低电平,电机调速用
======加100K 下拉电阻
在开机瞬间输出高电平
===是你程序初始化时,逻辑有错
举例:
I/O对外锁存是1,但I/O的工作模式是高阻输入,对外无输出能力,不影响外部状态
===A,你程序只是简单的将 I/O的工作模式从高阻输入改到准双向口或强推挽,这时对外输出高/1
===B,你程序将对外锁存从1改为0,再将 I/O的工作模式从高阻输入改到准双向口或强推挽,这时对外输出是低/0
神农鼎 发表于 2023-1-29 13:20
我要开机时输出低电平,电机调速用
======加100K 下拉电阻
谢谢!我试一下。 在开机瞬间输出高电平
===是你程序初始化时,逻辑有错
举例:
I/O对外锁存是1,但I/O的工作模式是高阻输入,对外无输出能力,不影响外部状态
===A,你程序只是简单的将 I/O的工作模式从高阻输入改到准双向口或强推挽,这时对外输出高/1
===B,你程序将对外锁存从1改为0,再将 I/O的工作模式从高阻输入改到准双向口或强推挽,这时对外输出是低/0
PWM5和PWM6同样初始化的,PWM5就可以上电为低电平,PWM6要延迟1秒才可以。 你程序将对外锁存从1改为0,再将 I/O的工作模式从高阻输入改到准双向口或强推挽,这时对外输出是低/0 上电时PWM输出为高阻,使用外接的电阻确定上电时的电平,要高电平就上拉,要低电平就下拉。阻值一般3K~100K,我常用10K或20K。
初始化好PWM,启动PWM后,再允许PWM输出,设置IO为推挽输出。
楼主“PWM6要延迟1秒才可以”,这个一定是程序问题,仔细检查。也可以直接下载我的例子观察。
问题找到了,电机驱动板不匹配,PWM输出加了两电阻好了。
页:
[1]