APM32F103 USB键盘如何唤醒PC机

2023-05-16

USB2.0全速设备的技术规范,所以支持远程唤醒的功能,本文简单介绍全速USB模式下,USB键盘如何休眠PC,唤醒PC机

  • 描述符配置

APM32F103鼠标设备配置描述符源代码如下,从0数第7个字节0xE0(1110000b),标识设备是自供电且具有远程唤醒功能。所以APM32F103USB描述符配置为。

对应个报告描述符可以配置为;

上述报告描述符没用到下面几个配置,直接在键值中发送即可。

0x85, REPORT_ID_SYSTEM, // Report ID

0x09, 0x83, // Usage (Sys Wake Up)

0x09, 0x82, // Usage (Sys Sleep)

0x09, 0x81, // Usage (Sys Power Down)

  • 发送SYSTEM CONTROL的键值休眠电脑

定义/* Generic Desktop Page(0x01) - system power control */

#define SYSTEM_POWER_DOWN       0x0081

#define SYSTEM_SLEEP            0x0082

#define SYSTEM_WAKE_UP         0x0083

定义发送系统控制键值接口

void send_system(uint16_t data)

{

HidKeyboard_Write(REPORT_ID_SYSTEM, data);

}

发送休眠键值

send_system(SYSTEM_SLEEP);

  • 唤醒休眠状态的PC机

唤醒休眠状态的PC机;远程唤醒的操作就是把USB控制寄存器的第4位置1,然后等待10ms把USB控制寄存器的第4位置为0,最后进入RESUME_OFF状态,设备的一次远程唤醒请求完成.

根据APM32F103提供的库接口,

其定义联合体如下

typedef struct

