例程的USB完全无动作。我查了一下发现在USB——bsp.c文件里面对USB端口定义如下:
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
#ifndef USE_STM3210C_EVAL
GPIO_InitTypeDef GPIO_InitStructure;
#endif
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef USE_STM3210C_EVAL
RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE) ;
#else // USE_STM322xG_EVAL
#ifdef USE_USB_OTG_FS
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA , ENABLE);
。。。。。
也就是说你的预编译定义了“USE_STM3210C_EVAL”的话就不对USB的PORTA做初始化。可是在项目预定义却定义了这个“USE_STM3210C_EVAL”,结果我的板上USB连响应都没有。。。。难道用这个库就不用定义USB的PORTA了吗?因为我有一条GPIO来控制USB上拉我尝试强行加入原来的GPIOA定义。结果就是找不到设备。。。无解地说。。。
以下代码是更改后找不到设备:
void USB_OTG_BSP_Init(USB_OTG_CORE_HANDLE *pdev)
{
#ifndef USE_STM3210C_EVAL
GPIO_InitTypeDef GPIO_InitStructure;
#endif
#ifndef USE_ULPI_PHY
#if defined(USB_OTG_FS_LOW_PWR_MGMT_SUPPORT) || defined(USB_OTG_HS_LOW_PWR_MGMT_SUPPORT)
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
#endif
#endif
#ifdef USE_STM3210C_EVAL
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphResetCmd( RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOC
| RCC_APB2Periph_AFIO, DISABLE);
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOC
| RCC_APB2Periph_AFIO, ENABLE);
// Configure PA11, PA12 as USB lines
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure PG11 USB connect.
GPIO_WriteBit(GPIOA,GPIO_Pin_10,Bit_SET);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_WriteBit(GPIOA,GPIO_Pin_10,Bit_RESET);
RCC_OTGFSCLKConfig(RCC_OTGFSCLKSource_PLLVCO_Div3);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_OTG_FS, ENABLE) ;
#else // USE_STM322xG_EVAL
#ifdef USE_USB_OTG_FS
。。。。。。
|