#include "common.h"
#include "include.h"
float data=55.55;
int flag=0;
void main()
{
uint8_t ch[7]="data:";
OLED_Init();
key_init(KEY_U);
key_init(KEY_D);
key_init(KEY_L);
flash_init();
//初始化flash
data = flash_read(252,0,float);
while(1)
{
if(key_check(KEY_U) == KEY_DOWN)
{
flash_erase_sector(252); //擦除扇区
flash_write(252, 0, (*((uint32*)&data)));
flag++;
}
if(key_check(KEY_D) == KEY_DOWN)
{
data++;
}
if(key_check(KEY_L) == KEY_DOWN)
{
data--;
}
OLED_P8x16Str(0,0,&ch[7]);
OLED_PrintValueF(5,0,data,4);
}
该程序的功能是,用按键实现data的加减与储存到flash里面。可是这样执行,第一次使用新扇区的的时候会因为里面没有写入数据,而读取出错误数据(+0.q355),之后再用按键也无法写入。如和让它在使用新扇区的时候能够不产生读取错误,即只在使用新扇区的时候让它擦除和写入一次数据,之后在程序初始化的时候便不再再次执行?