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.cflash.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

③ 打开变量观察窗口,将变量FlashWBuffFlashRBuff加入到 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地址空间的数据读取相关推荐

  1. STM32利用flash读取音频数据读取与DAC播放

    目录 一.博客内容 二.Flash地址空间的读取 2.1 Flash原理 2.2 软.硬件准备 2.3 利用CubeMX建立工程 2.4 工程代码 2.5 ST-Link的使用 ​2.6 仿真调试 三 ...

  2. STM32F103基于片内flash的数据读取与音乐播放

    目录 一.前言 二.题目要求 三.什么是片内flash 四.闪存的编程和擦除 五.基于flash的数据读取 1.工程创建 2.修改代码 3.烧录 4.调试 六.基于flash的提示音播放 1.生成正弦 ...

  3. 基于stm32f103c8t6的flash的数据读取以及提示音播放程序

    文章目录 一. 题目 二. 所使用软件硬件 三. 基于flash的数据读取 四. 基于片内Flash的提示音播放程序 1. 使用DAC输出周期2khz的正弦波 2. 使用DAC输出数字音频歌曲数据转换 ...

  4. 『TensorFlow』数据读取类_data.Dataset

    一.资料 参考原文: TensorFlow全新的数据读取方式:Dataset API入门教程 API接口简介: TensorFlow的数据集 二.背景 注意,在TensorFlow 1.3中,Data ...

  5. linux 读取大量图片 内存,10 张图帮你搞定 TensorFlow 数据读取机制

    导读 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解 ...

  6. 数据读取与数据扩增方法

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:樊亮.黄星源.Datawhale优秀学习者 本文对图像数据读取及图 ...

  7. 图像数据读取及数据扩增方法

    Datawhale干货 作者:王程伟,Datawhale成员 本文为干货知识+竞赛实践系列分享,旨在理论与实践结合,从学习到项目实践.(零基础入门系列:数据挖掘/cv/nlp/金融风控/推荐系统等,持 ...

  8. Task02——零基础入门NLP - 新闻文本分类之数据读取与分析

    本期目标 学习使用Pandas读取赛题数据 分析赛题数据的分布规律 数据读取 import pandas as pd train_df=pd.read_csv('./train_set.csv/tra ...

  9. 单细胞数据读取(二)之Read10X读不出来dgCMatrix报错

    前面我们也遇到过10x的数据读取不进去,如果大家遇到下面的报错,可以通过修改10x的原始重新读取,详细可以见链接https://blog.csdn.net/weixin_43949246/articl ...

最新文章

  1. 工信部 学习类app_工信部整治APP侵权行为,私自收集个人信息等8类问题被点名...
  2. 2D和3D机器视觉检测技术的优势和局限性
  3. IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐(自用,真的超级牛逼)
  4. Citrix俱乐部 - 您的思杰家园
  5. CountDownLatch 介绍与举例实现
  6. vue element ui下拉菜单和不是table列表全选功能问题解决方案
  7. C语言编译器之四,Turbo C等
  8. 计算机组成原理统一试卷,安阳工学院计算机组成原理试卷a
  9. adb工具下载及配置使用
  10. 《系统集成项目管理》第十六章 变更管理
  11. Bootable USB Stick
  12. 骆昊python100天 github_GitHub - Greatandy/Python-100-Days: Python - 100天从新手到大师
  13. DDOS攻击/防御介绍
  14. [SHOI2008] 小约翰的游戏
  15. Excel-VBA-数组-01-定义数组
  16. linux去掉锁屏密码,使用ADB SHELL清除联想A390t的锁屏密码
  17. 小罗学习java的一天(java源文件的命名规则)
  18. 收集的优秀的英文歌曲
  19. 使用ThreeJs从零开始构建3D智能仓库——第五章(添加货架、货物与侧边栏)
  20. Linux无root权限解决matplotlib中文字体各种疑难杂症

热门文章

  1. 泛癌种生物标志物介绍
  2. Cy5-MAL,Cy5-马来酰亚胺,1437796-65-0,1437872-46-2
  3. 原生 hadoop安装
  4. CDQ分治(二维CDQ 、三维CDQ+树状数组、四维CDQ+CDQ+树状数组)
  5. PTA 7-2 复数计算
  6. 验证本地缓冲区溢出漏洞攻击
  7. 物联网 长连接 服务器_为什么物联网还有很长的路要走
  8. BaseAdapter的notifyDataSetChanged方法
  9. go 字符串分割数组
  10. 【New】SAP增值税由 16%调整为 13%税率的具体操作