STM32 FLASH 读写数据

news2024/10/6 8:37:05

1. 《STM32 中文参考手册》,需要查看芯片数据手册,代码起始地址一般都是0x8000 0000,这是存放整个项目代码的起始地址

在这里插入图片描述

2. 编译信息查看代码大小,修改代码后第一次编译后会有这个提示信息

2.1 修改代码后编译,会有提示信息 KEIL,计算出来代码总共 61076 Byte

在这里插入图片描述

2.2 如果什么都没有改,直接编译是没有这个提示信息的

在这里插入图片描述

3. 定义Flash 保存数据的起始地址

0x08000000 是存放代码的起始地址,我们保存的数据要和代码分开,放在代码区域后面,所以后面加了个80000, 比keil 编译里面算出来的和要大将近2 万个字节,预留量很大,后期增加代码也基本不会覆盖到这里来

#define PAGE_ADDR        (0x08000000 + 80000)

4. Flash 读接口, 从地址 PAGE_ADDR 处读取num 个16位的数据,保存到数组data 里面

u8 MemReadByte(u16 *data, u16 num)
{
    u16 *temp_addr = (u16*)(PAGE_ADDR);
    while(num--)
    {
        *data++= *temp_addr++;
    }
    
    return 1;
}

5. Flash 写接口,将16 位的数组 写入到Flash里面, 从地址PAGE_ADDR 开始写,写num 个数字

u8 MemWriteByte(u16 *data, u16 num)
{
    FLASH_Status temp_stat;
    u32 temp_addr = PAGE_ADDR;
    
    FLASH_Unlock();
    temp_stat = FLASH_ErasePage(PAGE_ADDR);
    if(temp_stat != FLASH_COMPLETE)
    {
        FLASH_Lock();
        return 0;
    }    
    while(num--)
    {
        temp_stat = FLASH_ProgramHalfWord(temp_addr, *data);
        if(temp_stat != FLASH_COMPLETE)
        {
            FLASH_Lock();
            return 0;
        }
        temp_addr += 2;
        data++;
    }
    
    FLASH_Lock();
    
    return 1;    
}

6. keil 选择芯片型号

在这里插入图片描述

7. 在keil 里面查看对应芯片的Flash 大小

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/887135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网在制造业中的应用

制造业目前正在经历第四次工业革命,物联网、人工智能和机器人等技术进步正在推动行业的发展。研究表明,到2024年,全球制造商将在物联网解决方案上投资700亿美元,许多制造商正在实施物联网设备,以利用预测性维护和复杂的…

优化GitHub网站访问慢的问题

方法一、修改host文件解决 大型网站服务器都不会是只有一台服务器,而是多台服务器组成的集群一起对外提供服务。 使用站长工具测速,找一个速度比较快的服务器。 图中可以看到140.82.121.4这个ip比较快, 下面修改hosts: Mac 在 /etc/hosts 中&#x…

.net连接mysql,提示找不到请求的 .Net Framework Data Provider。可能没有安装

开发完成的.net程序需要连接mysql数据库,在个人电脑上运行没问题,别人运行时提示“提示找不到请求的 .Net Framework Data Provider。可能没有安装”。经过查询,安装Connector/NET 8.1.0,下载地址如下所示: https://d…

Mac OS minicom 无法设置921600问题

MacOS minicom 无法设置921600问题 介绍过程解决方案参考资料 介绍 minicom是Mac上一款非常好用的串口工具。本文假设你已经安装minicom,并且知道minicom的一般配置和使用方法。这是“MacOS minicom 无法设置921600”的解决问题记录。它在以下环境中设置成功&#…

【制作npm包1】申请npm账号、认识个人包和组织包

概述 在开发当中经常有一种现象,重复代码写了N多遍,再次写同样的逻辑就再次翻查以前的代码逻辑。效率低下且容易出错,封装一个npm包的价值也不仅仅是给别人用,封装一套属于自己或者本部门的npm包也是相当有必要。 也许经常看到一…

fastadmin 自定义按钮弹窗不是异步xhr提交

遇到一个奇怪的问题 按官方文档要求,js中也重新绑定事件了 但弹窗出来的表单还不是xhr提交,这为什么? 经过我不断测试发现,如上述的方法名不能带有下划线,蛇形大小写,否则一律不生效。 浪费了我一天半时…

小程序CSS button按钮自定义高度之后不居中

问题&#xff1a; 按钮设置高度后不居中 <view><button class"btn1" size"">Save</button> </view> page {font-size: 30rpx; }.btn1 {margin-top: 100rpx;height: 190rpx;background: linear-gradient(90deg, #FF8A06, #FF571…

webSocket 聊天室 node.js 版

