OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9642|回复: 5

结构体怎么存入STM32内部FLASH

[复制链接]

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2013-9-22
在线时间
18 小时
发表于 2014-7-8 21:19:00 | 显示全部楼层 |阅读模式
5金钱
定义10个结构体类型的数组,我如何把这10个全部存入单片机内部FLAFH中,有人说存指针,我就存了,测试如下    
FLASH_ProgramWord(0X0803e800,(uint32_t)(&USART1_command[0]));
USART1_command[1]=*(instruction*)port_2_order_ADDR;
可是读出来的不是我期望的,我想要的是USART1_command[1]里的全部内容跟USART1_command[0]一致,菜鸟求助

 /*命令参数*/
typedef struct  content
{
   u8  Command[4];  //各命令的内容,包括起始地址,数据的个数
}Order;
/*MODBUSRTU双向链表*/
typedef struct USART
{  
  struct USART *left;                               //前驱指针
  struct USART *right;      //后继指针                                                  
  Order  information;  //指向命令里的参数
}instruction; 

instruction   USART1_command[10];                                 //串口一命令

最佳答案

查看完整内容[请看2#楼]

参考这个代码:  [mw_shl_code=c,true]//闹钟数据保存在:SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings)+sizeof(_vs10xx_obj) //读取日历闹钟信息 //alarm:闹钟信息 void calendar_read_para(_alarm_obj * alarm) { AT24CXX_Read(SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings),(u8*)alarm,sizeof(_alarm_obj)); } //写入日历闹钟信息 //alarm:闹钟信息 void calendar_save_para(_alarm_obj * alarm) { ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-8 21:19:01 | 显示全部楼层
参考这个代码: 
[mw_shl_code=c,true]//闹钟数据保存在:SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings)+sizeof(_vs10xx_obj) //读取日历闹钟信息 //alarm:闹钟信息 void calendar_read_para(_alarm_obj * alarm) { AT24CXX_Read(SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings),(u8*)alarm,sizeof(_alarm_obj)); } //写入日历闹钟信息 //alarm:闹钟信息 void calendar_save_para(_alarm_obj * alarm) { OS_CPU_SR cpu_sr=0; alarm->ringsta&=0X7F; //清空最高位 OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) AT24CXX_Write(SYSTEM_PARA_SAVE_BASE+sizeof(_system_setings),(u8*)alarm,sizeof(_alarm_obj)); OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断) }[/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2013-9-22
在线时间
18 小时
 楼主| 发表于 2014-7-9 10:46:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,参照你的写法是可以了,那如果我程序中需要局部修改结构体的某个参数,存入FLASH,我怎么知道那个参数具体存在FLASH中的哪个位置呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2014-7-9 20:47:15 | 显示全部楼层
回复【3楼】970931626:
---------------------------------
直接重写整个结构体.
flash反正你也不可以一次写1个字节.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1154
金钱
1154
注册时间
2014-11-9
在线时间
228 小时
发表于 2016-8-15 10:56:50 | 显示全部楼层
970931626 发表于 2014-7-9 10:46
回复【2楼】正点原子:
---------------------------------
谢谢原子哥,参照你的写法是可以了,那如果我程 ...

定义一个数组,结构体对齐数组的首地址。结构体里面的成员自动对齐数组
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
发表于 2016-8-15 11:08:12 | 显示全部楼层
帮顶......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表