stm32f103c8t6的内部Flash读取

本文介绍了STM32如何配置定时器、操作SD卡进行读写,详细展示了如何将数据写入和验证Flash内存,包括修改数组大小、数据内容和地址操作。重点讲解了使用STM32的Flash进行8k字节数据存储与验证的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、知识简述

二、SD卡读写

三、写入flash

配置定时器

修改数组大小

修改数据内容

将i变量改成uint16_t位

四、运行结果

修改起始地址重新烧录

验证flash内存

五、总结


一、知识简述

stm32内部框架图

stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同。

RAM起始地址是0x2000 0000,结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。

Flash中的内容一般用来存储代码和一些定义为const的数据,断电不丢失, 
RAM可以理解为内存,用来存储代码运行时的数据,变量等等。掉电数据丢失。

STM32将外设等都映射为地址的形式,对地址的操作就是对外设的操作。 
stm32的外设地址从0x4000 0000开始,可以看到在库文件中,是通过基于0x4000 0000地址的偏移量来操作寄存器以及外设的。

二、SD卡读写

将64K数据分250次,每次256字节,写入SD卡,测试速度

总共用了14分钟,写了64K字节。 

查看hello.txt 

可以看到写入了250行数据,总计64K字节

 从SD卡读出

利用FATS从SD卡读出数据,并且串口输出。

修改代码

将写入函数修改为读出函数名

定义读出函数,指针标志s,且定义字节类型格式br和一个存储读取的数组READBUFF。

 ① 修改f_open函数的第三个打开状态为FA_READ模式。②文件指针移至相应位置,否则无输出。③指针加地址④使用FATS的read函数,第一个参数是指针,第二个是存储数组,第三个是数组大小,第四个是强制转换br为UINT格式。⑤输出

 

 输出结果

 可以看到依次输出,用了a,b,c,d,e来区分不同。

三、写入flash

实验源码

链接:https://pan.baidu.com/s/1jJ6_YlAI9W81w7h6c7FVBw 
提取码:qwer

cubeMX设置

配置定时器

 使PC13GPIO模式,判断程序是否运行成功

 

 使GPIO引脚使能

  时钟配置

 修改代码

修改数组大小

  首先修改存储的Flash读取数组和写入数组分别为8位的8k个字节大小。

uint8_t FlashWBuff [8000];
uint8_t FlashRBuff [8000];

修改数据内容

 将数组中写入要存储的数据为8K个字节。

将i变量改成uint16_t位

  修改flash.h中的flash结束地址为 0X0801BA00 

此地址是由0x0800c000+0xFA00(64K)=0X0801BA00 

 st-link设置

ST-LINKSTM32
SWCLK/TCKSWCLK/TCK
SWDIO/TMSSWDIO/TMS
GNDGND
VCCVCC

设置debug为st-link debugger

 点进去后可以看到要检测出SWDIO有信息即可烧录

 编译烧录

 接着全速运行。

四、运行结果

 PC13灯会亮起来

 可以看到它写到了0x0800DF3F,此地址刚好是0X0800C000+0X1F40(8K)的数据。

修改起始地址重新烧录

修改起始地址为0X0800DF40

 进行烧录结果

可以看到最后内存写到了0X0800FE7F

进行反复的更改初始地址,每次增加8K字节的地址,将四次8k一共32k数据写入flash。

结果如下图,可以看到每次的地址都是增加8K个字节的地址。

 

 

验证flash内存

 可以看到flash地址重0X0800C00到0X08013CFF总共32k字节都写满了数据。

五、总结

通过对SD卡读写操作,对其有了进一步的了解,flash的断电后会保存其中内容,下一次可以继续写入。

参考链接:(27条消息) stm32f103c8t6的内部Flash读取_Laul Ken-Yi的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值