完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是直接用MM32F002的例程,为什么使用这两行代码存储set_wendu这个全局变量存储不了。 试过改EEPROM_Write,EEPROM_Read这两个函数的在代码行中的先后顺序,FLASH的保存地址操作但还是不行。 总的代码量在25KB,MM32F002flash空间为32KB。
|
|
相关推荐
1个回答
|
|
IRST_PAGE_ADDRESS ((uint32_t)0x08000000) //第一页的地址
#define DATA_EEPROM_BASE ((uint32_t)(BASED_FIRST_PAGE_ADDRESS + 0x400)) //第一页地址+0x400为数据EEPROM的基地址 //从EEPROM中读取数据 s32 EEPROM_Read(u8* ptr, u16 len) { if (len > DATA_EEPROM_SIZE) //长度不能超过EEPROM的容量 { return -1; } for (int i = 0; i < len; i++) { ptr[i] = M8(DATA_EEPROM_BASE + i); //读取EEPROM中的数据 } return 0; } //将数据写入EEPROM s32 EEPROM_Write(u8* ptr, u16 len) { Flash_ErasePage(DATA_EEPROM_BASE); //擦除EEPROM页面 for (int i = 0; i < len; i++) { Flash_WriteByte(DATA_EEPROM_BASE + i, ptr[i]); //写入EEPROM中的数据 } return 0; } //存储set_wendu全局变量的值到EEPROM中 u8 set_wendu = 30; //设置温度 void Store_Data_To_EEPROM(void) { EEPROM_Write((u8*)&set_wendu, sizeof(set_wendu)); //将set_wendu的值写入EEPROM中 } //从EEPROM中读取上一组写入的数据 void Load_Data_From_EEPROM(void) { EEPROM_Read((u8*)&set_wendu, sizeof(set_wendu)); //读取EEPROM中的set_wendu的值 } int main() { Store_Data_To_EEPROM(); //将set_wendu的值存储到EEPROM中 //从EEPROM中读取上一组写入的数据 Load_Data_From_EEPROM(); return 0; } 在使用内部flash存储数据时,需要注意以下几点: 1. 长度不能超过EEPROM的容量,需要提前计算好数据长度。 2. 在存储数据时,需要先擦除页面,再写入数据。 3. 在读取数据时,需要按照存储顺序,从EEPROM中读取数据。 4. 在读写数据时,需要使用指针类型的变量,以便在指定地址读写数据。 如果按照以上方法操作,仍然存储不了数据,可能是其他地方出了问题,需要检查代码逻辑。 |
|
|
|
只有小组成员才能发言,加入小组>>
2234个成员聚集在这个小组
加入小组灵动微电子MM32全系列MCU产品应用手册,库函数和例程和选型表
11103 浏览 3 评论
【MM32 eMiniBoard试用连载】+基于OLED12864的GUI---U8G2
5806 浏览 1 评论
【MM32 eMiniBoard试用连载】移植RT-Thread至MM32L373PS
10641 浏览 0 评论
【MM32 eMiniBoard测评报告】+ 开箱 + 初探
4477 浏览 1 评论
灵动微课堂(第106讲) | MM32 USB功能学习笔记 —— WinUSB设备
4198 浏览 1 评论
[MM32软件] MM32F002使用内部flash存储数据怎么操作?
774浏览 1评论
646浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-19 12:42 , Processed in 0.547095 second(s), Total 67, Slave 60 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号