stm32f103c8t6的内部Flash读取

本文详细介绍了如何在STM32F103C8T6单片机上进行内部Flash的读取和写入操作。首先概述了STM32的内存框架,然后通过实验步骤展示了从SD卡读取数据并写入Flash的过程,包括配置定时器、GPIO、时钟、堆栈大小的设置,以及代码的修改和ST-Link的烧录设置。最后,验证了Flash内存写入的成功,加深了对Flash特性的理解。

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

目录

1.stm32内部框架图

二、SD卡读写

2.1 要求

2.2 实验过程截图

 2.3 查看hello.txt

2.4 从SD卡读出

2.4.1 修改代码

 2.4.2 输出结果

三、写入flash

3.1.1 配置定时器

 3.1.2 使PC13GPIO模式

 3.1.3 使GPIO引脚使能

3.1.4 时钟配置

3.1.5 设置堆栈大小 

3.2 修改代码

3.2.1 修改数组大小​

3.2.2 修改数据内容

 3.2.3 将i变量改成uint16_t位

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

3.3 st-link设置 ​

 3.4 编译烧录​

 3.6 修改起始地址重新烧录

​ 3.7 验证flash内存

 四、总结      


1.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卡读写

2.1 要求

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

具体操作可以查看上篇博客

2.2 实验过程截图

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

 2.3 查看hello.txt

2.4 从SD卡读出

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

2.4.1 修改代码

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

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

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

 2.4.2 输出结果

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

三、写入flash

链接:https://pan.baidu.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值