| 
 
新手入门 
 
	积分14金钱14 注册时间2022-10-29在线时间4 小时 | 
 
15金钱 
| 基于探索者实验34FLASH模拟EEPROM,请问大佬们,怎么修改程序才能达到以下要求: 
 按下任意key,变量加加,加到一定量的时候保存,然后断电,再次读取的时候是经过加加之后的量而不是初始值,并在lcd屏上显示。
 
 以下是实验34例程(例程里只演示了常量字符串数组):
 
 //要写入到 STM32 FLASH 的字符串数组
 const u8 TEXT_Buffer[]={"STM32 FLASH TEST"};
 #define TEXT_LENTH sizeof(TEXT_Buffer) //数组长度
 #define SIZE TEXT_LENTH/4+((TEXT_LENTH%4)?1:0) //数组大小
 
 #define FLASH_SAVE_ADDR 0X0800C004
 int main(void)
 {
 u8 key=0, datatemp[SIZE];
 
 
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组 2
 delay_init(168); //初始化延时函数
 uart_init(115200); //初始化串口波特率为 115200
 LED_Init(); //初始化 LED
 LCD_Init(); //LCD 初始化
 KEY_Init(); //按键初始化
 POINT_COLOR=RED;//设置字体为红色
 
 
 while(1)
 {
 key=KEY_Scan(0);
 if(key==KEY1_PRES) //KEY1 按下
 {
 STMFLASH_Write(FLASH_SAVE_ADDR,(u32*)TEXT_Buffer,SIZE); //写入 STM32 FLASH
 }
 if(key==KEY0_PRES) //KEY0 按下
 {
 STMFLASH_Read(FLASH_SAVE_ADDR,(u32*)datatemp,SIZE);  //读取字符串 LCD_ShowString(30,190,200,16,16,datatemp);//显示读到的字符串
 }
 
 }
 
 }
 
 
 
 
 | 
 
最佳答案
查看完整内容[请看2#楼] #define FLASH_SAVE_ADDR 0X0800C004 
int main(void) 
{ 
 u8 key=0; 
 u32 datatemp[8];//一次定义8个数,只用到第一个数做实验  
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组 2 
 delay_init(168); //初始化延时函数 
uart_init(115200); //初始化串口波特率为 115200 
 LED_Init(); //初始化 LED 
 LCD_Init(); //LCD 初始化 
KEY_Init(); //按键初始化 
POINT_COLOR=RED;//设 ... |