




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、正点原子AN1702AAN1702A ATK-RGB2VGA 模块使用说明本应用文档(AN1702A)将教大家如何在 ALIENTEK ATK-RGB2VGA 显示模块。 本文档分为如下几部分: 1, ATK-RGB2VGA 显示模块简介 2, 硬件连接 3, 软件实现 4, 验证 1、ATK-RGB2VGA 模块简介 罗 STM32F429 开发板上使用 ATK-RGB2VGA-V13(V13 是版本号,下面均以 ATK-RGB2VGA 表示该产品)是 ALIENTEK 推出的一款高性能商业级 VGA 显示模块。ATK-RGB2VGA 模块板载了 Chront
2、el 昆泰公司的高性能商业级视频编码器芯片 CH7034B,该芯片采用了先进的视频编码器,灵活的缩放引擎和易于配置的视频接口,支持最大24 位真彩显示,能实现多分辨率输出,最高可达到1920x1080 分辨率的高清VGA 输出。 1.1 模块资源简介 ATK-RGB2VGA 适用于需要高分辨率的显示领域,其资源图如图 1.1.1 所示: 60hz图 1.1.1 ATK-RGB2VGA 模块资源图 从图 1.1.1 可以看出,ATK-RGB2VGA 模块通过 40P 的 FPC 线同外部连接,模块可以与 ALIENTEK 的 STM32F429 或 STM32F7 开发板直接对接,模块尺寸为 6
3、9mm*47mm,并带有安 1开源电子网07/12/2017正点原子AN1702A装孔位,非常小巧,并且利于安装,可方便应用于各种产品设计。ALIENTEK ATK-RGB2VGA 模块板载资源如下: uuuuuuuu视频编码器:CH7034B1 个 40PIN 的 FPC 插座 1 个外部的 5V 电源接口 1 个用户 I2C 调试接口 1 个 MCU(出厂前烧录测试实验固件,配合开发板测试实验使用) 1 个 5 位功能拨码开关 1 个电源指示灯(蓝色) 1 个 VGA 座接口 ATK-RGB2VGA 模块(开发板)采用工业级标准
4、设计,特点包括:采用国际A 级 PCB 料,沉金工艺加工,稳定可靠; 采用全新元器件加工,纯铜镀金排针,坚固耐用; 人性化设计,各个接口都有丝印标注,使用起来一目了然;接口位置设计安排合理, 方便顺手。 PCB 尺寸为 69mm*47mm,并带有安装孔位,小巧精致; ATK-RGB2VGA 模块的资源介绍,我们就介绍到这里,详细的介绍,请看ATK-RGV2VGA 模块用户手册_V1.0相关章节。 1.2 模块使用 本文档, 我们将介绍大家如何通过 ALIENTEK罗 STM32F429 开发板连接ATK-RGB2VGA 模块,实现:在 7 个分辨率下图片显示、视频播放、显示器校准功能、以及彩条
5、信号测试功能,本节我们将介绍要实现这些功能所需要的相关知识。 1.2.1 VGA 介绍1、VGA 简介 VGA 的英文全称是 Video Graphic Arrary,也叫显示绘图阵列,是 IBM 在 1987 年随 PS/2 机一起推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。目前 VGA 技术的应用还主要基于 VGA 显示卡的计算机、笔记本等设备。根据分辨率不同,分为 VGA(640*480)、SVGA(800*600)、XGA(1024*768)、SXGA(1280*1024)等。 2、VGA 接口 VGA 接口是
6、一种 D 型接口(D-SUB),采用非对称分布的 15pin 连接方式,共有 15 针孔,分为三排,每排五个孔,是显卡上应用最为广泛的接口类型,绝大多显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。而与之配套的底座则为孔型接口。如图 所示,而 VGA 接口引脚具体定义如图 所示。 2开源电子网07/12/2017正点原子AN1702A图 VGA 接口及底座图 2.2VGA 接口引脚定义3、VGA 时序 VGA 的时序如图 4.1、4.2 所示。它分为行数据时
7、序和场数据时序。 图 4.1VGA 行数据时序 图 4.2VGA 场数据时序 3开源电子网07/12/2017正点原子AN1702AVGA 的时序需要用到同步信号、前沿(前廊)、后沿(后廊)。关于 VGA 时序的介绍, 请查看 ATK-RGB2VGA 模块配套资料下 VGA 原理及应用.pdf 文档下 VGA 时序介绍章节,章节中有具体介绍时序的各部分组成,在这里就不做详述介绍了。 相信用过 STM32F429 驱动 RGB 屏的可以发现,其实 VGA 时序与 STM32F429 自带 LCD 控制器(LTDC)同步时序是一致的,L
8、TDC 同步时序如图 4.3 所示。 图 4.3 LTDC 同步时序框图 关于STM32F429 LTDC 的时序知识的详细介绍,请查看 STM32F429 开发指南-寄存器HAL 库版本_V1.1.pdf 的第十九章节,这里就不做阐述介绍了。 1.2.2 分辨率时序表 例程中模块使用了多达 7 个分辨率的显示,各分辨率输入时序参数如表 所示: 4开源电子网07/12/2017分辨率 (pix) 1366*7681280*8001280*7681024*768848*640800*600640*480水平有效(pix) 13661280128010
9、24848800640水平同步(pix) 143323213611212896水平前沿(pix) 7048482416408水平后沿(pix) 21380801601128856垂直有效(pix) 768800768768480600480垂直同步(pix) 3676842垂直前沿(pix) 3333612垂直后沿(pix) 24141229232341时钟(Mhz) 28.535.534.2543.25172012.75时钟极性 正 正 正 正 正 正 正 DE 极性 负 负 负 负 负 负 负 水平同步极性 负 负 负 负 负 负 负 正点原子AN1702A
10、表 例程测试实验各分辨率输入时序参数我们在配置 STM32F429 LTDC 的参数按照表格即可。 1.2.3 分辨率 IDATK-RGB2VGA 模块为了区分与 ALIENTEK 多分款辨率的 RGB 屏和 VGA 显示分辨率,我们使用了该模块的 R7G7B7 数据线来区分 RGB 屏和 VGA 显示器的类型,然后再根据 模R6R5R4R3 数据线来判断 VGA 的分辨率,具体模块的使用说明,请查看 ATK-RGB2VGA 块用户手册_V1.0.pdf。对应分辨率 ID 关系如表 和表 所示。 表 R7G7B7 状态对应的模块类
11、型表 R6R5R4R3 状态对应 VGA 类型的分辨率 1.2.4 图片显示 通过 STM32F429 来解码 BMP/JPG/JPEG/GIF 等图片,在 VGA 显示器上显示。关于具体的图片解码知识,请查看 STM32F429 开发指南 寄存器版本HAL 库版本_V1.1.pdf 文档第四十八章节 图片显示实验,在这里就不阐述介绍了。 1.2.5 视频播放 使用 STM32F429 来播放 AVI 视频,在 VGA 显示器上显示。关于具体的 AVI 视频的解码知识,请查看 STM32F429 开发指南 寄存器版本HAL 库版本_V1.1.pdf 文档第五十二章节 视频播放实
12、验,在这里就不阐述介绍了。 1.2.6 显示器校准 VGA 的显示有可能会出现显示模糊不清,位置偏移等问题,可以通过显示器菜单下的自动调节功能,来调节这些现象,关于VGA 显示器调节问题,可以查看 ATK-RGB2VGA 模块配套资料下 ATK-RGB2VGA 模块常见问题汇总.pdf,这里有具体解释以及解决办法,在这里就不 5开源电子网07/12/2017R3R4R5R6VGA 分辨率 01111366*768 分辨率 10111280*800 分辨率 00111280*768 分辨率 11011024*768 分辨率 0101848*480 分辨率 10018
13、00*600 分辨率 0001640*480 分辨率 暂时没用到 M2(B7) M1(G7) M0(R7) RGBVGA 分辨率类型 0004.3 寸,480*272 分辨率 0017 寸,800*480 分辨率 0107 寸,1024*600 分辨率 0117 寸,1280*800 分辨率 1008 寸,1024*600 分辨率 10110.1 寸,1280*800 分辨率 111VGA 显示器 暂时没用到 垂直同步极性 负 负 负 负 负 负 负 正点原子AN1702A阐述介绍了。1.2.7 彩条信号测试 彩条信号在电视节目的制作播出及设备维护中会经常的使用
14、,它能正确的反映出各种彩色的亮度、色调和色饱和度,是检验视频通道传输质量最方便的手段。同时,彩条信号也可用于检测输入视频数据是否有错误。在测试例程中,我们将在 7 个分辨率下实现彩条信号测 试。 2、硬件连接本实验功能简介:本实验用于测试 ATK-RGB2VGA 模块,这里我们仅以 1366*768 分辨率进行讲解。开机前,模块拨码开关配置为 1366*768 分辨率模式(具体见 ATK-RGB2VGA 模块用户手册_V1.0,例程测试这一小节)。开机后,先初始化各外设(LTDC 根据识别到模块的分辨率 ID,去初始化显示分辨率的参数),然后检测字库是否存在,如果检测无问题,则会进入主菜单,主
15、菜单下会显示当前分辨率的大小,四个功能测试。 1,图片测试通过按 KEY2 按键进入此项测试。如果 SD 卡存在,则开始查找 SD 卡根目录下的 PICTURE 文件夹,如果找到则显示该文件夹下面的图片文件(支持 bmp、jpg、jpeg 或 gif 格式),循环显示,通过按 KEY0 和 KEY2 可以快速浏览下一张和上一张,如果未找到 PICTURE 文件夹/任何图片文件,则提示错误。同样我们也是用 DS0 来指示程序正在运行。按下KEY1 可以返回主菜单。 2,视频播放通过 KEY0 按键进入此项测试。视频播放时,显示器上还会显示视频名字、当前视频编号、总视频数、声道数、音频采样率、帧率
16、、播放时间和总时间等信息。KEY0 用于选择下一个视频,KEY2 用于选择上一个视频,KEY_UP 可以快进,而 KEY1 则可以返回主菜单。 3,显示器校准通过按 KEY1 按键进入此项测试。校准时,请看红色线是否贴在四角边沿,若发现颜色浅淡、偏移现象,可在显示器菜单栏中,选择自动调节功能,以调整到显示器为最佳显示(红色线贴在四角边沿),具体的调整注意事项,可以查看:ATK-RGB2VGA 模块资料下,ATK-RGB2VGA 模块常见问题汇总.pdf。 4,彩条信号测试-通过拨动模块的拨码开关 KEY5 到 ON 进入此测试。在 7 个分辨率模式显示下,将模块的拨码开关 KEY5 往上拨到
17、ON,会进入彩条信号测试,将开关 KEY5 往下拨,则退出彩条信号测试,返回正常的功能显示。 本实验所需的硬件资源如下: 1,ALIENTEK罗 STM32F429 开发板 1 个 2,ATK-RGB2VGA 模块一个 3,VGA 线一根(用于连接 VGA 显示器) 4,带 VGA 接口的显示器一台 5,SD 卡一张 6,直流稳压电源 1 个(推荐 12V 1A 电源) 要完成本文档例程的所有功能测试,请大家务必准备好以上硬件。 在例程中,ATK-RGB2VGA 所有的控制与数据、电源,都是通过 FPC 线来传输的,所以我们的开发板只需要将 40PIN 的 FPC 线连接模块的接口即可。实物连
18、接(ATK-RGB2VGA 模块) 如图 2.1 所示: 6开源电子网07/12/2017正点原子AN1702A图 2.1 ATK-RGB2VGA 模块与罗 STM32F429 开发板连接 3、软件实现本实验,在文件夹里面,复制罗 STM32F429 开发板的视频播放实验基础上进行修改的,在 HARDWARE罗 STM32F429 开发板的图片显示实验工程下 PICTURE 文件夹,文件夹中存放了图片解码需要的文件。而在 APP 文件夹内,创建 pictureplay.c 和 pictureplay.h 文件。 在工程目录添加 PI
19、CTURE 分组,将 PICTURE 文件夹内 C 文件添加到 PICTURE 分组内,接着在 APP 分组内添加 pictureplay.c,最后添加 PICTURE 和 APP 文件夹到头文件包含路径。最终的工程如图 3.1 所示: 7开源电子网07/12/2017正点原子AN1702A图 3.1 ATK-RGB2VGA 模块测试实验工程截图 目录下 ltdc.c 在之前的例程(详见:STM32F429 开发指南-HAL 库版本(寄存Hardware器版本)第十九章 LTDC LCD(RGB 屏)实验)有介绍过。ATK-RGB2
20、VGA 模块测试实验显示的最高分辨率为 1366*768,已超过了 ltdc.c 中帧缓存数组大小 1280*800,这里需修改下, 在RGB565格 式 中 u16ltdc_lcd_framebuf1280800 , 修 改 为 u16ltdc_lcd_framebuf1366800,修改帧缓存数组后代码如下:(注意:这里仅截取部分代码) 8开源电子网07/12/2017/根据不同的颜色格式,定义帧缓存数组#ifLCD_PIXFORMAT=LCD_PIXFORMAT_ARGB8888|LCD_PIXFORMAT=LCD_PIXFORMAT_RGB888u32 l
21、tdc_lcd_framebuf1280800 attribute (at(LCD_FRAME_BUF_ADDR);/定义最大屏分辨率时,LCD 所需的帧缓存数组大小 正点原子AN1702A帧缓存数组是指向到外部的 SDRAM,避免与图片显示和视频播放内存的使用发生地址冲突(具体内存管理详解,详见:STM32F429 开发指南-HAL 库版本(寄存器版本)第四十三章 内存管理实验),这里需在 MALLOC 分组下 malloc.c 文件中,修改内存池外部 SDRAM内存池地址和外部 SDRAM 内存池 MAP 表为 0XC0215980,修改后代码如下:(注意:
22、这里 仅截取部分代码) 然后修改外部 SDRAM 的最大管理内存为 27912K,位置在 malloc.h 文件中,修改代码如 下:(注意:这里仅截取部分代码) MCU 对 VGA 的分辨率识别,我们做了巧妙处理,具体函数是 LTDC_PanelID_Read,该函 数代码如下: 9开源电子网07/12/2017/读取面板参数,新增了判断悬空全一的排查 /PG6=R7(M0);PI2=G7(M1);PI7=B7(M2);/M2:M1:M0/0 :0 :0 /4.3 寸 480*272 RGB 屏,ID=0X4342/0 :0 :1 /7 寸 800*480 RGB
23、 屏,ID=0X7084/0 :1 :0 /7 寸 1024*600 RGB 屏,ID=0X7016/0 :1 :1 /7 寸 1280*800 RGB 屏,ID=0X7018/1 :0 :0 /8 寸 1024*600 RGB 屏,ID=0X8016/1 :0 :1/10.1 寸 1280*800,RGB 屏,ID=0X1018/1 :1 :1/VGA 显示器 /返回值:LCD ID:0,非法;其他值,ID;u16 LTDC_PanelID_Read(void)/mem2 内存参数设定.mem2 的内存池处于外部 SDRAM 里面 #define MEM2_BLOCK_SIZE64/内存块大
24、小为 64 字节#define MEM2_MAX_SIZE27912 *1024/最大管理内存 27912K #define MEM2_ALLOC_TABLE_SIZEMEM2_MAX_SIZE/MEM2_BLOCK_SIZE/内存表大小 /内存池(32 字节对齐) align(32) u8 mem1baseMEM1_MAX_SIZE;/内部 SRAM 内存池 align(32) u8 mem2baseMEM2_MAX_SIZE attribute (at(0XC0215980);/外部 SDRAM 内存池,前面 2M 给 LTDC 用了(1366*800*2) align(32) u8 me
25、m3baseMEM3_MAX_SIZE attribute (at(0X10000000);/内部 CCM 内存池 /内存管理表 u32 mem1mapbaseMEM1_ALLOC_TABLE_SIZE;/内部 SRAM 内存池 MAPu32mem2mapbaseMEM2_ALLOC_TABLE_SIZE attribute (at(0XC0215980+MEM2_MAX_SIZE); /外部 SRAM 内存池 MAP u32mem3mapbaseMEM3_ALLOC_TABLE_SIZE attribute (at(0X10000000+MEM3_MAX_SIZE); /内部 CCM 内存池
26、 MAP#elseu16 ltdc_lcd_framebuf1366800 attribute (at(LCD_FRAME_BUF_ADDR);/定义最大屏分辨率时,LCD 所需的帧缓存数组大小 #正点原子AN1702A10开源电子网07/12/2017u8 idx=0;u8 vga_idx=0; GPIO_InitTypeDef GPIO_Initure; HAL_RCC_GPIOG_CLK_ENABLE();/使能 GPIOG 时钟 HAL_RCC_GPIOI_CLK_ENABLE();/使能GPIOI 时钟 HAL_
27、RCC_GPIOH_CLK_ENABLE();/使能 GPIOH 时钟GPIO_Initure.Pin=GPIO_PIN_6;/PG6 GPIO_Initure.Mode=GPIO_MODE_INPUT;/输入GPIO_Initure.Pull=GPIO_PULLUP;/上拉GPIO_Initure.Speed=GPIO_SPEED_HIGH;/高速HAL_GPIO_Init(GPIOG,&GPIO_Initure);/初始化GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_7; /PI2,7 HAL_GPIO_Init(GPIOI,&GPIO_Initure);/初始
28、化GPIO_Initure.Pin=GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;/PH9,10,11,12HAL_GPIO_Init(GPIOH,&GPIO_Initure);/初始化idx=(u8)HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_6); / 读 取 M0 idx|=(u8)HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_2)1;/读取 M1 idx|=(u8)HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_7)2;/读取 M2 if(idx=7)GPIO_Initure.Pin=
29、GPIO_PIN_6;/PG6 GPIO_Initure.Mode=GPIO_MODE_INPUT;/输入GPIO_Initure.Pull=GPIO_PULLDOWN;/下拉GPIO_Initure.Speed=GPIO_SPEED_HIGH;/高速HAL_GPIO_Init(GPIOG,&GPIO_Initure);/初始化GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_7; /PI2,7 下拉输入HAL_GPIO_Init(GPIOI,&GPIO_Initure);/初始化idx=(u8)HAL_GPIO_ReadPin(GPIOG,GPIO_PIN_6);/
30、读 取 M0 idx|=(u8)HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_2)1;/ 读 取 M1 idx|=(u8)HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_7)2;/ 读 取 M2 if(idx=0)return 0; /上拉的时候全 1,下拉的时候,全 0,说明没有介入任何设备 switch(idx)case 0:return 0X4342;/4.3 寸屏,480*272 分辨率case 1:return 0X7084;/7 寸屏,800*480 分辨率case 2:return 0X7016;/7 寸屏,1024*600 分辨率case 3:
31、return 0X7018;/7 寸屏,1280*800 分辨率case 4:return 0X8016;/8 寸屏,1024*600 分辨率case 5:return 0X1018;/10.1 寸屏,1280*800 分辨率case 7:vga_idx=HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_9);/读取 R3-KEY1正点原子AN1702A先判断 R7G7B7 三根线的状态区分 ALIENTEK 的 RGB 屏和 VGA 显示器,然后再根据R6R5R4R3 四根线的值来区分 VGA 显示器各分辨率的 ID,从而执行不同的初始化,实现对
32、不同分辨率的支持。 LTDC_PaneiID_Read 函数,就是用这样的方法来读取分辨率 ID 的值,并将结果(转换成分辨率型号)返回给上一层。 然后我们介绍下 LTDC 初始化函数:LTDC_Init,,该函数的简化代码如下: 11开源电子网07/12/2017/LCD 初始化函数 void LTDC_Init(void)u16 lcdid=0;lcdid=LTDC_PanelID_Read();/读取 LCD 面板 ID if(lcdid=0Xxxxx)./省略部分代码.else if(lcdid=0XA001)/接 VGA 显示器 lcdltdc.pwid
33、th=1366;/面板宽 度,单位:像素lcdltdc.pheight=768;/面板高度,单位:像素lcdltdc.hsw=143;/水平同步宽度 lcdltdc.hfp=70;/水平前廊 lcdltdc.hbp=213;/水平后廊 lcdltdc.vsw=3;/垂直同步宽度 lcdltdc.vbp=24;/垂直后廊 lcdltdc.vfp=3;/垂直前廊LTDC_Clk_Set(114,2,RCC_PLLSAIDIVR_2);/设置像素时钟 28.5Mhzelse if(lcdid=0XA002)/接 VGA 显示器 lcdltdc.pwidth=1280;/面板宽度,单位:像素lcdlt
34、dc.pheight=800;/面板高度,单位:像素 vga_idx|=HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_10)1;/读取 R4-KEY2 vga_idx|=HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_11)2;/读取 R5-KEY3 vga_idx|=HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_12)fname0=0)break;/错误了/到末尾了,退出 LTDC_Handler.Init.TotalWidth=lcdltdc.hsw+lcdltdc.hbp+lcdltdc.pwidth+lcdltdc.hfp-1;/总宽
35、度LTDC_Handler.Init.TotalHeigh=lcdltdc.vsw+lcdltdc.vbp+lcdltdc.pheight+lcdltdc.vfp-1;/总高度 LTDC_Handler.Init.Backcolor.Red=0;/屏幕背景层红色部分LTDC_Handler.Init.Backcolor.Green=0;/屏幕背景层绿色部分LTDC_Handler.Init.Backcolor.Blue=0;/屏幕背景色蓝色部分HAL_LTDC_Init(<DC_Handler);/层配置LTDC_Layer_Parameter_Config(0,(u32)ltdc_fra
36、mebuf0,LCD_PIXFORMAT,255,0,6,7,0X0 00000);/层参数配置LTDC_Layer_Window_Config(0,0,0,lcdltdc.pwidth,lcdltdc.pheight);/层窗口配置,以 LCD 面板坐标系为基准,不要随便修改!LTDC_Display_Dir(1);/默认横屏LTDC_Select_Layer(0);/选择第 1 层LCD_LED=1;/点亮背光LTDC_Clear(0XFFFFFFFF);/清屏 正点原子AN1702A15开源电子网07/12/2017res=f
37、_typetell(u8*)tfileinfo-fname); if(res&0XF0)=0X50)/取高四位,看看是不是图片文件 rval+;/有效文件数增加 1myfree(SRAMIN,tfileinfo);/释放内存return rval;/图片播放 void picture_play(void)u8 i=0; u8 res;DIR picdir;/图片目录FILINFO *picfileinfo;/文件信息 u8 *pname;/带路径的文件名 u16 totpicnum;/图片文件总数 u16 curindex;/图片当前索引 u8 key;/键值 u8 pause=0;/暂停标记
38、u8 t;u16 temp;u32 *picoffsettbl; /图片文件 offset 索引表 Show_Str(60,50,200,16,罗 STM32F4/F7 开发板,16,0);Show_Str(60,70,200,16, 图 片 显 示 程 序 ,16,0); while(f_opendir(&picdir,0:/PICTURE)/打开图片文件夹 Show_Str(60,170,240,16,PICTURE 文件夹错误!,16,0);delay_ms(200); LCD_Fill(60,170,240,186,WHITE);/清除显示 delay_ms(200); i+;if(i
39、=5) return ; i=0;totpicnum=pic_get_tnum(0:/PICTURE); /得到总有效文件数while(totpicnum=NULL)/图片文件为 0Show_Str(60,170,240,16,没有图片文件!,16,0); delay_ms(200);LCD_Fill(60,170,240,186,WHITE);/清除显示 正点原子AN1702A16开源电子网07/12/2017delay_ms(200); i+;if(i=5) return ; i=0;picfileinfo=(FILINFO*)
40、mymalloc(SRAMIN,sizeof(FILINFO); /申请内存pname=mymalloc(SRAMIN,_MAX_LFN*2+1);/为带路径的文件名分配内存picoffsettbl=mymalloc(SRAMIN,4*totpicnum);/申请 4*totpicnum 个字节的内存,用于存放图片索引 while(!picfileinfo|!pname|!picoffsettbl)/内存分配出错 Show_Str(60,170,240,16,内存分配失败!,16,0); delay_ms(200); LCD_Fill(60,170,240,186,WHITE);/清除显示 d
41、elay_ms(200); i+;if(i=5) return ; i=0;/ 记 录 索 引res=f_opendir(&picdir,0:/PICTURE); /打开目录if(res=FR_OK)curindex=0;/当前索引为 0 while(1)/全部查询一遍 temp=picdir.dptr;/记录当前 dptr 偏移 res=f_readdir(&picdir,picfileinfo);/读取目录下的一个文件if(res!=FR_OK|picfileinfo-fname0=0)break; /错误了/到末尾了,退出res=f_typetell(u8*)picfileinfo-fn
42、ame);if(res&0XF0)=0X50)/取高四位,看看是不是图片文件 picoffsettblcurindex=temp;/记录索引curindex+;Show_Str(60,100,240,16,开始显示.,16,0);delay_ms(1500);piclib_init();/初始化画图 curindex=0;/从 0 开始显示 res=f_opendir(&picdir,(const TCHAR*)0:/PICTURE); /打开目录while(res=FR_OK)/打开成功 正点原子AN1702A17开源电子网07/12/2017dir_sdi(&picdir,pico
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 预防疟疾主题班会课件
- 化学工业企业安全质量环保标准化培训体系
- 项目集成管理工程师课件
- 项目介绍框架课件
- 音乐里的中国年课件
- 门诊护理培训课件
- 汽车配套产业基地项目环境影响报告书(范文)
- 城市污水管网建设工程招投标方案(参考模板)
- 2025年煤矿钻孔监测系统合作协议书
- 高效节能电机项目申请报告
- 浙江省中学生艺术特长b级测试-美术西画基础知识复习提纲(完整版)资料
- GB/T 40427-2021电力系统电压和无功电力技术导则
- GB/T 25413-2010农田地膜残留量限值及测定
- GB/T 17007-1997绝缘栅双极型晶体管测试方法
- GB/T 15056-2017铸造表面粗糙度评定方法
- 化学水处理安全检查表
- DB34-T 4102-2022废旧锂离子动力蓄电池贮存安全技术条件-高清现行
- 景陵峪构造报告构造地质学
- GB∕T 8163-2018 输送流体用无缝钢管
- 机动车排放检验检测方法内部审批程序
- 2MW工商业分布式光伏电站项目可行性研究报告
评论
0/150
提交评论