Stm32 HAL库 访问内部flash空间

Stm32 HAL库 访问内部flash空间

  • 代码的部分
    • 串口
    • 配置申明文件
    • main函数

在一些时候,需要存储一些数据,但是又不想接外部的flash,那我们可以知道,其实还有内部的flash可以使用,
需要注意的是内部flash,读写次数有限,所以需要控制擦写次数

首先使用cubmx生成代码,
就是配置时钟和debug口,还有串口信息

在这里插入图片描述

代码的部分

串口

/* USER CODE BEGIN PV */
#include "stdio.h"
int fputc(int ch,FILE *f)
{HAL_UART_Transmit (&huart1 ,(uint8_t *)&ch,1,HAL_MAX_DELAY );return ch;
}
/* USER CODE END PV */

配置申明文件

这里配置了地址的申明文件,和flash操作的结构体

需要注意的是,每个芯片都有最大的flash空间,以及代码空间,所以建议在配置地址的时候尽量到地址空间的后面,这样可以防止擦写到代码的空间。

/* USER CODE BEGIN 0 *///debug 查看对应地址,是否正确,如果显示的是问号,则无此位置
//C6T6 32k  最大地址 0x08007FF0
//C8T6 64k  最大地址 0x0800FFE0
#define FLASH_SAVE_ADDR  0x08007000static FLASH_EraseInitTypeDef EraseInitStruct = {.TypeErase = FLASH_TYPEERASE_PAGES,       //页擦除.PageAddress = FLASH_SAVE_ADDR,                //擦除地址.NbPages = 1                              //擦除页数
};
/* USER CODE END 0 */

main函数

下面就是main函数的配置,
流程就是 擦除->写入数据->读出数据

int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while (1){HAL_FLASH_Unlock();uint32_t PageError = 0;__disable_irq();                             //擦除前关闭中断if (HAL_FLASHEx_Erase(&EraseInitStruct,&PageError) == HAL_OK){printf("擦除 成功\r\n");}__enable_irq();                             //擦除后打开中断uint32_t writeFlashData = 0x55555555;        //待写入的值uint32_t addr = FLASH_SAVE_ADDR;                  //写入的地址HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,addr, writeFlashData);printf("at address:0x%x, read value:0x%x\r\n", addr, *(__IO uint32_t*)addr);HAL_FLASH_Lock();while(1);}/* USER CODE END 3 */
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建型模式--1.单例模式【巴基速递】

1. 巴基的订单 在海贼世界中,巴基速递是巴基依靠手下强大的越狱犯兵力,组建的集团海贼派遣公司,它的主要业务是向世界有需要的地方输送雇佣兵(其实是不干好事儿)。 自从从特拉法尔加罗和路飞同盟击败了堂吉诃德家族 &…

LeetCode-74. 搜索二维矩阵【数组 二分查找 矩阵】

LeetCode-74. 搜索二维矩阵【数组 二分查找 矩阵】 题目描述:解题思路一:先二分查找行,再二分查找列。解题思路二:暴力遍历,也能过。解题思路三:用python的in。 题目描述: 给你一个满足下述两条…

【绩效管理】帮助零售企业建立分层分类绩效考核体系项目纪实

购物中心张经理评价:“员工的绩效管理一直是困扰我公司的难题,我们只懂得怎么经营,至于怎么做人力资源管理,真是一点都不懂。这次华恒智信为我们提供的服务对我们的帮助很大。基于企业实际调研情况,华恒智信专家明确指…

nginx配置实例-负载均衡

目录 一、目的:实现效果 二、准备工作 三、实验部署 3.1修改第二台Tomcat服务器的监听端口为8081 3.2修改完成后,重新启动tomcat8081这台服务器。 3.3在浏览器测试 3.4在两台tomcat里面webapps目录中,创建名称是edu的文件夹&#xff0c…

绝地求生:29.1版本爆料杜卡迪联名、新通行证、成长型AUG和异色、战队皮

这回的更新爆料是真的多,虽然不会同时上线,本期杜卡迪因为没有轮毂和轮胎,所以车漆的颜色可能会贵一点,但是似乎会有进阶优惠礼包可以购买 合作者战队 本期合作者战队皮肤感觉比较一般,武器不是热门武器,而…

SpringBoot学习之Kibana下载安装和启动(Mac版)(三十二)

一、简介 Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。 …

kubernetes集群添加到jumpserver堡垒机里管理

第一步、在kubernetes集群中获取一个永久的token。 jumpserver堡垒机用api的来管理kubernetes,所以需要kubernetes的token,这个token还需要是一个永久的token,版本变更:Kubernetes 1.24基于安全方面的考虑(特性门控Le…

Springboot引入swagger

讲在前面&#xff1a;在spring引入swagger时&#xff0c;由于使用的JDK、Spring、swagger 的版本不匹配&#xff0c;导致启动报错&#xff0c;一直存在版本依赖问题。所以在此声明清楚使用版本。JDK 1.8、Spring boot 2.6.13、 Swagger 2.9.2。 引入maven依赖 <dependency&…

2024单品正价起号,直播素材投流选品,【选品课】+【投流课】+【素材课】+【卡首屏】

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89064168 更多资源下载&#xff1a;关注我。 课程内容: 01 01 1.如何养账号过风控,mp4 01 1.如何搭建一条计划(1)..mp4 02 1.如何搭建一条计划(2)..mp4 02 02 2.单品起号方案如何选择,mp4 03 2.-比…

java算法day46 | 动态规划part08 ● 139.单词拆分 ● 关于多重背包,你该了解这些! ● 背包问题总结篇!

139.单词拆分 完全背包问题&#xff0c;只不过装入背包时需要附加一个判断条件。 class Solution {public boolean wordBreak(String s, List<String> wordDict) {boolean[] dpnew boolean[s.length()1];dp[0]true;for(int j1;j<s.length();j){for(int i0;i<wordD…

关于Mac使用idea问题

多窗口切换问题 如果出现Mac打开idea新的项目&#xff0c;发现始终就一个窗口&#xff0c;不能像window那样多窗口&#xff0c;比如 只能这样来回点着切换&#xff0c;提供以下方案 1.方案一 则在idea里多个项目会呈tab页切换&#xff0c;也是始终一个窗口&#xff0c;只是多了…

如何成为一名优秀的工程师下

身为工程师&#xff0c;理所当然要重视实践&#xff0c;自然科学不管发展到何时都离不开实验。 电子学本身就是 为了指导工程实践。所以不要谈空洞的理论。现在很多毕业生都面临这样的问题&#xff0c;总是谈一些空洞的理论&#xff0c;甚至错误的但还不以为然的理论。实践可以…