stm32F103zet6 custom hid usb 分包发送大容量数据的方法

本文介绍如何使用STM32F103ZET6单片机通过USB定制HID设备发送大容量数据。通过CubeMX配置相关参数,实现数据拆包分包发送。注意静态内存分配和40ms的延时以避免数据丢失。提供分包发送的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:利用cube MX 工具生成custom hid usb设备代码,配置相关参数,实现利用custom hid usb传送大容量数据的功能

实现思路:stm32f103zet6单片机内置usb2.0模块,每次上传数据最大64字节一包,所以如果想要上传一个比如1024字节的数组,那么就需要进行拆包,然后分包发送。

注意事项:

  1. 我在调试过程中,把自定义的uint8_t array[1000];数组放到了main函数中, 结果程序下载完毕,单片机直接卡死,改成static uint8_t array[1000];即可。

  1. 每发送一包后要有一个40ms的延时,如果延时过低,那么就会在上位机没取完缓冲区的数据的情况下继续发送下包导致数据发送缺失的情况出现

  1. 发送每一包之前都要线清空一下发送缓冲区

分包发送代码如下

#define USB_TX_BUFFER_SIZE 64
uint8_t USB_Tx_Buffer[USB_TX_BUFFER_SIZE];
void USB_send_data_split(uint8_t* data, uint32_t len)
{
    uint32_t sent = 0;
    while (se
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值