zhuqingtao 发表于 2023-12-2 16:53:00

PWM 和GPIO 同时操作有冲突吗

如果一个GPIO 配置成了PWM 输出,在PWM 工作时, 如果同时按常规操作GPIO 的管脚输出0 或1, 它和PWM 的输出是否会冲突?

梁工 发表于 2023-12-2 18:37:07

不会有冲突。配置成PWM输出,引脚就链接到PWM模块的输出,操作IO将不影响PWM。你试下就知道了。

蜗牛 发表于 2023-12-5 15:43:06

梁工 发表于 2023-12-2 18:37
不会有冲突。配置成PWM输出,引脚就链接到PWM模块的输出,操作IO将不影响PWM。你试下就知道了。 ...

梁工你好,请教一个问题,stc8h系列的pwm输出下对应的IO口模式是不是无法修改,我想配置成开漏模式,原来的8A可以。谢谢

梁工 发表于 2023-12-5 22:13:36

蜗牛 发表于 2023-12-5 15:43
梁工你好,请教一个问题,stc8h系列的pwm输出下对应的IO口模式是不是无法修改,我想配置成开漏模式,原来 ...

STC8H系列的PWM是固定的推挽输出,不能设置。

蜗牛 发表于 2023-12-6 08:30:50

梁工 发表于 2023-12-5 22:13
STC8H系列的PWM是固定的推挽输出,不能设置。

{:4_237:}

xxkj2010 发表于 2023-12-6 09:52:43

那么,初始化PWM后的端口,在程序运行的过程,能否根据需要通过软件恢复到原来的非PWM模式?

梁工 发表于 2023-12-6 23:33:06

xxkj2010 发表于 2023-12-6 09:52
那么,初始化PWM后的端口,在程序运行的过程,能否根据需要通过软件恢复到原来的非PWM模式? ...

随时可关闭PWM输出,变成普通IO。

STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例):

1、使用PWMx_ENO禁止输出PWM,对应IO成为普通IO,禁止PWM输出后,由这个IO直接输出高或低电平。
PWMA_ENO |= 0x01;   // 允许PWM1P输出
delay_ms(5);      // P1.0输出PWM 5ms
P10 = 1;            // P1.0输出高电平
PWMA_ENO &= ~0x01;// 关闭PWM输出
delay_ms(5);      // P1.0输出高电平5ms
               
PWMA_ENO |= 0x01;   // 允许PWM1P输出
delay_ms(5);      // P1.0输出PWM 5ms
P10 = 0;            // P1.0输出低电平
PWMA_ENO &= ~0x01;// 关闭PWM输出
delay_ms(5);      // P1.0输出高电平5ms

2、设置PWMx_CCMRn,强制PWM输出有效(高)电平/无效(低)电平。
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;// PWM正常输出
delay_ms(5);                               // PWM输出5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x40;// 强制PWM输出无效(低)电平
delay_ms(5);                               // PWM输出低电平5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x60;// PWM正常输出
delay_ms(5);                               // PWM输出5ms
PWMA_CCMR1 = (PWMA_CCMR1 & ~0x70) | 0x50;//强制PWM输出有效(高)电平
delay_ms(5);                               // PWM输出高电平5ms
页: [1]
查看完整版本: PWM 和GPIO 同时操作有冲突吗