OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3765|回复: 2

stm32f4 u盘实验上面增加图片显示,怎样能让图片显示完成后就不再读读u盘了?

[复制链接]

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2015-11-13
在线时间
35 小时
发表于 2016-9-26 23:29:50 | 显示全部楼层 |阅读模式
1金钱
我刚把触摸屏实验程序移植到了读u盘显示图片的程序上面,但是读u盘的时间比较长,影响触摸屏扫描。我吧读u盘显示图片的函数移到大循环外后图片就显示不了。能不能有什么办法让图片显示完后就不再读u盘,直接执行触摸屏的扫描?


下面是主函数
int main(void)
{        
        u8 t;u16 i;
        u16 lastpos[5][2];       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
        delay_init(168);  //3õê¼»ˉÑóê±oˉêy
        uart_init(115200);                //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
        LED_Init();                                //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
        KEY_Init();                                //°′¼ü
          LCD_Init();                                //3õê¼»ˉLCD
        tp_dev.init();                                //′¥ÃtÆá3õê¼»ˉ
        W25QXX_Init();                        //SPI FLASH3õê¼»ˉ
        usmart_dev.init(84);         //3õê¼»ˉUSMART         
        my_mem_init(SRAMIN);        //3õê¼»ˉÄú2¿Äú′æ3Ø       
        exfuns_init();                        //ÎafatfsÏà1رäá¿éêÇëÄú′æ
        piclib_init();                        //3õê¼»ˉ»-í¼
          f_mount(fs[0],"0:",1);         //1òÔØSD¿¨  
          f_mount(fs[1],"1:",1);         //1òÔØSD¿¨  
          f_mount(fs[2],"2:",1);         //1òÔØUÅì
        POINT_COLOR=RED;      
        while(font_init())                                 //¼ì2é×Ö¿a
        {            
                LCD_ShowString(60,50,200,16,16,"Font Error!");
                delay_ms(200);                                  
                LCD_Fill(60,50,240,66,WHITE);//Çå3yÏÔê¾             
                delay_ms(200);                                  
        }
        Show_Str(30,50,200,16,"ì½Ë÷ÕßSTM32F407¿a·¢°å",16,0);                                             
        Show_Str(30,70,200,16,"USB UÅìêμÑé",16,0);                                                     
        Show_Str(30,90,200,16,"2014Äê7ÔÂ22èÕ",16,0);                     
        Show_Str(30,110,200,16,"ÕyμãÔ-×ó@ALIENTEK",16,0);
        Show_Str(30,140,200,16,"é豸ᬽóÖD...",16,0);                                        
        //3õê¼»ˉUSBÖ÷»ú
          USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_Callbacks);  
        while(1)
        {       
                        USBH_Process(&USB_OTG_Core, &USB_Host);
                        ai_load_picfile("2:/aq.jpg",0,0,200,300,1);
                                ai_load_picfile("2:/b.jpg",301,0,159,150,1);
                                ai_load_picfile("2:/c.jpg",301+160,0,300,300,1);
                                tp_dev.scan(0);
                for(t=0;t<OTT_MAX_TOUCH;t++)
                {
                        if((tp_dev.sta)&(1<<t))
                        {
                                if(tp_dev.x[t]<lcddev.width&&tp_dev.y[t]<lcddev.height)
                                {
                                        if(lastpos[t][0]==0XFFFF)
                                        {
                                                lastpos[t][0] = tp_dev.x[t];
                                                lastpos[t][1] = tp_dev.y[t];
                                        }
                                        lcd_draw_bline(lastpos[t][0],lastpos[t][1],tp_dev.x[t],tp_dev.y[t],2,POINT_COLOR_TBL[t]);//??
                                        lastpos[t][0]=tp_dev.x[t];
                                        lastpos[t][1]=tp_dev.y[t];
                                        if(tp_dev.x[t]>(lcddev.width-24)&&tp_dev.y[t]<20)
                                        {
                                                Load_Drow_Dialog();//??
                                        }
                                }
                        }else lastpos[t][0]=0XFFFF;
                }
               
                delay_ms(1);
                t++;
                if(t==200)
                {
                        LED0=!LED0;
                        t=0;
                }
        }       
}


最佳答案

查看完整内容[请看2#楼]

别放WHILE里面啊,你只想执行一次的话,执行完之后,再执行while里面的代码即可。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-9-26 23:29:51 | 显示全部楼层
别放WHILE里面啊,你只想执行一次的话,执行完之后,再执行while里面的代码即可。
回复

使用道具 举报

5

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2015-11-13
在线时间
35 小时
 楼主| 发表于 2016-10-6 16:55:04 来自手机 | 显示全部楼层
正点原子 发表于 2016-9-26 23:29
别放WHILE里面啊,你只想执行一次的话,执行完之后,再执行while里面的代码即可。

不把读u盘显示图片的函数放在while 里面就显示不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-28 21:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表