STM32学习笔记——USB鼠标

2023-11-20

最近搞了好久的STM32模拟USB鼠标,功能就是简单的利用三个按键实现滚轮和鼠标左右键的功能。

USB功能其实已经集成好一个库了,我们只是对其中几个函数进行配置而已,其实很多配置还不是太懂。整个USB程序的过程大概就是1.中断配置 2.USB时钟 3.USB初始化 4.发送数据。基于这个过程,起码要配置中断程序、USB时钟、Init函数。

1.USB中断

用的小板是正点原子的mini小板,它的USB中断是挂在外部中断18那里

2.USB时钟

这里设置为1DIV5就是把它的时钟设置在48M

3.USB初始化

这个是USB库里面已经有的,我们可以不用自己写

4.Joystick_send

这个函数就是把鼠标信息发送到电脑的程序,四个参数分别是左右键、左右方向、上下方向、滚轮

5.其他函数

我看了原始程序,其实很多可以不用操作,直接输入一条打印信息就可以了;

6.USB基本信息

枚举:插入设备检查D+/D-发送JK序列枚举成功

传输类型:控制传输,等时传输,中断传输及BUCK传输,鼠标和键盘属于中断,因为只是有按键信息才需要传输

描述符:每个USB设备都会有一个描述符,例如U盘插入之后会有个名字,这个程序用的是正点原子的,它的描述符在下面这里,有需要可以自己改,就变成自己的了

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

