新手上路
- 积分
- 24
- 金钱
- 24
- 注册时间
- 2020-5-13
- 在线时间
- 21 小时
|
20金钱
我使用的是STM32F767IGT6,CPU和阿波罗开发板是一样的。但是我使用的是PB14 和PB15引脚,阿波罗用的是PA11,12。
PA11,12用的是USB_OTG_FS模式,但PB14,15没有USB_OTG_FS,只有USB_OTG_HS模式,网上有人说HS也是可以当FS模式用的。
我把usb_bsp.c的底层代码配置过以后,如果我把Cache_Enable();屏蔽掉的话,USB是可以正常识别U盘的,但是如果把Cache_Enable();加上的话,就没办法识别了。
请问有人在使用STM32F7的时候遇到过这个问题吗?
附上我的配置代码(usb_bsp.c)
//USB OTG 底层IO初始化
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE(); //使能GPIOA时钟
__HAL_RCC_USB_OTG_HS_CLK_ENABLE(); //使能OTG FS时钟
//配置PA11 12
GPIO_InitStruct.Pin=GPIO_PIN_14|GPIO_PIN_15; //PA11 12
GPIO_InitStruct.Mode=GPIO_MODE_AF_PP; //复用
GPIO_InitStruct.Pull=GPIO_NOPULL; //无上下拉
GPIO_InitStruct.Speed=GPIO_SPEED_HIGH; //高速
GPIO_InitStruct.Alternate=GPIO_AF12_OTG_HS_FS; //复用为OTG FS
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); //初始化
}
//USB OTG 中断设置,开启USB FS中断
//pdev:USB OTG内核结构体指针
void USB_OTG_BSP_EnableInterrupt(USB_OTG_CORE_HANDLE *pdev)
{
HAL_NVIC_SetPriority(OTG_HS_IRQn,0,3); //抢占优先级0,子优先级3
HAL_NVIC_EnableIRQ(OTG_HS_IRQn); //使能OTG USB FS中断
}
//USB OTG 中断服务函数
//处理所有USB中断
void OTG_HS_IRQHandler(void)
{
USBH_OTG_ISR_Handler(&USB_OTG_Core);
}
|
|