STM32F103RCT6的FLASH读写操作

76 篇文章 ¥59.90 ¥99.00
本文介绍了如何进行STM32F103RCT6的FLASH读写操作,包括解锁FLASH、初始化编程模式、写入和读取数据的步骤,并提供了源代码示例。在实际应用中,还强调了异常处理和错误检测的重要性。

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

STM32F103RCT6是一款常用的32位微控制器,它具有内置的FLASH存储器,可以用于存储程序代码和数据。在本文中,我们将详细介绍如何进行STM32F103RCT6的FLASH读写操作,并提供相应的源代码。

首先,我们需要包含适当的头文件和定义相关的宏和变量,以便在代码中使用FLASH API。以下是一个基本的示例:

#include "stm32f103xx.h"

#define FLASH_START_ADDRESS ((uint32_t
### STM32F103RCT6 Flash读写操作 STM32F103RCT6FLASH 存储器支持多种类型的编程和擦除操作,包括字节、半字以及全页编程。为了执行这些操作,需要遵循特定的序列来解锁 FLASH 控制寄存器并配置相应的参数。 #### 解锁 FLASH 访问权限 在进行任何 FLASH 编程之前,必须先解锁访问权限: ```c // Unlock the Flash to enable the flash control register access HAL_FLASH_Unlock(); ``` #### 设置 FLASH 寄存器 接下来设置必要的 FLASH 寄存器以准备编程或擦除命令: ```c // Fill EraseInit structure: FLASH_EraseInitStruct.TypeErase = TYPEERASE_PAGES; FLASH_EraseInitStruct.PageAddress = StartPage_Address; FLASH_EraseInitStruct.NbPages = Number_of_Pages_to_erase; if (HAL_FLASHEx_Erase(&FLASH_EraseInitStruct, &PAGEError) != HAL_OK) { // Error occurred while page erase. } ``` #### 执行页面擦除 上述代码会初始化一个结构体 `FLASH_EraseInitStruct` 来指定要擦除的页面范围,并调用函数 `HAL_FLASHEx_Erase()` 实际执行擦除过程[^1]。 #### 数据编程到 FLASH 中 一旦页面被清空,则可以通过下面的方式向其中写入新数据: ```c uint32_t address = Address_in_FLASH_memory; for(i=0 ; i<Size_of_data ;i+=4){ if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD,address,*((uint32_t*)data+i))!= HAL_OK){ // An error occurred during programming process } address += 4; } ``` 这段循环语句展示了如何逐个单词(即每次四个字节)地将数据写入到指定位置处的 FLASH 地址上。 #### 锁定 FLASH 配置防止意外修改 完成所有所需的操作之后应当重新锁定 FLASH 控制寄存器以防后续误操作引起的数据损坏: ```c // Lock the Flash to disable the flash control register access HAL_FLASH_Lock(); ``` 通过以上步骤就可以实现对 STM32F103RCT6 内部 FLASH 进行安全可靠的读取与写入了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值