Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
USB主机_host
CherryUSB
Studio环境下ST M7系列USB主机(CherryUSB)配置及踩坑
发布于 2025-04-05 17:57:31 浏览:115
订阅该版
[tocm] # 感谢 [@sakumisu](/u/0e57f90a3018a1b9)(CherryUSB作者)的多次指点。 **文档是飞书直接复制过来的,排版不好看,不过我相信应该看得懂** **可能有些地方后面实际更正了,但是文档忘了更新** # Cubemx   # Settings 不需要添加RTT的USB组件     # 其他必要工作 ## 手动添加init设备对接协议栈  以下是代码 ```c void usb_hc_low_level_init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USB; PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) { Error_Handler(); } HAL_PWREx_EnableUSBVoltageDetector(); __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; GPIO_InitStruct.Alternate = GPIO_AF10_OTG1_FS; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); __HAL_RCC_USB_OTG_FS_CLK_ENABLE(); HAL_NVIC_SetPriority(OTG_FS_IRQn, 0, 0); HAL_NVIC_EnableIRQ(OTG_FS_IRQn); } void OTG_FS_IRQHandler(void) { extern void USBH_IRQHandler(uint8_t busid); USBH_IRQHandler(0); } int usbh_init(void) { usbh_initialize(0, USB2_OTG_FS_PERIPH_BASE); return 0; } INIT_APP_EXPORT(usbh_init); ``` ## 添加USB设备内存地址  ```c . = ALIGN(4); __usbh_class_info_start__ = .; KEEP(*(.usbh_class_info)) __usbh_class_info_end__ = .; ``` ## 屏蔽rtt软件包自带的初始化函数  ## 配置config参数  ## 修改软件定时器栈大小  ## 添加NOCACHE(针对高端芯片) 因为用到了DMA,所以有一个一致性问题   ```c RAM_nocache (rwx) : ORIGIN =0x24070000,LENGTH =64k ._nocache_ram (NOLOAD): { . = ALIGN(4); *(.noncacheable) } >RAM_nocache ``` 此时编译,就可以查看map文件地址,nocache数组位置正确与否  前面只是设置了数组位置,我们还没有讲这个位置配置成nocache  附上这段代码和,kconfig配置 ```python config BSP_USING_USBH bool "Enable USB HOST" default n if BSP_USING_USBH config BSP_USB_NOCACHE bool "Enable USB NOCACHE" default n endif ``` # 各种log错误 ## This dwc2 version does not support dma mode, so stop working 该 DWC2 版本不支持 dma 模式,禁止使用。或者是因为寄存器地址错误,如下   ## Your fifo config is overflow, please check   Failed to get device descriptor,errorcode:-12 配置nocache ## 能识别到插拔,插上立即崩溃  可能的情况很多,我遇到的这个情况是栈问题,根本问题是nocache的地址设置错误 ## 能识别到插拔,但枚举不到报错误log,   直接把mpu全关了 也有不关闭mpu的方法,“参考文档,和demo,还有视频”————sakumisu 我看的demo
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
wake_mirco
这家伙很懒,什么也没写!
文章
2
回答
18
被采纳
1
关注TA
发私信
相关文章
1
RT-Thread Studio USBHOST问题。
2
STM32F407遇到USB读取U盘无法读取问题
3
解决usbhost 无法使用hid设备的问题,
4
usbhost无法设别NTFS格式的U盘吗?
5
stm32f767配置usb host
6
有偿开发基于RT-thread+M3 实现 USB host RNDIS
7
No class register on usb device
8
USB Host 鼠标键盘枚举无法获取HID设备描述符
9
RT-Thread Studio USBHOST
10
USB host设备调试问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
I2C_IIC
cubemx
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
keil_MDK
Debug
SFUD
ulog
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
4
个答案
2
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
聚散无由
3
个答案
1
次被采纳
a1012112796
2
个答案
1
次被采纳
加缪
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部