【GMT43智能液晶模块】例程十三:FATFS实验——文件操作
实验原理:
STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座。本实验
将Micro SD卡插入TF卡座上即可。通过FATFS创建test.txt文件,并且写入数据0-255,然后
读出并显示在液晶屏上。
示例截图:


源代码下载链接:
链接:https://pan.baidu.com/s/1raoiNl6 密码:5w39
GMT43购买链接:


核心代码:
int main(void)
{
FRESULT res; rcc.initialize();
ads7843.initialize();
SDRAM_Init();
SDRAM_GPIOConfig();
FMC_SDRAMWriteProtectionConfig(FMC_Bank2_SDRAM,DISABLE);
lcd_tft.initialize();
systick.initialize(); GUI_Init();
GUI_SetBkColor(GUI_BLACK);
GUI_Clear(); pwm.initialize();
GUI_Delay();
LCD_ON; if(SD_Init() != ){
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_FontFixedsys16);
GUI_DispStringHCenterAt("SD Error!",/,/);
while();
} res = f_mount(&fatfs,"0:",);
if(res != RES_OK){
GUI_SetColor(GUI_RED);
GUI_SetFont(&GUI_FontFixedsys16);
GUI_DispStringHCenterAt("f_mount Error!",/,/);
while();
}
power_on.check_touch(); frame.process();
}
static void frame_process(void)
{
FIL file; //文件对象
int i,j;
unsigned int counter; GUI_CURSOR_Show();
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, , ); sprintf(buffer,"Is to write and read\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer));
GUI_Exec(); f_open(&file,"0:/test.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
f_lseek(&file,);
for(i = ;i < ;i++){
write_buffer[i] = i % ;
}
f_write(&file,write_buffer,,&counter); //将缓冲器中的内容写入源文件
f_lseek(&file,); //移动读指针到文件首
f_read(&file,read_buffer,,&counter);
f_close(&file); MULTIEDIT_SetText(hItem,buffer); //上次显示的文本清空 sprintf(buffer,"Complete\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer)); sprintf(buffer,"write data:\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer)); for(i = ;i < ;i++){
for(j=;j < ;j++){
sprintf(buffer," %02X",write_buffer[i*+j]);
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer));
}
sprintf(buffer,"\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer));
} sprintf(buffer,"read data:\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer)); for(i = ;i < ;i++){
for(j=;j < ;j++){
sprintf(buffer," %02X",read_buffer[i*+j]);
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer));
}
sprintf(buffer,"\r\n");
MULTIEDIT_AddText(hItem,buffer);
memset(buffer,,sizeof(buffer));
} while(){
GUI_Exec();
}
}
【GMT43智能液晶模块】例程十三:FATFS实验——文件操作的更多相关文章
- 【iCore4 双核心板_ARM】例程十四:FATFS实验——文件操作
实验现象: 核心代码: int main(void) { int i,j; FIL file; FATFS fatfs; static FRESULT res; unsigned ]; unsigne ...
- 【iCore3 双核心板】例程十四:FATFS实验——文件操作
实验指导书及代码包下载: http://pan.baidu.com/s/1dEpechF iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【GMT43智能液晶模块】例程二:串口通信实验
实验原理: GMT43智能液晶模块的串口包括USB_UART(CH340),TTL,RS-232,RS-485/ RS-422等四部分,USB_UART部分通过CH340芯片与STM32F429的US ...
- (二十三)Python 3 文件操作
文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有三种: 只读模式(默认) 只写模式(不可读,不存在则创建,存在则覆盖) 追加模式(可读,不存在则 ...
- 【GMT43智能液晶模块】例程十二:SDIO实验——读取SD卡信息
实验原理: STM32F429上带有SDIO控制器,GMT43液晶模块上将SDIO连接到TF卡座上.本 实验将Micro SD卡插入TF卡座上即可.SD卡中可存放液晶显示模块需要显示的图片.字 库等资 ...
- 【GMT43智能液晶模块】例程三:CAN通信实验
实验原理: STM32F429自带有CAN通信接口,本例程通过CAN1与芯片SN65HVD230相连 实现CAN通信,通过回环测试以验证CAN通信功能. 实验现象: 源代码下载链接: 链接:http: ...
- 【GMT43智能液晶模块】例程十:DMA实验——存储器到存储器的传输
实验原理: DMA(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DMA2控制器的数据流0,选用通道0进行数据传输.通过液晶控制传输 和结果显示. 示例截图 ...
- 【GMT43智能液晶模块】例程五:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行 错误时,未在规定时间喂狗,自动复位ARM.本实验通过UI界面中按钮按下 停止喂狗,制造程序运行错误,从而产生复位. 示例 ...
- 【GMT43智能液晶模块】例程六:WWDG看门狗实验——复位ARM
实验原理: STM32内部包含窗口看门狗,通过看门狗可以监控程序运行,程序运行 错误时,未在规定时间喂狗,自动复位ARM.本实验通过UI界面中按钮按下 停止喂狗,制造程序运行错误,从而产生复位. 示例 ...
随机推荐
- 机器学习系列-tensorflow-01-急切执行API
tensorflow急切执行概述 Eager execution is an imperative, define-by-run interface where operations are exec ...
- Java笔记(一)编程基础与二进制
编程基础与二进制 一.编程基础 函数调用的基本原理: 函数调用中的问题: 1)参数如何传递? 2)函数如何知道返回什么地方? 3)函数结果如何传递给调用方? 解决思路是使用内存来函数调用过程中需要的数 ...
- mongodb更新数组元素中的字段,数组$占位符
pppCodes为数组,PPPCode,expiredOn为数组元素中的字段 db.getCollection('users').findOneAndUpdate({ _id: userId, 'pp ...
- 简单酷炫的Canvas数字时钟
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...
- Python类的几点笔记
1. class A: def __init__(self, a, b): self.a = a self.b = b print(a, b) class B(A): def __init__(sel ...
- elastic-job详解(五):自定义任务参数
在elastic-job详解(三):Job的手动触发功能一文中讲到了如何手动触发一个Job,但是我们手动触发的时候常常需要输入一些参数.举个栗子:我们有个日统计报表,每天凌晨统计一次,统计上一天的数据 ...
- 页面嵌套iframe后,点击里面的链接,然后父窗口跳转(子窗口控制父窗口的链接跳转)
做app的时候遇到一个问题,一个页面,然后里面嵌套了一个另一个页面,想实现点击里面的链接,然后外面进行跳转,不然的话,里面的页面永远出不来, 后面想了个办法,app的页面都是打开打开,不关闭的,然后由 ...
- Codeforces899D Shovel Sale(思路)
http://codeforces.com/problemset/problem/899/D 还是得tag一下,以下代码只有G++ 14 6.4.0能过,其他都过不了不知为什么? 思路:先求出最多的9 ...
- 首席技术官应该考虑的网络安全问题 IT大咖说 - 大咖干货,不再错过
首席技术官应该考虑的网络安全问题 IT大咖说 - 大咖干货,不再错过 http://www.itdks.com/dakalive/detail/5523
- 基于spring boot 2.x的websocket示例
spring boot 2/spring 5自带了websocket,下面是最基本的示例(包括java服务端.java客户端以及js客户端) 一.pom依赖 <dependencies> ...