STM32学习笔记——USB鼠标 的相关文章

  • ARM 9处理器的opencv交叉编译

    我需要为 ARM 9 处理器交叉编译 opencv 我有处理器的工具链 但不知道如何交叉编译 请告诉我为arm板交叉编译的过程 谢谢大家 看这个参考 http www airs com ian configure configure 5 h
  • 如何修改内核DTB文件

    Summary 我目前正在为定制板编译 Linux 内核 内核 模块和 DTB 以及一些定制驱动程序 有时 我会编译内核并意识到 DTB 文件中的兼容性字符串不是自定义驱动程序正在寻找的内容 现在 我可以解决此问题的唯一方法是修改 DTS
  • 将结构体偏移属性赋予汇编器

    如何将 C 结构体的偏移量发送到汇编代码 例如 在我的 C 代码中 typedef struct unsigned int a unsigned int b CMyStruct 我向 ASM 函数发送一个 CMyStruct 结构的指针 假
  • 适用于arm(cortex-m3)的位置独立可执行文件(-pie)

    我正在使用codesourcery g lite 基于gcc4 7 2版本 为stm32 Cortex m3 编程 我希望动态加载可执行文件 我知道我有两个选择 1 可重定位的elf 需要一个elf解析器 2 具有全局偏移寄存器的位置无关代
  • ARM 汇编分支到寄存器或内存内部的地址

    我想知道在 ARM 汇编中我可以使用哪条指令分支到存储在某个内存地址中的地址或标签 例如 我们可以使用B LABEL来跳转到LABEL 但现在目的地只能在运行时知道 并且它存储在某个已知的内存位置 是否有类似 B 地址 的东西 Thanks
  • ARM架构中不同处理器模式下如何使用内核堆栈?

    据我了解 每个进程都有一个用户堆栈和内核堆栈 除此之外 ARM 架构中的每种模式都有一个堆栈 所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作 另外 何时会使用与进程关联的内核堆栈 何时会使用与进程关联的内核堆栈 当您进行系统调用
  • C 嵌入式应用程序中 time() 函数的问题

    我在用time 在 ARM 微控制器上 处理器一到达此函数就会重新启动 奇怪的是 当我处于调试模式时 代码运行得很好 但一旦我想将其应用到独立模式 我就会遇到重置 我是否忽略了什么 这个功能有替代品吗 代码部分是这样的 include
  • Linux malloc() 在 ARM 和 x86 上的行为是否不同?

    这个网站上有很多关于内存分配的问题 但是我 找不到专门解决我的问题的人 这 问题 https stackoverflow com questions 19148296 linux memory overcommit details似乎最接近
  • 交叉编译 Qt 4.7 时出现“非法指令”

    我已经在这个问题上苦苦挣扎了一个多星期了 但仍然找不到解决方案 我正在尝试为 ARM 设备交叉编译 Qt 4 7 嵌入式开源版本 构建过程本身可以顺利完成 但生成的二进制文件似乎包含处理器无法理解的指令 构建主机是 i386 上的 Debi
  • 分析 Cortex-M7 (stm32f7) 上的 memcpy 性能

    简洁版本 从 GNU ARM 工具链中提取的 memcpy 的性能指标在 ARM Cortex M7 上对于不同的副本大小似乎差异很大 即使复制数据的代码始终保持不变 这可能是什么原因造成的 长版 我是使用 GNU Arm 工具链 11 2
  • 如何使用 Neon SIMD 将无符号字符转换为有符号整数

    如何转换变量的数据类型uint8 t to int32 t使用霓虹灯 我找不到执行此操作的任何内在因素 假设您想要将 16 x 8 位整数的向量转换为 4 个 4 x 32 位整数的向量 您可以通过首先解压缩为 16 位 然后再次解压缩为
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • 基于 Windows 8 ARM 的平板电脑上的 VB6

    随着 Windows 8 将支持 VB6 我的问题是 Microsoft 是否在任何地方表示 是或否 VB6 应用程序将在基于 ARM 的平板电脑上运行 如果没有 是否有任何 ARM 模拟器 以便我们可以在 Windows 8 ARM 平板
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • DS-5:什么是 FVP、RTSM、基础模型、AEM 模型、快速模型、CADI?

    DS 5 模拟器使用了很多术语 如 FVP RTSM 快速模型 基础模型 AEM 模型 CADI Arm的文档中提供的解释不是很清楚 这些术语的含义是什么 作为 DS 5 的最终用户我应该关心哪些术语 Model 软件模拟的行业术语 就 A
  • saber sd 如何在没有 SPL 的情况下直接从 uboot 启动

    sabre sd 基于 imx 6 最大内部 RAM 约为 150Kb 然而 uboot 足够大 可以容纳在这个空间中 在这个场景中事情是如何进行的 https community freescale com docs DOC 95015
  • Qemu flash 启动不起作用

    我有一本相当旧的 2009 年出版 嵌入式 ARM Linux 书 其中使用u boot and qemu 的用法qemu与u boot书中对二进制的解释如下 qemu system arm M connex pflash u boot b
  • 如何在WinMobile6上启用ARMv6非对齐访问?

    ARMv6 引入了一个很棒的功能 未对齐的内存访问 这使得代码中的某些事情变得更加简单和更快 但微软只在winCE6中提供了API 现在大多数 PDA 都基于 WinMobile6 基于 CE 5 x 默认情况下禁用未对齐访问 我尝试在 C
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t

