第五篇?阿波罗的RGB屏幕显示图片还是会挺清晰的
时间:10-02
整理:3721RD
点击:
在了解了正点原子的屏幕代码之后,我发现为了驱动某一特定的屏幕(RGB或者MCU屏),官方的代吗有很多冗余的地方,于是我就把需要的函数提取出来移植到了IAR的IDE下。完整的代码在github上。
https://github.com/iysheng/apollo
具体的正点原子的代码,我就不在这里班门弄斧的分析了,主要说一些官方代码里面没有的部分。我发现官方代码里面有直接显示ascii码的函数。但是没有直接显示图片的函数,于是我就添加了这么一个函数。主要代码如下:
为了正常显示图片,我们需要这样设置:
然后, 我们就可以显示这样图片了,调用方法如下:
通过Img2Lcd 软件导出来的。
看下显示效果吧:
特意和我的笔记本作了一个对比,借助了@3guoyangyang7的创意,在此表示感谢。
再上传一张图片和字符串一起显示的图片:
完整的代码在github上https://github.com/iysheng/apollo,欢迎大家fork。
https://github.com/iysheng/apollo
具体的正点原子的代码,我就不在这里班门弄斧的分析了,主要说一些官方代码里面没有的部分。我发现官方代码里面有直接显示ascii码的函数。但是没有直接显示图片的函数,于是我就添加了这么一个函数。主要代码如下:
- /*
- *added by iysheng@163.com
- *posx,posy:图像的起始点坐标
- *uint8_t* 图像数组收地址
- */
- void APPOLO_RGB(uint16_t posx,uint16_t posy,uint8_t *pic)
- {
- uint32_t width,high,piex,uitemp[2];
- if(pic[0]&0x01)
- {
- width=(pic[2]<<8)|pic[3];
- high=(pic[4]<<8)|pic[5];
- for(uitemp[0]=0;uitemp[0]<width;uitemp[0]++)
- {
- for(uitemp[1]=0;uitemp[1]<high*2;)
- {
- piex=((pic[(high<<1)*uitemp[0]+uitemp[1]])<<8)|(pic[(high<<1)*uitemp[0]+uitemp[1]+1]);
- LTDC_Draw_Point(uitemp[0]+posx,posy+uitemp[1]/2,(uint32_t)(piex));
- uitemp[1]+=2;
- }
- }
- }
- }
为了正常显示图片,我们需要这样设置:
然后, 我们就可以显示这样图片了,调用方法如下:
- APPOLO_RGB(0,0,gImage_xiong);
通过Img2Lcd 软件导出来的。
看下显示效果吧:
特意和我的笔记本作了一个对比,借助了@3guoyangyang7的创意,在此表示感谢。
再上传一张图片和字符串一起显示的图片:
完整的代码在github上https://github.com/iysheng/apollo,欢迎大家fork。
忘记说了,要想驱动屏幕,官方的代码中使用了DMA2D。所以我们需要先驱动SDRAM,因为中间使用到了地址空间0xc0000000。该地址空间位于外部RAM空间。
赞一个哦,学习分享