标题:
STM32_ILI9341 LCD_SD卡存储串口接收到的数据源码
[打印本页]
作者:
城东笙歌落@
时间:
2019-1-26 12:39
标题:
STM32_ILI9341 LCD_SD卡存储串口接收到的数据源码
STM32_LCD_SD卡存储串口接收到的数据
单片机源程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "usart2.h"
#include "lcd.h"
#include "malloc.h"
#include "exfuns.h"
#include "fontupd.h"
#include "flash.h"
#include "mmc_sd.h"
#include "text.h"
#define FILE_MAX_SIZE 512
int main() //主函数
{
u8 font_updata;
u8 rxlen;
u16 i;
u8 *write_buf=0;
//u8 *read_buf=0;
FIL file; //文件对象
FRESULT res;
u16 pointer=0;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
uart2_init(36,9600);//串口2初始化
LCD_Init(); //初始化LCD
LCD_Display_Dir(0); //设置LCD显示方向 0竖屏 1横屏
SPI_Flash_Init(); //初始化Flash
if(SD_Initialize())
{
LCD_ShowString(0,0,240,16,16,"SD CARD ERROR");
}
mem_init(SRAMIN); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
f_mount(0,fs[0]); //挂载SD卡
f_mount(1,fs[1]); //挂载FLASH
if(font_init()) //检查字库
{
LCD_ShowString(0,0,240,16,16,"FONT ERROR");
LCD_ShowString(0,16,240,16,16,"UPDATA FONT FROM SD CARD...");
font_updata=update_font(20,110,16,0);//从SD卡更新
while(font_updata)//更新失败
{
LCD_ShowString(0,32,240,16,16,"UPDATA FONT ERROR");
}
LCD_ShowString(0,32,240,16,16,"UPDATA FONT SUCCESS");
}
Show_Str(0,0,240,16,"程序正常启动",16,0);
while(1)
{
if(USART2_RX_STA&0X8000)//串口2收到数据了
{
Show_Str(0,0,240,16,"串口收到数据了",16,0);
rxlen=USART2_RX_STA&0X7FFF; //得到数据长度
write_buf=mymalloc(SRAMIN,FILE_MAX_SIZE); //申请FILE_MAX_SIZE字节的空间
for(i=0;i<rxlen;i++)
{
write_buf[i]=USART2_RX_BUF[i];
}
for(i=rxlen;i<FILE_MAX_SIZE;i++)
{
write_buf[i]=' ';
}
LCD_Clear(WHITE);
Show_Str(0,16,240,16,write_buf,16,0);
//打开文件,如果文件不存在,则创建一个新文件;用此种方式,可以用f_lseek 在文件后追加数据
//(读写模式可同时生效)
res=f_open(&file, "0:/yiyi.txt", FA_OPEN_ALWAYS | FA_WRITE);
switch(res)
{
case FR_OK:
Show_Str(0,0,240,16,"磁盘正常",16,0);
break;
case FR_INVALID_DRIVE://驱动器号无效
Show_Str(0,0,240,16,"驱动器号无效",16,0);
break;
case FR_NOT_READY://由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作
Show_Str(0,0,240,16,"磁盘驱动器无法工作",16,0);
break;
case FR_DISK_ERR://由于底层磁盘I/O接口函数中的一个错误,而导致该函数失败
Show_Str(0,0,240,16,"底层磁盘I/O错误",16,0);
break;
case FR_NO_PATH: //找不到该路径
Show_Str(0,0,240,16,"找不到该路径",16,0);
break;
case FR_INVALID_NAME: //文件名无效
Show_Str(0,0,240,16,"文件名无效",16,0);
break;
case FR_NO_FILE: //找不到该文件
Show_Str(0,0,240,16,"找不到该文件",16,0);
break;
case FR_EXIST: //文件已存在
Show_Str(0,0,240,16,"文件已存在",16,0);
break;
default: //其他的为Disk error
Show_Str(0,0,240,16,"其它Disk error",16,0);
break;
}
pointer=file.fsize; //获得文件大小
res=f_lseek(&file,pointer);//移动文件指针
res=f_write(&file,write_buf,rxlen,&br);//向文件内写入字符串
res=f_close(&file); //关闭打开的文件
myfree(SRAMIN,write_buf);
USART2_RX_STA=0; //启动下一次接收
}
}
}
复制代码
所有资料51hei提供下载:
STM32_LCD_SD卡存储串口接收到的数据.rar
(140.93 KB, 下载次数: 55)
2019-1-26 12:38 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1