随机推荐

  • 主力吸筹猛攻指标源码_通达信指标——一目了然,简单易懂的变色成交量副图指标...

    大家好 这期给大家分享的变色成交量副图指标看量柱颜色变化 一目了然 换手率 VOL CAPITAL 100 主力吸筹 换手率 gt 3 AND 换手率 lt 5 COLORFF00FF 加快吸筹 换手率 gt 5 AND 换手率 lt 7
  • 智能指针之与shared_ptr有关的enable_shared_from_this类模板04

    一 enable shared from this模板类详解 什么时候该使用enable shared from this模板类 当我们需要一个类对象返回本身并且该类使用了shared ptr智能指针时 就需要使用enable shared
  • Ubuntu20中,rosdep init失败,无法rosdep update问题的解决。百分百有效。

    一 进入到 sources list d 文件夹 修改 gedit 20 default list cd etc ros rosdep sources list d sudo gedit 20 default list 将里面所有的 raw
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • interview

    收割机博客 https blog csdn net DERRANTCM article details 73456550 查找算法 https blog csdn net derrantcm article details 51534498
  • sqlite升级

    最近开发中遇到了需要改变项目数据库的表中字段 添加新表等需求 而又需要保证原有数据不变 这就涉及到数据库升级 现在就来总结记录一下 包含原表中增加字段 删除字段 修改字段 添加新表等四种升级操作 SQLiteOpenHelper类中有两个方
  • 华为校招机试题-猜字谜-2023年

    题目描述 小王设计了一个简单的猜字谜游戏 游戏的谜面是一个错误的单词 比如nesw 玩家需要猜出谜底库中正确的单词 猜中的要求如下 对于某个谜面和谜底单词 满足下面任一条件都表示猜中 1 变换顺序以后一样的 比如通过变换w和e的顺序 nwe
  • App隐私监管新规实施 隐私合规检测要注意这几点?

    5月1日 国家四部委联合制定的 常见类型移动互联网应用程序必要个人信息范围规定 简称 规定 将正式实施 规定 明确移动互联网应用程序 App 运营者不得因用户不同意收集非必要个人信息 而拒绝用户使用App基本功能服务 要求各地各相关单位督促
  • Linux创建文件的5种方式

    Linux创建文件的5种方式 1 touch 1 1 创建一个文件 touch yyTest ini 1 2 同时创建两个文件 touch test1 txt test2 txt 1 3 批量创建文件 如创建2000个文件 touch te
  • 自定义modal转场动画,滑动手势控制 dismiss 过程

    效果 假设有 1 两个视图控制器 presentingVC presentedVC 2 一个继承于UIPercentDrivenInteractiveTransition 并遵守协议UIViewControllerAnimatedTrans
  • java上传Base64编码格式的图片

    工具类 public class ImageBase64Converter 本地文件 图片 excel等 转换成Base64字符串 param imgPath public static String convertFileToBase64
  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部
  • Scanner类: next() 与 nextLine()与nextInt()

    next nextLine nextInt 是scanner内置的方法 next 1 一定要读取到有效字符后才可以结束输入 2 对输入有效字符之前遇到的空白 next 方法会自动将其去掉 3 只有输入有效字符后才将其后面输入的空白作为分隔符
  • 从零开始入门 K8s

    作者 至天 阿里巴巴高级研发工程师 一 基本知识 存储快照产生背景 在使用存储时 为了提高数据操作的容错性 我们通常有需要对线上数据进行 snapshot 以及能快速 restore 的能力 另外 当需要对线上数据进行快速的复制以及迁移等动
  • 解决cmd命令行运行java程序,编译通过,执行时却找不到主类的问题

    命令行中使用javac命令编译Train通过 使用java命令运行却找不到主类Trian 原因 有package的存在 编译成功后 需要返回上一层文件目录使用java命令执行train Trian 即 java命令后跟 包名称调用主类名称
  • Ubuntu和Windows使用Mmdetection训练Swin-Transformer+Mask-RCNN

    最近想用各种SOTA的Swin Transformer来试试实例分割效果 于是找了一下教程实验了一下 主要分为以下步骤 1 安装Mmdetection 这部分的教程很多 网上搜一下就行了 但是这里出错最多 2 下载Swin Transfor
  • java 获取list中的两两组合,给定一个数组,获取排列组合

    如题 获取一个数组中两两组合 示例 给定一个List lt 1 2 3 4 gt 输出 1 2 1 3 1 4 2 3 2 4 3 4 demo public static void main String args List
  • 几率大的网络安全面试题(含答案)

    其他面试题类型汇总 Java校招极大几率出的面试题 含答案 汇总 几率大的网络安全面试题 含答案 几率大的多线程面试题 含答案 几率大的源码底层原理 杂食面试题 含答案 几率大的Redis面试题 含答案 几率大的linux命令面试题 含答案
  • 【Linux】 Linux使用timedatectl命令修改时间报错

    Linux中可以使用timedatectl命令来修改系统时间信息 具体命令中常见的参数格式及作用如下 参数 作用 status 显示状态信息 list timezones 列出已知时区 set time 设置系统时间 set timezon
  • STM32学习笔记——USB鼠标

    最近搞了好久的STM32模拟USB鼠标 功能就是简单的利用三个按键实现滚轮和鼠标左右键的功能 USB功能其实已经集成好一个库了 我们只是对其中几个函数进行配置而已 其实很多配置还不是太懂 整个USB程序的过程大概就是1 中断配置 2 USB