stm32f103在主程序中先执行ov2640拍照程序后,再执行usb读卡器实验,电脑不能读取出板子上的sd卡

2019-07-21 02:25发布

stm32f103在主程序中先执行ov2640拍照程序后,再执行usb读卡器实验,电脑不能读取出板子上的sd卡。
备注:是同一个main主程序中执行,依次执行两个实验


1.如果先执行usb读卡器实验,再执行camera实验,camera照相会特别模糊,后来找到办法解决了。执行SDIO->ICR=0X5FF;         //清除所有sdio标记后解决

2.如果先执行camera实验,再执行usb读卡器实验,在电脑上不能读取出sd卡。执行SDIO->ICR=0X5FF;也没解决。然后发现在camera实验中执行了
f_mount(fs[0],"0:",1);                 //挂载SD卡
f_mount(fs[1],"1:",1);                 //挂载FLASH.
可能是这个的影响?然后我尝试在执行完camera程序后执行:
f_mount(NULL,"0:",1);                //取消挂载sd卡.
f_mount(NULL,"1:",1);                 //取消挂载FLASH.

但是,还是不能在电脑上读取sd卡?

该怎么解决呢?是camera哪儿的什么设置影响了usb程序,才导致不能读取出sd卡?该怎么解决???

附:camera部分代码

        usmart_dev.init(72);                //初始化USMART               
                BEEP_Init();                        //蜂鸣器初始化         
       
        exfuns_init();                                //为fatfs相关变量申请内存  
       
        f_mount(fs[0],"0:",1);                 //挂载SD卡
        f_mount(fs[1],"1:",1);                 //挂载FLASH.
                POINT_COLOR=RED;   
                         Show_Str(30,50,200,16,"STM32F103 开发板",16,0);                                             
        Show_Str(30,70,200,16,"OV2640照相机实验",16,0);                                     
        Show_Str(30,90,200,16,"KEY0:拍照(bmp格式)",16,0);                                     
        Show_Str(30,110,200,16,"KEY1:拍照(jpg格式)",16,0);                                                     
        Show_Str(30,130,200,16,"2015年4月16日",16,0);
        res=f_mkdir("0:/PHOTO");                //创建PHOTO文件夹
        if(res!=FR_EXIST&&res!=FR_OK)         //发生了错误
        {                    
                Show_Str(30,150,240,16,"SD卡错误,无法拍照!",16,0);                                         
                sd_ok=0;         
        }
        ov2640_framebuf=mymalloc(SRAMIN,52*1024);//申请帧缓存
        pname=mymalloc(SRAMIN,30);                //为带路径的文件名分配30个字节的内存       
       
        while(!pname||!ov2640_framebuf)        //内存分配出错
        {            
                Show_Str(30,150,240,16,"内存分配失败!",16,0);
                delay_ms(200);                                  
                LCD_Fill(30,150,240,146,WHITE);//清除显示             
                delay_ms(200);                                  
        }                                                                                             
        while(OV2640_Init())                        //初始化OV2640
        {
                Show_Str(30,150,240,16,"OV2640 错误!",16,0);
                delay_ms(200);
            LCD_Fill(30,150,239,206,WHITE);
                delay_ms(200);
        }
       
        Show_Str(30,170,200,16,"OV2640 正常",16,0);
        delay_ms(1500);                          
        //TIM6_Int_Init(10000,7199);        //10Khz计数频率,1秒钟中断,屏蔽则不打印帧率                                                                          
        OV2640_RGB565_Mode();                        //RGB565模式
          OV2640_OutSize_Set(lcddev.width,lcddev.height);
        ov2640_speed_ctrl();
        MYDMA_SRAMLCD_Init((u32)ov2640_framebuf);         
       


该怎么解决呢?是camera哪儿的什么设置影响了usb程序,才导致不能读取出sd卡?该怎么解决???



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。