| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 图文介绍STM32L4读写内部flash -> 正文阅读 |
|
[嵌入式]图文介绍STM32L4读写内部flash |
型号:STM32L431KBU6; 该型号内存 = 128KB,起始地址 = 0x0800_0000;只有63页; ?在L4的user manual手册的第三章详细介绍了FLASH的操作细节,我挑一些重要的信息; flash擦除方式有两种: 1、Page erase—以页位单位擦除,1页=2K,每次最少擦除1页; 2、Mass erase—擦除整个flash; 比较重要的信息是flash的写操作只能是双字(double word,64bit),写完第一个字,再写第二个字。 下面贴出可用的代码: 第一步:定义相关变量:
关于这个写入数据的地址,不能瞎定义,千万别定义在程序存储的区域; 我是这样选的:先用ST-Link连接上mcu,看看我的程序占用了哪些空间。 ? ? ? 从起始地址的0x08000000,到0x080025F0这个区间有数据,所以不能选择这个区域。所以就尽量往下选了个肯定安全的起始地址0x08008000; 第二步:解锁; 第三步:擦除; 第四步: 写数据; 第五步:上锁; 经过这5步数据就写进去了。 具体代码:
flash_erase.Page =16的计算方法举例: Page =(定义的起始地址 - 基地址)/ 2K; e.g.(0x08008000 - 0x08000000)/ (2 * 1024) = 16; 读数据的方法只需一句话:
因为L4的flash只能是双字,所以必须是:*(__IO uint64_t *) 如果可以操作单字,就可以写:*(__IO uint32_t *) 为了验证写入的数据:0x00000001_00000001是否正确,我把读出来的数据拆成了两个uint32_t变量,分别存储高32bit数据d1,和低32bit数据d2; 打印出来的数据是: ? 链接ST-Link我们可以查看对应地址里存储的数据: ?从图中可以看出,对应地址0x080080000地址对应的地址就是例子中写入的数据。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:31:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |