使用正点原子的mini板例程,SD卡使用SPI连接,USB读卡器是一个单独的任务,按照原子的例程改的,USB库只把hw_config.c文件中断优先级修改了一下,bDeviceState的值变化正常。
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; /* 避免编译器告警 */
USB_Interrupts_Config();
Set_USBClock();
USB_Init();
bsp_DelayMS(1800);
while(1)
{
//OSSchedLock(&err);
bsp_DelayMS(1);
if(bDeviceState==CONFIGURED)
OSSchedLock(&err);
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被拔出了
OSSchedUnlock(&err);
}
USB_STATUS_REG=0;
}
LED2_TOGGLE;
OSTimeDlyHMSM(0, 0, 0, 5, OS_OPT_TIME_HMSM_STRICT,&err);
}
}
请问原子有没有遇见这种问题?有人说是使用USB和UCOSIII冲突,但是我看原子的综合实验在用USB时没有关闭UCOS任务调度
@正点原子
一周热门 更多>