首先,我对RT-THREAD同正点原子合作的这块板子,给好评,集成了WIFI芯片不说,编程和STM32系列的几乎没有什么差别。
太对我胃口了。这款片子还是SOC芯片。另外集成外设也多。真是学习RT-THREAD必备之良器。
这个相册,我考虑有一段时间了。我觉得屏我的实力可以搞定。
它涉及两大方面,一方面从SD卡读文件。另一方面显示。
而SD卡方面涉及到加文件系统,能否从SD卡顺利读出,读出个什么东东,能否在显示屏上显示。
虽然很简单但做起来就是不易,唉!没有免费的早餐。
一、准备相册图片
以在是淘宝东积院(东北积木设计院)的照片,我用图画截为240*240的小画:
然后,再用取模软件取模,取成高位在前,不要文件头的16位真彩色565格式:
这还没完然后用C2B转换助手转为BIN文件,就是把数组转成BIN文件。
还不算完,再准备个SD卡及读卡器,把文件都考到SD卡上。
二,搭建环境及编程
一开始我还看不上RT-THRAD的环境。menuconfig介不同LINUX一样了么???想当年我可是花了不少银子
,买了个开发板又买了十几本书攻过LINUX来这,所以我一看到界面有点不太高兴。
但是用一下,觉得不错。我选得是FS那个例程,但是里边没显示,我就把显示加上。
至于ENV的环境,官网上也有这里不多说,在ENV键入menuconfig
以下是FS文件系统,网上有参考说明的,我不想多说
然后保存
在ENV环境中键入
pkgs --update
然后键入
scons -- mdk5
然后就可以编程了
本人程序如下:(电子相册)
先说下思路,就是利用一个缓存,循环读入BIN文件,然后马上显示。
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2019-05-16 yangjie first implementation
*/
#include <rtthread.h>
#include <dfs_fs.h>
#include <drv_lcd.h>
#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#include <dfs_posix.h>
uint8_t buffer[115200];
int fd,size;
uint8_t iii;
int main(void)
{
rt_device_t sd_device = RT_NULL;
lcd_clear(WHITE);
#ifdef BSP_USING_TF_CARD
/* 挂载 TF 卡中的文件系统,参数 elm 表示挂载的文件系统类型为 elm-fat 文件系统*/
if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
{
LOG_I("Filesystem initialized!");
}
else
{
LOG_E("Failed to initialize filesystem!");
}
#endif /*BSP_USING_TF_CARD*/
while(1)
{
if(iii == 0)
fd = open("/tt1.bin",O_RDONLY);
else if(iii == 1)
fd = open("/tt2.bin",O_RDONLY);
else if(iii == 2)
fd = open("/tt3.bin",O_RDONLY);
else if(iii == 3)
fd = open("/tt4.bin",O_RDONLY);
if(fd >=0 )
{
size = read(fd,buffer,sizeof(buffer));
close(fd);
if(size < 0)
return 0;
}
lcd_show_image(0, 0, 240, 239, buffer);
iii++;
if(iii >= 3)
iii = 0;
}
return 0;
}
三,验证
这里传个视频,第三幅再转成BIN文件时就提示有非法数据,我觉得是转换软件碰到了不识别的东东。与本个程序无关。
也等有机会改进一下。本人认为我的开发板都在吃灰,而这个小板板居然可以看看我喜欢的图片。平时我得多拿出来看看哈。
以下是视频链接:
https://v.youku.com/v_show/id_XNDQ1NDI4ODYyMA==.html?spm=a2h3j.8428770.3416059.1
此内容由EEWORLD论坛网友ddllxxrr原创,如需转载或用于商业用途需征得作者同意并注明出处
|