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)時鐘設置
- 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); //初始化內(nèi)部內(nèi)存池
- exfuns_init(); //為fatfs相關變量申請內(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ì)或任何其他原因,而導致磁盤驅(qū)動器無法工作
- Show_Str(0,0,240,16,"磁盤驅(qū)動器無法工作",16,0);
- break;
- case FR_DISK_ERR://由于底層磁盤I/O接口函數(shù)中的一個錯誤,而導致該函數(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); //關閉打開的文件
- myfree(SRAMIN,write_buf);
- USART2_RX_STA=0; //啟動下一次接收
- }
- }
- }
復制代碼
所有資料51hei提供下載:
STM32_LCD_SD卡存儲串口接收到的數(shù)據(jù).rar
(140.93 KB, 下載次數(shù): 55)
2019-1-26 12:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|