打印

STM32 USB通信问题

[复制链接]
2022|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tommy000|  楼主 | 2013-5-2 15:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人刚刚接触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口,都没有执行。
这个问题很奇怪,逻辑很简单,但是就是一直有问题。
请教各位大侠,多多指点!!

相关帖子

沙发
powder| | 2013-5-8 21:02 | 只看该作者
这样延时会有问题,usb、上位机不能老是等你啊,usb应该在dma方式传输。做两个buf跳出来吧。

使用特权

评论回复
板凳
dongshuangrui10| | 2013-5-9 17:21 | 只看该作者
上面的STM32用USB和什么通讯?计算机吗?

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