范例修改了一下,P1还是全口有信号输出。
本帖最后由 MWX 于 2023-5-29 19:25 编辑#define TIM1_BaseAddress 0xFEC0
#define TIM1 ((TIM1_TypeDef xdata*)TIM1_BaseAddress)
#define PWMA_ENO (*(unsigned char volatile xdata *)0xFEB1)
#define PWMA_PS (*(unsigned char volatile xdata *)0xFEB2)
#define PWM1_1 0x00 //P:P1.0N:P1.1
sfr P0M0 = 0x94;
sfr P0M1 = 0x93;
sfr P1M0 = 0x92;
sfr P1M1 = 0x91;
sfr P3M0 = 0xb2;
sfr P3M1 = 0xb1;
sfr P_SW2 = 0xba;
sbit P03 = P0^3;
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x00;
P1M0 = 0xFF;
PWMA_PS |= 0; //00:PWM at P1
PWMA_ENO = 0xFF; //IO输出PWM
/**********************************************************
PWMx_duty = *100
***********************************************************/
TIM1-> PSCRH = 0x00; //预分频寄存器
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00; //死区时间配置
TIM1-> CCMR1 = 0x68; //通道模式配置
TIM1-> CCMR2 = 0x68;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
TIM1-> ARRH = 0x08; //自动重装载寄存器,计数器overflow点
TIM1-> ARRL = 0x00;
TIM1-> CCR1H = 0x04; //计数器比较值
TIM1-> CCR1L = 0x00;
TIM1-> CCR2H = 0x02;
TIM1-> CCR2L = 0x00;
TIM1-> CCR3H = 0x01;
TIM1-> CCR3L = 0x00;
TIM1-> CCR4H = 0x01;
TIM1-> CCR4L = 0x00;
TIM1-> CCER1 = 0x55; //配置通道输出使能和极性
TIM1-> CCER2 = 0x55; //配置通道输出使能和极性
TIM1-> BKR = 0x80; //主输出使能 相当于总开关
TIM1-> IER = 0x02; //使能中断
TIM1-> CR1 = 0x01; //使能计数器
EA = 1;
while (1);
只需要P1.0-P1.1输出PWM,上面程序无法关闭P1其它口输出?版主指导一下。
楼主可以看看冲哥的视频。应该马上就明白了
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=323
深圳国芯人工智能有限公司-教学视频 (stcai.com)
PWM是稳定的波形,其他口是什么波形? 本帖最后由 MWX 于 2023-5-29 19:24 编辑
图1 是P1.0P1.1对称,图二三是其它P1口。范例程序上片后,P口输出不是同样的波形?有几人出来问过?这种现象是否设计上的问题?。
本帖最后由 梁工 于 2023-5-29 15:28 编辑
MWX 发表于 2023-5-28 08:55
图1 是P1.0P1.1对称,图二三是其它P1口。马思克敢于创新就是要证明原来的落后。范例程序上片后,P口输出不 ...
“马思克敢于创新就是要证明原来的落后”
====这是什么意思?
范例程序上片后,P口输出不是同样的波形?有几人出来问过?这种现象是否设计上的问题?。
====你的程序是输出4路互补PWM,所以整个P1口都有输出,反而是正常的,没有输出才是不正常。每路PWM的占空比不同,所以波形不同。
请明确你要什么样的输出,我 改一个给你。
本帖最后由 MWX 于 2023-5-29 19:07 编辑
谢谢,最好是慢启动,P1.0和P1.1输出外部按键可调互补PWM其它P1口都空置。 MWX 发表于 2023-5-29 18:52
谢谢,最好是慢启动,P1.0和P1.1输出外部按键可调互补PWM其它P1口都空置。
你没说型号,给你STC8H8K64U的。
先别修改程序, 直接下载"01A-PWMA-P1.0-P1.1输出互补PWM"里的"pwm.hex"测试, 下载时选择主频11.0592MHz.
例子输出IO:
PWM1N PWM1P
P1.1 P1.0
表示敬意。问题出在PWMA_ENO = 0xFF; 范例只修改 PWMA_ENO = 0x3 就可以了。以为PWMA_PS |= 0;是指定,实际没有都可以。
页:
[1]