找回密码
 立即注册
查看: 291|回复: 11

32G12K128如何实现任意端口唤醒?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-14 11:19:20
已绑定手机

2

主题

7

回帖

42

积分

新手上路

积分
42
发表于 2025-7-28 16:04:49 | 显示全部楼层 |阅读模式
如题所示,看芯片的资料32G12K128支持任意端口中断唤醒,我翻了一下芯片的规格书,找到相关的章节,确实有提到端口唤醒的地方,但里面的例程也相对简单。

我现在是要用32G12K128来做遥控器,为了省电,在长时间没有操作的前提下,关闭外设,将mcu设为PD模式,PD=1  并设置了中断唤醒引脚,打开使能。可mcu 就是不能唤醒。

我的端口初始化代码如下:
                  P6M0 = 0x03; P6M1 = 0x00;
                 P6IM0=0;
                 P6IM1=0x03; //低电平中断
                 P0INTE=0x03;
                 P0WKUE=0x03; //开启掉电唤醒


想实现p6.0/p6.1 端口电平唤醒,mcu进入休眠后唤醒不成功,我的问题出在哪里?
                 
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:173
  • 最近打卡:2025-09-05 10:24:31

778

主题

1万

回帖

1万

积分

管理员

积分
18956
发表于 2025-7-28 17:04:35 | 显示全部楼层
换 STC32G8K64-LQFP48/32,
所有 I/O都可以中断, 可支持 省电模式唤醒
截图202507281702233376.jpg

截图202507281702459733.jpg

截图202507281704281599.jpg



回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:173
  • 最近打卡:2025-09-05 10:24:31

778

主题

1万

回帖

1万

积分

管理员

积分
18956
发表于 2025-7-28 17:07:00 | 显示全部楼层
截图202507281706264912.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-14 11:19:20
已绑定手机

2

主题

7

回帖

42

积分

新手上路

积分
42
发表于 2025-7-28 20:05:22 | 显示全部楼层
P6 中断跳转地址是多少
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-14 11:19:20
已绑定手机

2

主题

7

回帖

42

积分

新手上路

积分
42
发表于 2025-7-28 20:28:22 | 显示全部楼层
按上面的方式可以实现按键唤醒,但感觉不稳定,经常出现按键唤醒失效的情况,不得不重新上电才能重启系统,目前我的mcu 采用的内部晶振,是否需要RTC晶振?

点评

和外部32768晶振没关系 初始化先正确设置IAP_TPS PD之前加几个nop 如果主时钟频率接近极限频率,设置IRCDB=16  详情 回复 发表于 2025-7-28 21:16
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:549
  • 最近打卡:2025-09-05 09:00:36
已绑定手机

85

主题

6067

回帖

1万

积分

超级版主

积分
11162
发表于 2025-7-28 21:16:01 | 显示全部楼层
pete*** 发表于 2025-7-28 20:28
按上面的方式可以实现按键唤醒,但感觉不稳定,经常出现按键唤醒失效的情况,不得不重新上电才能重启系统, ...

和外部32768晶振没关系
初始化先正确设置IAP_TPS
PD之前加几个nop
如果主时钟频率接近极限频率,设置IRCDB=16
还是不行就尝试PD之前修改主时钟频率到一个较低的频率,唤醒后再还原
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-14 11:19:20
已绑定手机

2

主题

7

回帖

42

积分

新手上路

积分
42
发表于 2025-7-28 22:41:43 | 显示全部楼层
Debu*** 发表于 2025-7-28 21:16
和外部32768晶振没关系
初始化先正确设置IAP_TPS
PD之前加几个nop

我现在的时钟频率设置为35M, IAP_TPS还没有设置过。nop倒是加了好多
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:171
  • 最近打卡:2025-09-05 11:13:51

76

主题

6697

回帖

1万

积分

超级版主

积分
14045
发表于 2025-7-28 22:58:14 | 显示全部楼层
允许IO中断就可以唤醒。
当按键比较多时,一般使用行列扫描,此时,不需要每个按键都能唤醒,比如4x8的键盘,有32个键,只需要4个能唤醒的IO做扫描输出,8个普通IO做扫描输入。
普通IO     IO7  IO6  IO5  IO4  IO3  IO2  IO1  IO0
唤醒IO1    K7   ..............................................K0
唤醒IO2    K15 ..............................................K8
唤醒IO3    K23 ..............................................K16
唤醒IO4    K31 ..............................................K24

睡眠处理:
IO7~IO0 = 0;
唤醒IO1~4 = 1;
清除唤醒IO1~4中断标志(需要的话);
允许唤醒IO1~4中断;
PCON |= 0x02;
NOP(5);
禁止唤醒IO1~4中断;
IO7~IO0 = 1;
正常运行程序,正常扫描按键。
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:173
  • 最近打卡:2025-09-05 10:24:31

778

主题

1万

回帖

1万

积分

管理员

积分
18956
发表于 2025-7-29 00:18:41 | 显示全部楼层
要能唤醒,
低电平中断/高电平中断 是不行的;
需要 上升沿中断/下降沿中断 才行;
但 STC32G12K128的普通I/O的上升沿中断/下降沿中断设计有BUG,
尚未改版/也不会改版/做了车规认证不能改版,只会出新型号 STC32G34K128。

所以建议 用 STC32G8K64-LQFP48/44/32, STC8H8K64U-LQFP64/48/44/32
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-14 11:19:20
已绑定手机

2

主题

7

回帖

42

积分

新手上路

积分
42
发表于 2025-7-30 08:26:07 | 显示全部楼层
神*** 发表于 2025-7-29 00:18
要能唤醒,
低电平中断/高电平中断 是不行的;
需要 上升沿中断/下降沿中断 才行;

谢谢你的回复,你的意思是按键唤醒在STC32G12k128上实现有风险了?按楼上梁工的思路可以彻底解决吗?盼复。我的板子刚发出打样中。
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-9-6 02:38 , Processed in 0.135539 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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