利用STM32模拟键盘遇到问题的解决方案

是STM32小白,刚入门那种。用的是:正点原子精英版(STM32F103ZET6) + win7(PC)

昨天按照CSDN上一片保姆级教程开始完成键盘的模拟,卡了不少常见bug,在这里记录下。

原文链接如下:(228条消息) 基于STM32的USB键盘制作(保姆级)(一)_stm32 usb键盘_元韭菜的博客-CSDN博客

1、遇到的问题:没有生成工程文件

一开始选择的是这个模式,这里原文作者没有细讲,所以在导入工程时废了很长时间搞清楚各个头文件的位置并添加路径(同时也要注意keil新建工程的时候一开始的选项里一定要勾选STARTUP,不然会很麻烦

 后面发现应该选择keil模式,这样会输出一个完整工程

2、第二次遇到的问题是生成的工程不能运行成功,这里借用下其他作者的图

 查阅了很多资料,发现是我的存储路径有中文的原因,更改了文件夹名字后依旧运行不了,发现是安装的时候这个文件夹的名字是中文,所以一直没能成功。只要重新创建一个英文文件夹并将STM32CUBEMX和JRE重新安装即可

3、这里对原文进行一些拓展补充

在实现按键输出之后会遇到的问题是:

一、按键一旦按下则会不断输出,也可以说是按键不会弹出,在查阅HID报文后发现可以令带信息的报文为0在发送一次就能够实现按键的弹出

 这样就会弹出,不过由于我使用的是多输入多输出模式,不知道为什么这段代码会导致下段代码无法输出,这点仍需后续考察。

二、我使用的是AD多通道转换与USB-HID相结合的形式,利用外接传感器实现对键盘的操控,存在的问题是往往会有一个AD口失灵,尝试修改采样时间后问题解决。猜测是由于采样时间过短采样过快导致该AD口信息被覆盖。

 三、这里介绍下HID报文发送格式

作者代码中E的报文如图,通过不断修改发现M的如上,通过不断测试后发现由于我的报文描述符描述的报文长度为8字节 ,选定的键盘的usage page为07页,在该页中,A应该是hidbuffer[2]=0x10,B为hidbuffer[2]=0x20,而G为hidbuffer[3]=0x04,即每八位对应上述划分的八个键盘符号,每当一位为1时,则表示该键被按下,同时为1则同时被按下,所以0xFF表示该区间所有按键都被按下。当然更深入的了解需要详细查阅HID的报文格式后才能理解。

四、当使用DMA采集信号时如果在stm32cubemx设置为Half Word时要注意下面这个参数,将其强制转换成32位

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 IIC实验中,可能会遇到以下问题: 1. IIC总线无法正常通信 如果IIC总线无法正常通信,可能是因为IIC参数配置不正确或者硬件连接有误导致的。需要确认以下几点: - 确认IIC参数配置正确,包括时钟频率、传输模式、从设备地址等参数 - 确认IIC的时钟已经使能 - 确认IIC硬件连接正确,包括IIC接口、连接线和外部设备等 2. 无法识别从设备或者读取数据错误 如果无法识别从设备或者读取数据错误,可能是因为从设备地址或者数据传输方式不正确导致的。需要确认以下几点: - 确认从设备地址正确,可以通过示波器等工具观察数据传输情况并进行调试 - 确认数据传输方式正确,可以通过示波器等工具观察数据传输情况并进行调试 解决方法: 在使用STM32 IIC总线时,可以采用以下步骤进行配置和编程: 1. 配置IIC参数 使用I2C_Init函数对IIC总线进行配置,设置相应的时钟频率、传输模式、从设备地址等参数。 2. 编写读写函数 根据需要编写IIC读写函数,并在函数中进行相应的处理。需要注意的是,读写函数应该尽可能的简单,避免长时间占用CPU资源,否则可能会影响其他重要任务的执行。 3. 烧录程序 将程序烧录到STM32芯片中,通过读写函数进行IIC通信,观察数据传输情况和读写函数的执行情况。 需要注意的是,在编写程序时需要遵循一些规范和最佳实践,如使用宏定义等方法来定义常量和变量,避免使用硬编码方式;使用示波器等工具来观察数据传输情况,以便进行调试和优化。同时,建议在进行IIC通信时,先进行单独测试,确保硬件连接正确和从设备地址正确,再进行整体测试,以便减少出错的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值