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

STC8H8K64U: 使用stc8h_cdc_xdata_interrupt_demo范例,如何进睡眠及唤醒

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:406
  • 最近打卡:2026-04-04 17:46:50

27

主题

95

回帖

666

积分

高级会员

积分
666
发表于 2026-1-24 12:27:21 | 显示全部楼层 |阅读模式
我在开天斧上使用stc8h_cdc_xdata_interrupt_demo范例程序,直接用的USB库文件。

应用场景如下,电池供电,
1,拔出USB后,进入睡眠状态。
2,插入USB,唤醒。
这个要如何实现?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:725
  • 最近打卡:2026-03-30 12:09:34
已绑定手机

97

主题

7246

回帖

1万

积分

超级版主

积分
13798
发表于 2026-1-24 13:11:30 | 显示全部楼层
拔出USB后关闭USB功能(关闭内部LDO和其他USB电路),打开INT4,设置PD为1进入省电模式,插入USB用INT4下降沿唤醒
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:406
  • 最近打卡:2026-04-04 17:46:50

27

主题

95

回帖

666

积分

高级会员

积分
666
发表于 2026-1-24 14:59:27 | 显示全部楼层
Debu*** 发表于 2026-1-24 13:11
拔出USB后关闭USB功能(关闭内部LDO和其他USB电路),打开INT4,设置PD为1进入省电模式,插入USB用INT4下降 ...

谢谢大佬回复。
关闭USB功能:我从论坛上看是 USBCON = 0X10;
唤醒后:USBCON = 0X90。
测试发现:进入不了睡眠,我用其他按键唤醒后,USB功能也不能用,唤醒后增加USE_INIT也不行。
不知道什么原因
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:406
  • 最近打卡:2026-04-04 17:46:50

27

主题

95

回帖

666

积分

高级会员

积分
666
发表于 2026-1-25 11:42:22 | 显示全部楼层
库能不能给出接口:
1,USB插入是否标记。
2,设置进入睡眠函数,唤醒后函数。

这样就简单应用了。把库更加适应各种应用环境。
对用户来说就简单了,不需要去搞懂那么多细节部分。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:406
  • 最近打卡:2026-04-04 17:46:50

27

主题

95

回帖

666

积分

高级会员

积分
666
发表于 2026-1-25 15:43:32 | 显示全部楼层
利用该库看UsbState值:
            if(DeviceState == DEVSTATE_ATTACHED)
            {
                P22     =   0;
                P21     =   0;
                P20     =   1;
            }
            else if(DeviceState == DEVSTATE_POWERED)
            {
                P22     =   0;
                P21     =   1;
                P20     =   0;
            }
            else if(DeviceState == DEVSTATE_DEFAULT)
            {
                P22     =   0;
                P21     =   1;
                P20     =   1;
            }
            
            else if(DeviceState == DEVSTATE_ADDRESS)
            {
                P22     =   1;
                P21     =   0;
                P20     =   0;
            }
            else if(DeviceState == DEVSTATE_CONFIGURED)
            {
                P22     =   1;
                P21     =   0;
                P20     =   1;
            }
            else if(DeviceState == DEVSTATE_SUSPENDED)
            {
                P22     =   1;
                P21     =   1;
                P20     =   0;
            }
            else
            {
                P22     =   1;
                P21     =   1;
                P20     =   1;            
            }

芯片上电,DeviceState = DEVSTATE_ADDRESS,插入USB,DeviceState = DEVSTATE_POWERED。
拔掉USB,DeviceState值无变化。

插入USB,值由DEVSTATE_ADDRESS -> DEVSTATE_ATTACHED -> DEVSTATE_POWERED.变化有点快,应该没错。

这个值在USB插上,不应该是DEVSTATE_CONFIGURED?
而且拔掉之后也没变化。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:370
  • 最近打卡:2026-04-04 12:33:12

844

主题

1万

回帖

2万

积分

管理员

积分
22805
发表于 2026-1-25 15:46:35 | 显示全部楼层
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-4 17:48 , Processed in 0.109132 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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