找回密码
 立即注册
查看: 850|回复: 5

PWM休眠后状态问题 |已解决

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:399
  • 最近打卡:2025-06-17 08:35:24

12

主题

126

回帖

1795

积分

金牌会员

积分
1795
发表于 2023-12-11 22:04:53 | 显示全部楼层 |阅读模式
本帖最后由 lzzasd 于 2023-12-13 19:09 编辑

我在测试中对PWM3P-PWM3N做了对称互补输出,正常运行时工作正常,对单片机进行掉电(PCON |= 0x02),休眠唤醒后PWM的状态出现问题(端口已经重新配置为标准IO口),互补输出端口全部为低电平也无PWM输出,尝试休眠后对PWM重新进行配置也无反应,请知道问题的大师们问题出在什么地方??
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2060

回帖

7089

积分

论坛元老

积分
7089
发表于 2023-12-12 10:01:41 | 显示全部楼层
进休眠前关闭PWM输出通道,然后就可以使用IO口方式控制脚位电平,唤醒后再使能PWM通道输出功能:
  1.         PWMA_ENO = 0x00;    //关闭PWM输出
  2.         P2 = 0x00;          //用IO口方式控制电平
  3.         PCON |= 0x02;       //休眠
  4.         NOP(8);
  5.         PWMA_ENO |= ENO3P | ENO3N; //使能PWM输出
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:399
  • 最近打卡:2025-06-17 08:35:24

12

主题

126

回帖

1795

积分

金牌会员

积分
1795
发表于 2023-12-12 14:27:04 | 显示全部楼层
本帖最后由 lzzasd 于 2023-12-12 14:28 编辑
乘风*** 发表于 2023-12-12 10:01
进休眠前关闭PWM输出通道,然后就可以使用IO口方式控制脚位电平,唤醒后再使能PWM通道输出功能:
...

没有用啊    我用串口将PWM的寄存器都打印出来    和配置是一样的    没有错误   PWM已经使能了也没有作用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:445
  • 最近打卡:2025-06-17 12:12:21
已绑定手机

40

主题

2060

回帖

7089

积分

论坛元老

积分
7089
发表于 2023-12-12 15:20:15 | 显示全部楼层
参考附件例子吧,验证过的。

高级PWM休眠唤醒输出开关.zip

8.2 KB, 下载次数: 72

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:399
  • 最近打卡:2025-06-17 08:35:24

12

主题

126

回帖

1795

积分

金牌会员

积分
1795
发表于 2023-12-13 11:50:30 | 显示全部楼层
本帖最后由 lzzasd 于 2024-8-22 18:50 编辑
乘风*** 发表于 2023-12-12 15:20
参考附件例子吧,验证过的。

调试了好几天,终于发现问题所在
休眠的时候依据省电说明对所有IO做了高阻处理并将数字输入关闭:
  P0M0 = 0x00; P0M1 = 0xff; P0IE = 0x00;    //高阻模式,关闭数字输入
  P1M0 = 0x00; P1M1 = 0xff; P1IE = 0x00;
  P2M0 = 0x00; P2M1 = 0xff; P2IE = 0x00;
  P3M0 = 0x00; P3M1 = 0xff; P3IE = 0x00;

唤醒后对所有IO进行了配置,全部为普通IO:
  P0M0 = 0x00; P0M1 = 0x00;    //设置为准双向口
  P1M0 = 0x00; P1M1 = 0x00;
  P2M0 = 0x00; P2M1 = 0x00;
  P3M0 = 0x00; P3M1 = 0x00;

一直以为是寄存器配置错误,唤醒后打印出所有PWM相关寄存器数值都正确,百思不得其解,就试了下是不是IO的问题,在IO配置时打开了数字输入 P1IE |= 0x30;
  P0M0 = 0x00; P0M1 = 0x00;    //设置为准双向口
  P1M0 = 0x00; P1M1 = 0x00;   
  P1IE |= 0x30;
  P2M0 = 0x00; P2M1 = 0x00;
  P3M0 = 0x00; P3M1 = 0x00;

结果P14 P15休眠后PWM互补输出再打开就正常了,IO数字输入和PWM输出是有关联的,这故障有点隐秘
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-04-13 03:49:09

0

主题

20

回帖

236

积分

中级会员

积分
236
发表于 2024-8-22 16:05:22 | 显示全部楼层
lzz*** 发表于 2023-12-13 11:50
调试了好几天,终于发现问题所在
休眠的时候依据省电说明对所有IO做了高阻处理并将数字输入关闭:
  P0M0 ...

谢谢分享
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-18 07:47 , Processed in 0.127798 second(s), 80 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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