📄 flash.c
字号:
#include <console.h>
#define DATA_ADDR 0x100000 //写的起始地址
#define DATA_LEN 32 //数据长度
char rec_buf[32]="abcdefghijklmnopqrstuvwxyz \xd\xa";//设定一条记录
int count;
int write_flash(char * rec_buf) //写数据到FLASH
{
FLASH_wr_param wp;
wp.ptr_buffer = rec_buf;
wp.data_length = DATA_LEN >> 1;
wp.ptr_FLASH_addr = (char *)(DATA_ADDR+count*DATA_LEN);
if (FLASH_write_record(&wp) != 0x80)
return -2; //写错误
return 0; //正确
}
//-------------------------------------------------------------------------------------
//删除FLASH存储区
int FLASH_erase_block_with(void * block_address)
{
int q;
for (q=0;q<3;q++) if (FLASH_erase_block(block_address)==0x80) break;
if (q<3) return 0;
return -1;
}
//传送数据
void UART_send(unsigned char *lb, short len)
{
short i;
for(i=0;i<len;i++)
{
while(UART_send_char(*lb));
lb++;
}
}
void menu_disp(void)
{
clr_scr();
goto_xy(32,0);
puts("1.写记录");
goto_xy(32,2);
puts("2.清除记录");
goto_xy(32,4);
puts("3.上传记录");
goto_xy(32,6);
puts("4.显示总数");
}
main(void)
{
int i;
char buffer[128];
init_console(CONSOLE_CHINESE);
FLASH_erase_block_with((void *)DATA_ADDR);
count = 0;
menu_disp();
while (1)
{
switch(getch())
{
case KEY_1:
if(!write_flash(rec_buf))
{
clr_scr();
goto_xy(0, 0);
puts("写入成功");
count++;
memcpy(buffer,(char *)(DATA_ADDR+(count-1)*DATA_LEN),30);
goto_xy(0, 2);
puts(buffer);
goto_xy(0, 4);
puts(buffer + 16);
}
else
{
clr_scr();
goto_xy(0, 3);
puts("写入不成功");
}
getch();
break;
case KEY_2:
FLASH_erase_block_with((void *)DATA_ADDR);
count=0;
clr_scr();
goto_xy(0, 3);
puts("已删除");
getch();
break;
case KEY_3:
UART_init(UART_232_ON|UART_ON|UART_8_DATA_BITS|UART_BAUD_9600);
UART_fcntl(UART_fcntl(UART_F_INQ)|UART_F_NO_CTS);
for (i = 0; i < 300; i++) delay_1ms();
for(i = 0; i < count; i++)
{
UART_send((char *)DATA_ADDR + i * DATA_LEN, DATA_LEN);
}
clr_scr();
goto_xy(0, 0);
puts("传送完成");
getch();
UART_init(UART_OFF);
break;
case KEY_4:
sprintf(buffer, "记录数为:%d", count);
clr_scr();
goto_xy(0, 0);
puts(buffer);
getch();
break;
}
menu_disp();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -