STM32 USB读写问题

[复制链接]
3008|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

粉丝
快速回复 在线客服 返回列表 返回顶部