初级会员

- 积分
- 112
- 金钱
- 112
- 注册时间
- 2017-12-21
- 在线时间
- 42 小时
|

楼主 |
发表于 2019-1-2 12:09:26
|
显示全部楼层
SD卡通过SPI2连接,使用DMA发送接收数据
void AppTaskUsb (void *p_arg)
{
u8 offline_cnt=0;
u8 tct=0;
u8 USB_STA;
u8 Divece_STA;
OS_ERR err;
int i=0;
(void)p_arg; /* 避免编译器告警 */
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
bsp_DelayMS(1800);
while(1)
{
bsp_DelayMS(1);
if(USB_STA!=USB_STATUS_REG)//状态改变了
{
if(USB_STATUS_REG&0x01)//正在写
{
USB_STATUS_REG&=0xFD;//清除读标记
}
if(USB_STATUS_REG&0x02)//正在读
{
USB_STATUS_REG&=0xFE;//清除写标记
}
USB_STA=USB_STATUS_REG;//记录最后的状态
}
if(Divece_STA!=bDeviceState)
{
Divece_STA=bDeviceState;
}
i++;
if(i==200)//200ms时间到了
{
i=0;
if(USB_STATUS_REG&0x10)
{
offline_cnt=0;//USB连接了,则清除offline计数器
bDeviceState=CONFIGURED;
}else//没有得到轮询
{
offline_cnt++;
if(offline_cnt>10)bDeviceState=UNCONNECTED;//2s内没收到在线标记,代表USB被拔出了
}
USB_STATUS_REG=0;
}
LED2_TOGGLE;
OSTimeDlyHMSM(0, 0, 0, 5, OS_OPT_TIME_HMSM_STRICT,&err);
}
}
是不是USB也要做互斥处理 |
|