完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在开发板上写了个USB HID键盘的测试程序,功能是从USART1接收到数据后,从USB发送到PC机。代码是基于USB-JoyStickMouse修改的。
现在遇到的问题是,拨动摇杆四个方向键,可以往PC上发送字符。但是接收到串口中断后,往PC机上发送数据失败,用Bus Hound软件监视的话,可以看到USB发过来的是全零的数据。 while (1) { if (bDeviceState == CONFIGURED) { if (JoyState() != 0) { Joystick_Send(JoyState()); //发送一个字符到PC //Delay(100); Joystick_Send(0); //停止发送 //按键发送OK,PC机能收到字符 } } #if 1 if (get_rx_data) { Joystick_Send(LEFT); //发送一个字符到PC //Delay(100); Joystick_Send(0); //停止发送 //如果注释掉这句话,PC机上可以收到数据,相当于一个按键被长按住的效果,不注释掉的话PC上收不到字符 rx_counter = 0; get_rx_data = FALSE; } #endif } |
|
相关推荐
1个回答
|
|
从您的描述来看,您在STM32F103RCT6开发板上编写了一个USB HID键盘测试程序,该程序的功能是接收USART1的数据,然后通过USB发送到PC机。您提到拨动摇杆四个方向键可以正常发送字符到PC,但是当接收到串口中断后,往PC机上发送数据失败,且Bus Hound软件显示接收到的数据为全零。
为了解决这个问题,我们可以按照以下步骤进行排查: 1. 确保USART1配置正确:首先检查USART1的配置是否正确,包括波特率、数据位、停止位和奇偶校验位等参数。确保这些参数与发送端的串口配置相匹配。 2. 检查串口中断处理函数:确认串口中断处理函数(如USART1_IRQHandler)是否正确实现了数据接收和存储。确保在接收到数据后,将其存储在适当的缓冲区中,以便后续通过USB发送。 3. 检查USB HID键盘数据发送函数:检查负责将数据从USART1发送到PC的USB HID键盘数据发送函数。确保该函数能够正确地从缓冲区读取数据,并将其封装成USB HID报告,然后通过USB发送。 4. 检查USB HID报告结构:确认USB HID报告的结构是否正确,特别是与键盘相关的字段。确保报告中的键盘数据字段能够正确地反映从USART1接收到的数据。 5. 检查USB HID驱动:确认PC上的USB HID驱动是否正常工作,能够正确解析从STM32F103RCT6发送的USB HID报告。如果可能,尝试在不同的PC上测试,以排除驱动问题。 6. 使用调试工具:使用STM32的调试工具(如ST-LINK)进行调试,逐步跟踪程序的执行过程,找出可能导致问题的地方。 7. 检查代码逻辑:仔细检查代码逻辑,确保在接收到串口中断后,程序能够正确地处理数据并发送到PC。 通过以上步骤,您应该能够找到导致发送数据失败的原因,并进行相应的修复。如果问题仍然存在,建议您查阅相关文档和示例代码,或者寻求社区和论坛的帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1568 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1513 浏览 1 评论
939 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
669 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1561 浏览 2 评论
1851浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
620浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
506浏览 3评论
511浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
492浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-13 05:33 , Processed in 0.718209 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号