STM32c8t6Flash地址空间的数据读取
STM32F103c8t6Flash地址空间的数据读取
- 一、项目任务
- 二、Flash的读写操作
- 1、创建STM32CubeMX工程文件
- 2、代码修改
- 3、连接STlink调试
- (1)程序烧录
- (2)调试
- 三、Flash原理
- 四、实验总结
- 五、参考文献
一、项目任务
)Flash地址空间的数据读取。stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率。
二、Flash的读写操作
1、创建STM32CubeMX工程文件
①定时器配置
②配置系统时钟树
③配置引脚
③配置中断
④调整堆栈大小为2k
生成文件即可。
2、代码修改
① 将flash.c
及flash.h
文件加入到工程(flash.h
文件放在INC文件夹下即可)
② 在main.c
中加入代码
添加:#include "flash.h"
添加:
/* USER CODE BEGIN 0 */
uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];
/* USER CODE END 0 *//* USER CODE BEGIN 1 */uint8_t i;uint8_t FlashTest[] = "Hello This is ZhangShiSan Flash Test DEMO";/* USER CODE END 1 */
/* USER CODE BEGIN SysInit */FlashWriteBuff( DEVICE_INFO_ADDRESS, FlashTest,sizeof(FlashTest) ); // 写入数据到Flashfor(i=0;i<255;i++)FlashWBuff[i] = i;FlashWriteBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest), FlashWBuff,255 ); // 写入数据到FlashFlashReadBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest),FlashRBuff,255 ); // 从Flash中读取数/* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */
3、连接STlink调试
(1)程序烧录
① STlink连线
② 编译无误
③ 在 Debug
选项卡中,请选择ST-Link Debugger
④ 选择SW模式
再选择ST-LINK Debugger
后点击settings
⑤ 点击LOAD下载
- 注:使用st-link和keil进行烧录会严格检查stm32型号,如果不是对应的型号烧录会报错
(2)调试
① 运行程序
② 打开内存观察窗口,输入0x800c00,观察修改的flash区间内容
View->memory windows->memory 1
③ 打开变量观察窗口,将变量FlashWBuff
和FlashRBuff
加入到 Watch 1 观察窗口:
④ View->Periodic Windows Update开启变量自动更新
⑤ 全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
⑥ 在Memory 1窗口中可以看到在FLASH地址0x0800C000区成功写入对应内容
三、Flash原理
不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了 1024K 字节。市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片。
- STM32F1 的闪存(Flash)模块:主存储器、信息块、闪存存储器接口寄存器
①主存储器。该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。
②信息块。该部分分为 2 个小部分,其中启动程序代码,是用来存储 ST 自带的启动程序,用于串口下载代码,当 BOOT0 接 V3.3, BOOT1 接 GND 的时候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等功能。
③闪存存储器接口寄存器。该部分用于控制闪存读写等,是整个闪存模块的控制机构。对主存储器和信息块的写入由内嵌的闪存编程/擦除控制器(FPEC)管理;编程与擦除的高电压由内部产生。
在执行闪存写操作时,任何对闪存的读操作都会锁住总线,在写操作完成后读操作才能正确地进行;既在进行写或擦除操作时,不能进行代码或数据的读取操作。
四、实验总结
本次实验为stm32的Flash读写操作,本次实验的预实验对于次实验的分析很有帮助,主要是进行分析sd卡的读写操作,本次实验在以上一个实验基础上进行的,本次实验开始的时候有点迷茫,后来明白了在做什么,参考他人博客做下来就很简单了。
五、参考文献
【1】https://blog.csdn.net/zhanglifu3601881/article/details/96632971
【2】https://blog.csdn.net/weixin_45970808/article/details/122118902
【3】https://blog.csdn.net/qq_46467126/article/details/122098829
STM32c8t6Flash地址空间的数据读取相关推荐
- STM32利用flash读取音频数据读取与DAC播放
目录 一.博客内容 二.Flash地址空间的读取 2.1 Flash原理 2.2 软.硬件准备 2.3 利用CubeMX建立工程 2.4 工程代码 2.5 ST-Link的使用 2.6 仿真调试 三 ...
- STM32F103基于片内flash的数据读取与音乐播放
目录 一.前言 二.题目要求 三.什么是片内flash 四.闪存的编程和擦除 五.基于flash的数据读取 1.工程创建 2.修改代码 3.烧录 4.调试 六.基于flash的提示音播放 1.生成正弦 ...
- 基于stm32f103c8t6的flash的数据读取以及提示音播放程序
文章目录 一. 题目 二. 所使用软件硬件 三. 基于flash的数据读取 四. 基于片内Flash的提示音播放程序 1. 使用DAC输出周期2khz的正弦波 2. 使用DAC输出数字音频歌曲数据转换 ...
- 『TensorFlow』数据读取类_data.Dataset
一.资料 参考原文: TensorFlow全新的数据读取方式:Dataset API入门教程 API接口简介: TensorFlow的数据集 二.背景 注意,在TensorFlow 1.3中,Data ...
- linux 读取大量图片 内存,10 张图帮你搞定 TensorFlow 数据读取机制
导读 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解 ...
- 数据读取与数据扩增方法
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:樊亮.黄星源.Datawhale优秀学习者 本文对图像数据读取及图 ...
- 图像数据读取及数据扩增方法
Datawhale干货 作者:王程伟,Datawhale成员 本文为干货知识+竞赛实践系列分享,旨在理论与实践结合,从学习到项目实践.(零基础入门系列:数据挖掘/cv/nlp/金融风控/推荐系统等,持 ...
- Task02——零基础入门NLP - 新闻文本分类之数据读取与分析
本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...
- 单细胞数据读取(二)之Read10X读不出来dgCMatrix报错
前面我们也遇到过10x的数据读取不进去,如果大家遇到下面的报错,可以通过修改10x的原始重新读取,详细可以见链接https://blog.csdn.net/weixin_43949246/articl ...
最新文章
- 工信部 学习类app_工信部整治APP侵权行为,私自收集个人信息等8类问题被点名...
- 2D和3D机器视觉检测技术的优势和局限性
- IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐(自用,真的超级牛逼)
- Citrix俱乐部 - 您的思杰家园
- CountDownLatch 介绍与举例实现
- vue element ui下拉菜单和不是table列表全选功能问题解决方案
- C语言编译器之四,Turbo C等
- 计算机组成原理统一试卷,安阳工学院计算机组成原理试卷a
- adb工具下载及配置使用
- 《系统集成项目管理》第十六章 变更管理
- Bootable USB Stick
- 骆昊python100天 github_GitHub - Greatandy/Python-100-Days: Python - 100天从新手到大师
- DDOS攻击/防御介绍
- [SHOI2008] 小约翰的游戏
- Excel-VBA-数组-01-定义数组
- linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
- 小罗学习java的一天(java源文件的命名规则)
- 收集的优秀的英文歌曲
- 使用ThreeJs从零开始构建3D智能仓库——第五章(添加货架、货物与侧边栏)
- Linux无root权限解决matplotlib中文字体各种疑难杂症