在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SD卡Fatfs文件系統(tǒng)BMP文件讀取顯示

            SD卡Fatfs文件系統(tǒng)BMP文件讀取顯示

            作者: 時(shí)間:2016-12-03 來(lái)源:網(wǎng)絡(luò) 收藏
            調(diào)試了一段時(shí)間才調(diào)試通過(guò),代碼是移植別人的。這段代碼在網(wǎng)上很多,現(xiàn)在測(cè)試通過(guò)了,但是有幾個(gè)小問(wèn)題要注意。

            首先說(shuō)下硬件平臺(tái)是奮斗的stm32開(kāi)發(fā)板,320*240的2.4寸TFT(有點(diǎn)小,)。

            本文引用地址:http://www.biyoush.com/article/201612/325146.htm


            說(shuō)下遇到的問(wèn)題:

            1. startup_stm32f10x_hd.s 文件里再次修改堆棧大小,上次調(diào)試SD卡的時(shí)候就已經(jīng)調(diào)整了,這次再次調(diào)整,見(jiàn)下圖。但是還是有個(gè)問(wèn)題,板子上啊的stm32f103vet6 是512K的ram。按理說(shuō)堆??梢哉{(diào)整到“Stack_Size EQU 0x00080000 ”但是卻只能調(diào)整到0x0000F0F0這個(gè)位置,大家有誰(shuí)知道的可以告訴我。
            • 在操作SD卡的時(shí)候,讀取到BMP文件的內(nèi)容要先釋放到一個(gè)數(shù)組空間里,這個(gè)空間大小要設(shè)定好,否則會(huì)出莫名奇妙的問(wèn)題。
            • BMP圖片的文件名不能太長(zhǎng),否則無(wú)法讀取,這個(gè)應(yīng)該是Fatfs的問(wèn)題,沒(méi)有具體測(cè)試是幾個(gè),但是不能超過(guò)10個(gè)英文字母(包括10個(gè))。
            • 顯示的格式要實(shí)現(xiàn)調(diào)整好,像我這塊屏是320*240的,事先用畫(huà)圖進(jìn)行修改好,他們的尺寸值要是8的倍數(shù),否則讀取時(shí)會(huì)出錯(cuò)。下面是修改的方法,(估計(jì)大家都會(huì),就是怕自己忘記了),見(jiàn)下圖。

            下面就是把代碼貼出來(lái),這個(gè)代碼只是移植成功了,但是BMP文件的格式?jīng)]有去細(xì)致了解,中間一部分代碼沒(méi)有去深入的探究其原因。

            C語(yǔ)言:Codee#20097
            #include "TFCard_BMP.h"
            /*==================================================================
            用到的變量及宏定義
            ==================================================================*/
            BMP_HEADbmp;//圖片文件頭
            BMP_POINTpoint;

            /*==================================================================
            * Function : RGB888ToRGB565
            * Description : 把24位圖變成16位圖
            * Input Para : unsigned char r , unsigned char g , unsigned char b
            * Output Para : void
            * Return Value: 顏色值
            ==================================================================*/
            u32RGB888ToRGB565(unsignedcharr,unsignedcharg,unsignedcharb)
            {
            return(u32) (r&0xF8)<<8| (g&0xFC)<<3| (b&0xF8)>>3;
            }

            /*==================================================================
            * Function : DrawPixel
            * Description : 畫(huà)點(diǎn)函數(shù),在TFT的某一點(diǎn)上畫(huà)一個(gè)顏色點(diǎn)
            * Input Para : unsigned int x , unsigned int y , int Color ===》 x坐標(biāo),y坐標(biāo),顏色值
            * Output Para : void
            * Return Value: void
            ==================================================================*/
            voidDrawPixel(unsignedintx,unsignedinty,intColor)
            {
            LCD_SetGramPoint(x,y);
            LCD_WR_Data(Color);
            }

            /*==================================================================
            * Function : Show_BMP
            * Description : 顯示BMP格式的文件,分為圖片和圖標(biāo),圖片尺寸是240*320是完全顯示,圖標(biāo)只顯示內(nèi)容,其他白色的部分維持原來(lái)的顏色
            * Input Para : unsigned char type , unsigned int point_x , unsigned int point_y , char *path
            ===》 顯示的類(lèi)型:PCITURE圖片,ICON圖標(biāo) ,x軸起始點(diǎn) ,y軸起始點(diǎn) ,圖片在SD卡里的路徑
            * Output Para : void
            * Return Value: void
            ==================================================================*/
            voidShow_BMP(unsignedchartype,unsignedintpoint_x,unsignedintpoint_y,char*path)
            {
            FATFSfs;// 磁盤(pán)掛載點(diǎn)
            FILfil;// 文件打開(kāi)點(diǎn)
            FRESULTres;// 返回值類(lèi)型結(jié)構(gòu)體

            //unsigned char buffer[4096*4]; // file copy buffer
            unsignedcharbuffer[50000];// 這個(gè)數(shù)組和堆??臻g大小直接相關(guān)

            unsignedintbr;// File R/W count
            unsignedlongtx,ty,r_data,g_data,b_data;

            disk_initialize(0);// 初始化磁盤(pán)
            res=f_mount(0,&fs);// 掛載設(shè)備
            while(1)
            {
            res=f_open(&fil,path,FA_OPEN_EXISTING|FA_READ);// 讀取圖標(biāo)路徑
            res=f_read(&fil,&bmp,sizeof(bmp),&br);// 讀取文件
            if((bmp.pic_head[0]==B)&&(bmp.pic_head[1]==M))// 判斷是不是BMP文件
            {
            res=f_lseek(&fil,((bmp.pic_data_address_h<<16)|bmp.pic_data_address_l));// 采用了Windows的BMP格式,BMP原點(diǎn)在左下角
            for(ty=0;ty{
            res=f_read(&fil,buffer,(bmp.pic_w_l)*3,&br) ;
            for(tx=0;tx{
            r_data=*(tx*3+2+buffer);
            g_data=*(tx*3+1+buffer);
            b_data=*(tx*3+0+buffer);
            if(tx<240)
            {
            point.x=tx;
            point.y=bmp.pic_h_l-1-ty;
            point.r=r_data;
            point.g=g_data;
            point.b=b_data;
            if(type==PICTURE)// 如果顯示的是圖片的話(huà),白色部分照常顯示
            {
            DrawPixel(point.x+point_x,point.y+point_y,RGB888ToRGB565(point.r,point.g,point.b));
            }
            elseif(type==ICON)// 如果顯示的是圖標(biāo)的話(huà),白色部分不顯示
            {// 以下代碼根據(jù) DrawPixel() 函數(shù)更改增加
            LCD_SetGramPoint(point.x+point_x,point.y+point_y);// 設(shè)定x軸,y軸的坐標(biāo)
            if(RGB888ToRGB565(point.r,point.g,point.b)==0xFFFF)// 判斷是不是白色部分
            {
            LCD_WR_Data(ili9320_BGR2RGB(LCD_RD_data()) );// 如果是白色就讀取當(dāng)前顏色值并顯示
            }
            else
            {
            LCD_WR_Data(RGB888ToRGB565(point.r,point.g,point.b) );// 如果不是白色就顯示ICON的顏色
            }

            }

            }
            }
            }
            f_close(&fil);// 關(guān)閉文件
            f_mount(0,NULL);// 卸載設(shè)備
            break;// 跳出while(1)
            }// End of if((bmp.pic_head....
            }// End of while(1)....
            }// End of void Show_BMP(....


            有什么錯(cuò)誤或者不對(duì)的地方歡迎大家批評(píng)指正。


            評(píng)論


            技術(shù)專(zhuān)區(qū)

            關(guān)閉