全局安装vue脚手架 npm install vue/cli -g 创建 vue3 ts 脚手架 vue create vue3-chatroom 后端代码 src 同级目录下建 server: const express require(express); const app express(); const http require(http); const server http.createServer(app);const io req…

微信小程序:模板使用

目录 模板的优点&#xff1a; 一、静态模板创建 二、静态模板使用 1.*.wxml引入模板 2.模板使用 3.*.wxss引入模板的样式 三、动态模板创建 四、动态模板使用 1.*.wxml引入模板 2.模板使用 3.*.js定义动态数据 五、结果展示 总结 模板的优点&#xff1a; 有利于保持网…

第二章 搜索 No.1BFS之Flood Fill与最短路模型

文章目录 Flood Fill算法1097. 池塘计数1098. 城堡问题1106. 山峰和山谷 最短路模型1076. 迷宫问题188. 武士风度的牛1100. 抓住那头牛 Flood Fill算法 可以在线性时间复杂度内&#xff0c;找到某个点所在的连通块 想象一个矩阵&#xff0c;有洼地和高地&#xff0c;选择一个洼…

经验分享:企业数据仓库建设方案总结!

导读 在企业的数字化转型浪潮中&#xff0c;数据被誉为“新时代的石油”&#xff0c;而数据仓库作为数据管理与分析的核心基础设施&#xff0c;在企业的信息化建设中扮演着重要的角色。本文将深入探讨企业数据仓库建设过程中所遇到的问题以及解决经验&#xff0c;为正在筹备或…

微信程序 自定义遮罩层遮不住底部tabbar解决

一、先上效果 二 方法 1、自定义底部tabbar 实现&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官网去抄 简单写下&#xff1a;在代码根目录下添加入口文件 除了js 文件的list 需要调整 其他原封不动 代码&#xf…

电脑键盘打不了字按哪个键恢复?最新分享!

“有没有朋友知道电脑键盘为什么会莫名其妙就打不了字&#xff1f;明明用得好好的&#xff0c;突然就打不了字了&#xff0c;真的让人很迷惑&#xff01;有什么方法可以解决吗&#xff1f;” 电脑键盘为我们的办公提供了很大的方便&#xff0c;我们可以利用键盘输入我们需要的文…

如何用树莓派Pico针对IoT编程?

目录 一、Raspberry Pi Pico 系列和功能 二、Raspberry Pi Pico 的替代方案 三、对 Raspberry Pi Pico 进行编程 硬件 软件 第 1 步&#xff1a;连接计算机 第 2 步&#xff1a;在 Pico 上安装 MicroPython 第 3 步&#xff1a;为 Thonny 设置解释器 第 4 步&#xff…

深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想

大家好,我是微学AI,今天给大家介绍一下深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想,文本将介绍AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色,并结合了GPT-4接口来实现各个角色的功能,设置中央控制器,公司运作过程会生成…

GitKraken保姆级图文使用指南

前言 写这篇文章的原因是组内的产品和美术同学&#xff0c;开始参与到git工作流中&#xff0c;但是网上又没有找到一个比较详细的使用教程&#xff0c;所以干脆就自己写了一个[doge]。文章的内容比较基础&#xff0c;介绍了Git内的一些基础概念和基本操作&#xff0c;适合零基…

iOS申请证书(.p12)和描述文件(.mobileprovision)

打包app时&#xff0c;经常会用到ios证书&#xff0c;但很多人都苦于没有苹果电脑&#xff0c;即使有苹果电脑的&#xff0c;也会觉得苹果电脑操作也很麻烦&#xff0c;这里记录一下&#xff0c;用香蕉云编&#xff0c;申请证书及描述文件的过程。 香蕉云编的地址&#xff1a;…

uniapp 上传比较大的视频文件就超时

uni.uploadFile&#xff0c;上传超过10兆左右的文件就报错err&#xff1a;uploadFile:fail timeout&#xff0c;超时 解决&#xff1a; 在manifest.json文件中做超时配置 uni.uploadFile({url: this.action,method: "POST",header: {Authorization: uni.getStorage…

深入理解 Flutter 图片加载原理

作者&#xff1a;京东零售 徐宏伟 来源&#xff1a;京东云开发者社区 前言 随着Flutter稳定版本逐步迭代更新&#xff0c;京东APP内部的Flutter业务也日益增多&#xff0c;Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验…

wkhtmltopdf 与 .Net Core

wkhtmltopdf 是使用webkit引擎转化为pdf的开源小插件. 其有.NET CORE版本的组件,DinkToPdf,但该控件对跨平台支持有限。 故打算在Linux上安装相关插件直接调用. 准备工作 虚拟机&#xff1a;Linux version 3.10.0-1160.el7.x86_64 wkhtmltox开发包&#xff1a;wkhtmltox_0.12…