STM32F103 开发USB设备端点超过ENDP4以上时崩溃问题的解决

开发STM32F103的符合USB设备或者类似程序时有时会遇到端点序号超过ENDP4的情况,此时建立过程应该是没问题的,只是当发送用户数据时运行到UserToPMABufferCopy时会进入HardFault_Handler,解决这个问题,需要修改ENDP0_RXADDR和ENDP0_TXADDR的值,在usb_conf.h中,将下面原来的值

复制代码
/* buffer table base address */
/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x18)
#define ENDP0_TXADDR        (0x58)

修改为:

复制代码
/* buffer table base address */
/* buffer table base address */
#define BTABLE_ADDRESS      (0x00)

/* EP0  */
/* rx/tx buffer base address */
#define ENDP0_RXADDR        (0x20)
#define ENDP0_TXADDR        (0x60)

也就是宽度增加了8个字节,后面每增加一个端口,都要增加这个宽度。

相关推荐
电子工程师成长日记-C511 小时前
51单片机语音实时采集系统
单片机·嵌入式硬件·51单片机
liefyuan2 小时前
【设备树】SDIO节点属性
单片机·嵌入式硬件
LCG元2 小时前
故障预测与健康管理:STM32G4监控自身参数,早期预警
stm32·单片机·嵌入式硬件
ipod7412 小时前
STM32 GPIO控制器及其应用
stm32·单片机·嵌入式硬件
逐步前行2 小时前
STM32_USART_串口通信
stm32·单片机·嵌入式硬件
我不是程序猿儿2 小时前
【嵌入式】趣味理解“volatile”
stm32·单片机·嵌入式硬件·学习
謓泽2 小时前
【51单片机】DS18B20温度传感器(1-Wire)
单片机·嵌入式硬件·51单片机
F137298015572 小时前
220V降5V,100MA非隔离离线恒压稳压器WD5202A
stm32·单片机·嵌入式硬件·51单片机
电子工程师成长日记-C513 小时前
51单片机PM2.5监测系统
单片机·嵌入式硬件·51单片机