打印

STM32 USB读写问题

[复制链接]
2633|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tommy000|  楼主 | 2013-5-2 15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人刚刚接触usb,在写一个STM32 USB通信测试程序。设备定义为HID,EP1为输出,EP2为输入。
主函数中
while(1)
{
        if (USB_Receive标志寄存器 == TRUE)
        {
                USB_GetData(DATA,sizeof(DATA));
                USB_SendData(DATA,sizeof(DATA));       
                                                                                          
                if(DATA[0]==0x00)       
                {
                        GPIO_SetBits(GPIOA , GPIO_Pin_9);
                        GPIO_SetBits(GPIOA , GPIO_Pin_6);
                        //delayMS(200);
                        GPIO_SetBits(GPIOC , GPIO_Pin_5);
                        //delayMS(300);
                        GPIO_SetBits(GPIOB , GPIO_Pin_1);
                        GPIO_SetBits(GPIOC , GPIO_Pin_1);
                        GPIO_SetBits(GPIOC , GPIO_Pin_2);
                        //delayMS(10);
                        GPIO_SetBits(GPIOC , GPIO_Pin_0);
                        //PortA_VBAT_PSense_EN;
                        //delayMS(20);
                        PortA_TestItem_Flag=2;
                        GPIO_SetBits(GPIOB , GPIO_Pin_12);
                 }
                 USB_Receive标志寄存器 = FALSE;
        }
}
这样写(把延时函数delayMS都注释掉),通信是正常的,就是主机给设备发送16个字节的数据,设备接收到以后再发送回去。if里面是我的应用里面需要的一些IO口操作。
但是如果把if里面的延时函数加上,那么通信就不正常,只能主机发送数据,设备发送不回来。而且if里面的那些GPIO口,都没有执行。
这个问题很奇怪,逻辑很简单,但是就是一直有问题。
请教各位大侠,多多指点!!!
沙发
grasswolfs| | 2013-5-2 15:47 | 只看该作者
在发送USB数据后面清掉接收标志寄存器试试

使用特权

评论回复
板凳
cjhk| | 2013-5-2 18:48 | 只看该作者
将标志位清零就可以了   应该就是这个问题

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