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

PWM 和GPIO 同时操作有冲突吗

[复制链接]
  • TA的每日心情
    开心
    2023-11-28 15:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    5

    主题

    8

    回帖

    55

    积分

    注册会员

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

    使用道具 举报

    该用户从未签到

    46

    主题

    2979

    回帖

    6713

    积分

    超级版主

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

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 14:46
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    384

    积分

    中级会员

    积分
    384
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2979

    回帖

    6713

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 14:46
  • 签到天数: 8 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    384

    积分

    中级会员

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 165 天

    [LV.7]常住居民III

    67

    主题

    840

    回帖

    2816

    积分

    金牌会员

    积分
    2816
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2979

    回帖

    6713

    积分

    超级版主

    积分
    6713
    发表于 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
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-10 09:20 , Processed in 0.068042 second(s), 57 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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