打印
[STM32F1]

STM32 USB实验遇到的问题

[复制链接]
1954|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
csf4824521|  楼主 | 2014-1-17 18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在USB实验的代码上直接修改后烧写到开发板上,用USB读写SD卡都没有问题。移植到我自己的工程中之后出现了以下几个问题:
1.USB_Init这个函数过不去,一路跟踪之后发现问题出在PowerOn函数里我试着给延时没有用,如果放一个printf()语句在这里居然就能过去了,不管是什么样的内容的printf语句都可以,请问这是为什么?
这是PowerOn的内容:
RESULT PowerOn(void)
{
  u16 wRegVal;
  USB_Cable_Config(ENABLE);
  wRegVal = CNTR_FRES;
  _SetCNTR(wRegVal);
  wInterrupt_Mask = 0;
  _SetCNTR(wInterrupt_Mask);
  printf("");  //必须在这里加其他地方不行
  _SetISTR(0);
  wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM;
  _SetCNTR(wInterrupt_Mask);
  return USB_SUCCESS;
}

这是我的usart
void USART_GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;   
    GPIO_Init(GPIOA, &GPIO_InitStruct);
   
}

void USART_Configuration(void)
{
    USART_InitTypeDef USART_InitStruct;
   
    USART_InitStruct.USART_BaudRate = 115200;
    USART_InitStruct.USART_StopBits = USART_StopBits_1;
    USART_InitStruct.USART_WordLength = USART_WordLength_8b;
    USART_InitStruct.USART_Parity = USART_Parity_No;
    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;   //使能接收和发送
   
    USART_Init(USART1, &USART_InitStruct);
    USART_Cmd(USART1, ENABLE);//使能串口1
    USART_GPIO_Configuration();
}

2.USB在PC上显示的是无法识别的设备,因为我使用了systick定时器在定时器中加了一个闪烁LED灯来显示定时器正常工作,而我的开发板上对应的USB引脚有三个:DP,DM和RDY,分别为PA12,PA11,PA8,光设置11和12还不行必须要设置8脚,在USB_Cable_Config中也要用8脚,改实验代码的时候就是使能8脚后才成功读写的。但是现在的问题是一旦我使能8脚我的系统时钟好像基础问题了,前面提到的systick定时器中的闪烁灯就常亮,不再闪烁,而USB设备也显示无法识别,一屏蔽8脚的设置之后,systick就工作正常,我的其他模块也工作正常,但是就连无法识别的USB设备都没有了,请教该怎么解决

传不上来本地图片
沙发
yang4469| | 2014-1-18 11:18 | 只看该作者
建议你看下你的原理图,你的PA8肯定是用来控制PA12上拉的,D+不上拉,host如何检测到有USB设备的接入
你的PA8明显和时钟那边冲突了,办法是不在用PA8来控制上拉,可以人为的硬件上接一个上拉,最好是更改你工程里面的控制哎上拉管脚

使用特权

评论回复
板凳
拿起书本| | 2014-1-25 19:46 | 只看该作者
论坛里关于这方面的讨论真是不少,楼主可以认真搜下。

使用特权

评论回复
地板
woshansi| | 2014-1-25 21:01 | 只看该作者
不知道,lz我也有个问题,我的usb的hid的键盘程序发不出来按键值,能提个醒是为啥吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

8

帖子

0

粉丝