找回密码
 立即注册
查看: 937|回复: 6

PWM 和GPIO 同时操作有冲突吗

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-11-28 15:49:32

5

主题

8

回帖

55

积分

注册会员

积分
55
发表于 2023-12-2 16:53:00 | 显示全部楼层 |阅读模式
如果一个GPIO 配置成了PWM 输出,在PWM 工作时, 如果同时按常规操作GPIO 的管脚输出0 或1, 它和PWM 的输出是否会冲突?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-12-2 18:37:07 | 显示全部楼层
不会有冲突。配置成PWM输出,引脚就链接到PWM模块的输出,操作IO将不影响PWM。你试下就知道了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:288
  • 最近打卡:2025-05-02 15:37:40

0

主题

52

回帖

1284

积分

金牌会员

积分
1284
发表于 2023-12-5 15:43:06 | 显示全部楼层
梁*** 发表于 2023-12-2 18:37
不会有冲突。配置成PWM输出,引脚就链接到PWM模块的输出,操作IO将不影响PWM。你试下就知道了。 ...

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

点评

STC8H系列的PWM是固定的推挽输出,不能设置。  详情 回复 发表于 2023-12-5 22:13
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-12-5 22:13:36 | 显示全部楼层
蜗*** 发表于 2023-12-5 15:43
梁工你好,请教一个问题,stc8h系列的pwm输出下对应的IO口模式是不是无法修改,我想配置成开漏模式,原来 ...

STC8H系列的PWM是固定的推挽输出,不能设置。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:288
  • 最近打卡:2025-05-02 15:37:40

0

主题

52

回帖

1284

积分

金牌会员

积分
1284
发表于 2023-12-6 08:30:50 | 显示全部楼层
梁*** 发表于 2023-12-5 22:13
STC8H系列的PWM是固定的推挽输出,不能设置。

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-03 13:32:44

109

主题

1900

回帖

5218

积分

论坛元老

积分
5218
发表于 2023-12-6 09:52:43 | 显示全部楼层
那么,初始化PWM后的端口,在程序运行的过程,能否根据需要通过软件恢复到原来的非PWM模式?

点评

随时可关闭PWM输出,变成普通IO。 STC8H系列的高级PWM,连续输出0或1有2种方法(以PWM1P为例): 1、使用PWMx_ENO禁止输出PWM,对应IO成为普通IO,禁止PWM输出后,由这个IO直接输出高或低电平。 PWMA_ENO |= 0x0  详情 回复 发表于 2023-12-6 23:33
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-12-6 23:33:06 | 显示全部楼层
xxkj*** 发表于 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
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-3 14:58 , Processed in 0.156485 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表