STM32 Flash读写;Flash地址对应的存储内容及方式;
来源:互联网 发布:苹果手机excel软件 编辑:程序博客网 时间:2024/06/05 15:48
概念:计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是1个字节,
1个存储单元存放1个字节,每个存储单元对应一个32位(bit)地址,所以重要的话说三遍:对于32bit的ARM CPU
一个32位地址指向1个字节!!! 一个32位地址指向1个字节!!! 一个32位地址指向1个字节!!!
我们常说的flash空间,多少多少K,指的是多少多少K byte
假如我们执行下面的函数操作:
FlashWriteWord_P(0x1082,&WordVar); /* 向0x1082、0x1083中写入0xABCD */经过编译,从map文件查看flash内容如下:
注意,前面的1080是十六进制,所以从0x1080到0x1090,共16个地址跨越,因为还有0x108A....0x108F
从这个map中,我们能发现一些问题
(1)验证了一个32位地址存放的是1个字节。
(2)将一个16位数,也就是2个字节,存放的顺序是低字节在前,高字节在后,这个跟感官上不一样。
(3)未存放数据的闪存单元是0xFF,这个不是巧合,因为flash说到底,内部也是只有1和0两种状态,CPU默认都是1.
另外,一个潜规定,向Flash中写数据,起始地址最好是偶数,否则容易出现错误,所以:
- 可以在0x1080、0x1081中存放一个uint16_t类型的数据;
- 可以在0x1082、0x1083中存放一个uint16_t类型的数据;
- 但是不能在0x1081、0x1082中存放一个uint16_t类型的数据。
从上可以看出,数据在flash中存放顺序是低在前,高在后,那么读flash时呢,答案是,会再反转,高在前,低在后,因为读flash必须一次至少读16位,不太允许读8位,所以正好又反过来了。
在编程时,要注意给要分配要存储的内容地址,每个数据对应地址,都是偶数,因为1个数据要占用2个地址。
阅读全文
0 0
- STM32 Flash读写;Flash地址对应的存储内容及方式;
- 实现STM32 Flash的读写
- stm32 Flash读写[库函数]
- stm32 Flash读写[库函数]
- stm32 Flash读写[库函数]
- stm32 读写内部Flash
- STM32读写内部Flash
- STM32 读写内部Flash
- code-stm32读写FLASH
- STM32 flash读写源程序
- STM32内部flash读写
- stm32 flash读写
- STM32 flash 读写操作
- 封装对STM32的Flash读写操作
- STM32 内部flash的读写程序
- STM32 Flash 擦除 读写 成功
- stm32 读写flash 学习笔记
- STM32内部FLASH读写-通用
- 安卓视频录制、调用系统音乐、视频播放器所遇问题及解决(包含7.0兼容问题)
- JS关于字符串和数组的一些使用方法
- Linux数字权限解释
- 一些概念分析比较
- 【视频开发】ONVIF、RTSP/RTP、FFMPEG的开发实录
- STM32 Flash读写;Flash地址对应的存储内容及方式;
- 2015 ACM Amman Collegiate Programming Contest训练总结【12/12】
- 启动项目时出现java.io.EOFException异常
- 制作自定义图标字体,html引用web svg矢量字体
- B
- 已达到计算机的连接数最大值,无法再同此远程计算机连接
- docker 操作命令详解
- Linux 下配置Apache Http Server
- Erlang RabbitMQ