16位数据在8位FLASH中的写入和读取

4 篇文章 0 订阅

背景:

  • 数据采集时的数据位uint16_t类型的数据,需要将其写入8位flash,以及从8位flash中还原。

       一个16位数据,如 uint16_t temp = 0x1234,在8位flash中会在相邻的两个地址中按顺序保存,被拆分为0x12和0x34(注意大小端),如何将这个16位数据直接写入8位flash?有两种方法,一种是把数据声明为联合体,另一种是指针操作。

关于联合体声明的方法,可参考:https://baijiahao.baidu.com/s?id=1623457037181175751&wfr=spider&for=pc

指针操作(写):

  • 定义一个uint8_t类型的指针 uint8_t *pwData,指向被强制转换为uint8_t类型的uint16_t类型的数组uint16_t data[LEN]的首地址,然后将*pwData写入flash,写入完毕后,pwData指针地址+1,总写入次为数组长度的2倍
  • 即uint8_t *pwData = (uint8_t *)data;pwData++;

指针操作(读):

  • 定义一个uint16_t类型的指针 uint16_t *prData,指向被强制转换为uint16_t类型的uint8_t类型的flash数组数据,uint8_t dataflash[LEN]的首地址,然后将*prData按要求处理,处理完毕后,pwData指针地址+1,总读取次数为数组长度的1/2
  • 即uint16_t *prData = (uint16_t *)dataflash;prData++;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值