stm32f103 USB读卡器实验移植到UCOSIII中出现问题

2019-07-21 06:13发布

使用正点原子的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任务调度@正点原子
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。