標(biāo)題:
STM32_ILI9341 LCD_SD卡存儲串口接收到的數(shù)據(jù)源碼
[打印本頁]
作者:
城東笙歌落@
時間:
2019-1-26 12:39
標(biāo)題:
STM32_ILI9341 LCD_SD卡存儲串口接收到的數(shù)據(jù)源碼
STM32_LCD_SD卡存儲串口接收到的數(shù)據(jù)
單片機源程序如下:
#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() //主函數(shù)
{
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);//系統(tǒng)時鐘設(shè)置
delay_init(72); //延時初始化
uart_init(72,9600); //串口1初始化
uart2_init(36,9600);//串口2初始化
LCD_Init(); //初始化LCD
LCD_Display_Dir(0); //設(shè)置LCD顯示方向 0豎屏 1橫屏
SPI_Flash_Init(); //初始化Flash
if(SD_Initialize())
{
LCD_ShowString(0,0,240,16,16,"SD CARD ERROR");
}
mem_init(SRAMIN); //初始化內(nèi)部內(nèi)存池
exfuns_init(); //為fatfs相關(guān)變量申請內(nèi)存
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收到數(shù)據(jù)了
{
Show_Str(0,0,240,16,"串口收到數(shù)據(jù)了",16,0);
rxlen=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長度
write_buf=mymalloc(SRAMIN,FILE_MAX_SIZE); //申請FILE_MAX_SIZE字節(jié)的空間
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);
//打開文件,如果文件不存在,則創(chuàng)建一個新文件;用此種方式,可以用f_lseek 在文件后追加數(shù)據(jù)
//(讀寫模式可同時生效)
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://驅(qū)動器號無效
Show_Str(0,0,240,16,"驅(qū)動器號無效",16,0);
break;
case FR_NOT_READY://由于驅(qū)動器中沒有存儲介質(zhì)或任何其他原因,而導(dǎo)致磁盤驅(qū)動器無法工作
Show_Str(0,0,240,16,"磁盤驅(qū)動器無法工作",16,0);
break;
case FR_DISK_ERR://由于底層磁盤I/O接口函數(shù)中的一個錯誤,而導(dǎo)致該函數(shù)失敗
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);//向文件內(nèi)寫入字符串
res=f_close(&file); //關(guān)閉打開的文件
myfree(SRAMIN,write_buf);
USART2_RX_STA=0; //啟動下一次接收
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
STM32_LCD_SD卡存儲串口接收到的數(shù)據(jù).rar
(140.93 KB, 下載次數(shù): 55)
2019-1-26 12:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1