{

    /** Endpoint */

    USBD_EP_REG_T EP[8];

    __IM  uint32_t  RESERVED[8];

    /** @brief Control register */

    union

    {

        __IOM uint32_t CTRL;

        struct

        {

            __IOM uint32_t FORRST          : 1;

            __IOM uint32_t PWRDOWN         : 1;

            __IOM uint32_t LPWREN          : 1;

            __IOM uint32_t FORSUS          : 1;

            __IOM uint32_t WUPREQ          : 1;

            __IM  uint32_t RESERVED1       : 3;

            __IOM uint32_t ESOFIEN         : 1;

            __IOM uint32_t SOFIEN          : 1;

            __IOM uint32_t RSTIEN          : 1;

            __IOM uint32_t SUSIEN          : 1;

            __IOM uint32_t WUPIEN          : 1;

            __IOM uint32_t ERRIEN          : 1;

            __IOM uint32_t PMAOUIEN        : 1;

            __IOM uint32_t CTRIEN          : 1;

            __IM  uint32_t RESERVED2       : 16;

        }CTRL_B;

};

所以下面WUPREQ为唤醒位。

#define USBD_SetResume()             (USBD->CTRL_B.WUPREQ = BIT_SET)

#define USBD_ResetResume()           (USBD->CTRL_B.WUPREQ = BIT_RESET)

直接调用

USBD_SetResume();

delayMs(10);

         USBD_ResetResume();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APM32F103 USB键盘如何唤醒PC机 的相关文章

  • 干掉Nouveau安装Linux Nvidia显卡驱动

    https blog csdn net misiter article details 7652731 干掉Nouveau安装Linux Nvidia显卡驱动 首先说明下什么是Nouveau xff0c 为什么有些系统安装N卡驱动的时候会提
  • 【C应用】红外遥控小车程序分析(上)——四轮马达方向控制程序分析

    目录 驱动原理分析 L293D功能分析 代码分析 驱动原理分析 小车采用两片L293D芯片控制四个车轮 xff0c 原理图如下 xff1a 因为L293D可分别控制两路电机 xff0c 为了方便理解L293D芯片的工作原理 xff0c 拿L
  • 【RTOS】RTOS实时操作系统随笔(结合UCOSII相关移植)

    目录 无操作系统下的程序结构及缺陷 有操作系统下的解决方案及CPU工作原理 操作系统调度策略及时间片轮转策略 操作系统TICK及进程切换 UCOSII介绍 UCOSII进程任务切换原理 xff1a UCOS进程的堆栈 xff1a 时钟TIC
  • 【STM32CobeMX】CubeMX建立基于STM32F1VBT6的FreeRTOS

    STM32F103VBT6 内部时钟源RCC 如果使用RTOS 使用了RTOS xff0c 默认使用SysTick xff1b 所以HAL库的时基就要用其他的定时器 当用了RTOS xff0c 就要设置HAL的timebase为其他Time
  • 【QT】手把手制作一个网络调试助手(UDP设计)

    TCP和UDP网络通信类的使用 Porn hub 1 程序框架搭建 接着上一篇文章 xff0c 这里就开始设计UDP的相关功能函数了 xff0c 首先将其UDP的相关配置进行隐藏 xff1b 1 1 构造函数讲解 MainWindow Ma
  • 【PADSVX2.7】PADSVX2.7

    目录 1 文件准备 xff1a 2 解压PADSVX 2 7 ESDM到Install 3 点击Setup 4 替换文件 5 有请馒头大师 6 开始享受VX2 7带来的爽快感觉 xff01 xff01 xff01 1 文件准备 xff1a
  • STM32 CAN的ID过滤配置

    过滤器的过滤模式 STM32提供两种过滤模式供用户设置 xff1a 屏蔽位模式和标识符列表模式 STM32总共提供14个过滤器组来处理CAN接收过滤问题 xff0c 每个过滤器组包含两个32位寄存器CAN FxR0和CAN FxR1组成 x
  • 基于STM32F407时钟配置学习

    STM32F4x系列时钟树如下 xff1a 1 系统时钟SYSCLK 在STM32F407中 xff0c 除了一些特定的时钟 xff08 例如 xff0c USB OTG FS时钟 xff0c I2S时钟 xff09 外 xff0c 系统所
  • WIN10不能访问共享文件夹的一般性问题

    WIN10不能访问共享文件夹的一般性问题 访问共享文件夹要确定双方在同一网段 xff0c 且自己可以ping通自己 如果都满足还是不能访问 xff0c 试试下面两个解决办法 报错0x8000405 win 43 r xff0c 在里面输入
  • Win10磁盘占用100%解决方法

    Win10磁盘占用100 解决方法 1 按住Ctrl 43 Shift 43 ESC打开任务管理器 xff0c 点击任意进程 xff0c 右键 资源值 磁盘 百分比 xff0c 如果是一般应用进程 xff0c 可以直接关掉 2 切换到 性能
  • WIN7不能访问共享文件夹

    WIN7不能访问共享文件夹 1 确定同一网段 2 开启被访问电脑的Guest用户 windows启用guest用户一般又3种方式 xff0c 通过图形化界面或cmd命令行 xff1a 1 打开运行输入cmd回车 xff0c 输入 xff1a
  • docker 容器更新镜像发布和保存操作步骤

    1 修改容器 安装软件等修改操作 2 docker commit 提交更新并生成新的image sudo docker commit m 34 cuda 9 0 install 34 a 34 chengde 34 23ecb489cf78
  • 嵌入式linux学习----Makefile基础知识

    一 嵌入式linux学习 Makefile基础知识 1 1 Makefile作用 makefile关系到了整个工程的编译规则 一个工程中的源文件不计数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义了
  • Expert C Lanuage 学习笔记----1、穿越时空的迷雾(1)

    Expert C Lanuage 学习笔记 1 穿越时空的迷雾 xff08 1 xff09 1 First Mistake 几乎每个C语言编程新手都犯过下面错误 xff1a if i 61 3 正确应该是 if i 61 61 3 这种错误
  • vscode 保存代码自动格式化(vue)

    1 根据项目配置的eslint规则保存代码后 xff0c 自动格式化代码 2 需要安装prettier 和 vetur settings json 34 codestream serverUrl 34 34 https api codest
  • 理解互斥量和信号量

    互斥量 Mutex 互斥量表现互斥现象的数据结构 xff0c 也被当作二元信号灯 一个互斥基本上是一个多任务敏感的二元信号 xff0c 它能用作同步多任务的行为 xff0c 它常用作保护从中断来的临界段代码并且在共享同步使用的资源 Mute
  • 单链表逆序与排序

    xfeff xfeff xfeff xfeff xfeff xfeff include lt stdio h gt include lt stdlib h gt include lt string h gt typedef struct d
  • ubuntu apt-get update 失败解决。

    当运行apt get update后出现如下错误时 xff1a E Some index files failed to download they have been ignored or old ones used instead 可以
  • 深入理解句柄表

    涉及到句柄表的有以下这些概念 xff1a HANDLE TABLE HANDLE TABLE结构体中的TableCode变量 实际上啊 xff0c TableCode是指向句柄表项第一个句柄表项的指针 xff08 NULL句柄表项 xff0
  • LQR控制律设计

    LQR全称为Linear Quadratic Regulator xff0c 即线性二次型调节器 xff08 一 xff09 有限时域最优调节器设计 设线性系统 被控对象的离散化状态方程为 xff1a 初始条件 给定二次型性能指标函数 xf

随机推荐

  • 路径跟踪之LQR控制算法

    xff08 一 xff09 车辆建模 两自由度车辆模型为 xff1a 考虑恒定不变 xff0c 则上述模型可以看作一个输入为 状态变量为的控制系统 xff0c 可以表示为 xff1a 对于参考轨迹 xff0c 可以表示为 xff1a 将 x
  • Arrays.sort简单排序实例

    Arrays sort 方法实例 xff1a 用于对整形数组及字符串数组进行排序 这里写代码片 import java util ArrayList import java util Arrays import java util Coll
  • git rebase 成功之后如何撤销

    git rebase 过程中可以使用git abort continue来进行操作 xff0c 成功之后如何撤销呢 xff1f 首先执行git reflog查看本地记录 可知本次rebase之前的id 为 xff1a 02a3260 HEA
  • STM32---BOOT0和BOOT1

    文章目录 前言一 思维导图二 注意事项1 针对BOOT0和BOOT1的不同接线方式 xff08 高电平 xff0c 低电平 xff0c 不接线 xff09 xff0c 开发板的下载情况分析如下图 xff1a xff08 x 代表不接线 xf
  • Windowsxp主机下用Putty连接VirtualBox中的Debian

    参考网址 1 xff0c debian中需要安装openssh server xff0c 并开启ssh服务 2 xff0c VirtualBox的网络连接方式选择NAT xff08 可以连接外面的网络 xff09 xff0c 默认情况下 x
  • 设备接入天猫精灵教程(一)

    现在网上接入天猫精灵的教程基本都是云对云接入 xff0c 需要搭建服务器 xff0c 写硬件程序 xff0c 费时又复杂 这次结合之前的阿里云教程做一个通过阿里云物联网平台接入天猫精灵的教程 xff0c 免去了服务器开发 xff0c 大大的
  • 测试 使用 perf 进行性能分析时如何获取准确的调用栈

    测试 使用 perf 进行性能分析时如何获取准确的调用栈 ifonly 2020年02月27日 101 次阅读 目录 perf 是 Linux 下重要的性能分析工具 xff0c perf 可以通过采样获取很多性能指标 xff0c 其中最常用
  • Jetson Xavier NX 安装固态硬盘并挂载到/home目录下

    1 查看硬盘所有分区 指令 xff1a sudo fdisk lu xff12 对硬盘进行分区 指令 xff1a sudo fdisk dev nvme0n1 3 格式化分区为ext4 指令 xff1a sudo mkfs t ext4 d
  • 单目相机位姿求解之PNP算法原理剖析与实践

    对于视觉里程计中 xff0c 相机位姿的求解问题极为常见 对于双目相机 xff0c 由于其可以直接计算出深度信息 xff0c 所以在相机位姿求解上十分容易 但如果我们使用的是单目相机 xff0c 如何从二维图像中求解出相机相对三维物体的位姿
  • 计算器1.0

    数据结构让我们相遇 计算器1 0正式上线 xff1a define h span class token macro property span class token directive keyword include span span
  • 常用软件滤波方法及其示例程序

    常用软件滤波方法及其示例程序 作者 未知 来源 发布时间 2005 08 24 浏览次数 lt script language 61 34 Javascript 34 src 61 34 view php articleid 61 10 3
  • I2C协议调试总结

    1 协议总结 开始 xff1a 在SCL为高期间 xff0c SDA由高变低 结束 xff1a 在SCL为高期间 xff0c SDA由低变高 应答 xff1a 时钟脉冲 xff19 期间释放数据线 xff0c SCL为高期间 xff0c S
  • mtk6765上i2c-tools的使用

    1 下载i2c tools 从开源网站http dl lm sensors org i2c tools releases 下载i2c tools 几个版本都可以用 xff0c 可以选择下载i2c tools 4 3 xff12 到官网下载交
  • mt6762/mt6765平台i2c驱动能力修改与波形优化

    mt6762在连接一些外设时 xff0c i2c在低电平会拉不低的情况 xff0c 最低电平在0 4V左右 xff0e 这时需要去掉外设的上拉电阻或调整硬件i2c的驱动电流 xff0e 修改文件路径 xff1a vendor mediate
  • cmake find_package 原理简介以及使用说明

    下面简单介绍Cmake 如何使用find package命令对外部库进行查找 cmake本身不提供任何关于搜索库的便捷方法 xff0c 也不会对库本身的环境变量进行设置 它仅仅是按照优先级顺序在指定的搜索路径进行查找Findxxx cmak
  • MT6762平台NXP NFC代码移植要点

    xff11 找到官网 xff0c 获取源码包 NXP NFC移植源码 https github com NXPNFCProject 固件 https github com NXP nfc NXPNFCC FW tags 2 主要介绍源码移植
  • mt6762添加gpio按键方法与问题调试

    mt6762添加gpio按键方法与问题调试 1 配置dts文件 xff0e 定义gpio87为拍照键 对于keycode 61 212 gpio keys gpio keys compatible 61 34 gpio keys 34 in
  • GD33F303RTC6串口USART0重映射问题

    GD32F303RTC6的串口有多个 xff0c 其中USART0串口可以定义为PA9 PA10 xff0c 也可以映射定义为PB6 PB7 USART0默认是用PA9 PA10 xff0c 如果需要映射到PB6 PB7 则需要gpio p
  • APM32F103CBT6调试接口复用为GPIO配置问题

    APM32F103CBT6调试接口复用为GPIO配置问题 xff1a 可以通过调整复用配置 xff0c 改为GPIO口 xff0c xff08 注意 xff1a 改为上电默认为GPIO口后 xff0c 将无法再用调试功能 xff0c 慎重选
  • APM32F103 USB键盘如何唤醒PC机

    USB2 0全速设备的技术规范 xff0c 所以支持远程唤醒的功能 xff0c 本文简单介绍全速USB模式下 xff0c USB键盘如何休眠PC xff0c 唤醒PC机 描述符配置 APM32F103鼠标设备配置描述符源代码如下 xff0c