使用STM32进行flash的读写

系列文章目录

一、创建STM32CUBEMX工程

芯片选择103C8
在这里插入图片描述
配置定时器
警告不管
在这里插入图片描述
打开外部时钟
在这里插入图片描述
配置时钟
在这里插入图片描述
将PC13设置为output
在这里插入图片描述
设置堆栈大小为4k,生成文件
在这里插入图片描述

二、keil5中的配置

将flash.c和flash.h添加到工程中
添加flash.c的时候选第二行
在这里插入图片描述
在main.c中添加flash.h
在这里插入图片描述
在main.c中分别添加如下代码

uint8_t FlashWBuff [255];
uint8_t FlashRBuff [255];
uint8_t i;
	uint8_t FlashTest[] = "Hello This is ZhangShiSan Flash Test DEMO";

在这里插入图片描述
在这里插入图片描述
点开魔法棒
在这里插入图片描述
在这里插入图片描述
将程序下载到硬件中
在这里插入图片描述
进入dubug
在这里插入图片描述
在view下打开memory1窗口
在这里插入图片描述
打开watch1窗口
在这里插入图片描述
开启变量自动更新Periodic Windows Update
在这里插入图片描述
将变量FlashWBuff 和 FlashRBuff加入到 Watch1
在这里插入图片描述
在memory1中输入要观察的地址0x800c000
在这里插入图片描述
运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样
在这里插入图片描述
定义好的句子写到了地址0x0800c000中了
在这里插入图片描述

三、参考

https://blog.csdn.net/m0_58414679/article/details/122220799?spm=1001.2014.3001.5501
https://blog.csdn.net/weixin_52288941/article/details/122147152?spm=1001.2014.3001.5501

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于STM32G070微控制器,您可以使用它的FLASH存储器进行读写操作。以下是一个简单的示例代码,用于在STM32G070上进行FLASH读写操作。 首先,您需要包含适当的头文件和定义相关的宏: ```c #include "stm32g0xx_hal.h" #define FLASH_START_ADDR 0x08000000 // Flash起始地址 #define FLASH_PAGE_SIZE 2048 // Flash页大小 ``` 然后,您可以编写两个函数来执行读写操作。一个是用于从FLASH中读取数据的函数,另一个是用于将数据写入FLASH的函数: ```c // 从FLASH中读取数据 void readFromFlash(uint32_t address, uint32_t *data, uint32_t count) { for (uint32_t i = 0; i < count; i++) { data[i] = *(volatile uint32_t *)(address + (4 * i)); } } // 将数据写入FLASH HAL_StatusTypeDef writeToFlash(uint32_t address, uint32_t *data, uint32_t count) { FLASH_EraseInitTypeDef eraseInitStruct; uint32_t PageError = 0; // 解锁FLASH HAL_FLASH_Unlock(); // 擦除指定地址的FLASH页 eraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; eraseInitStruct.PageAddress = address; eraseInitStruct.NbPages = 1; if (HAL_FLASHEx_Erase(&eraseInitStruct, &PageError) != HAL_OK) { return HAL_ERROR; } // 写入数据到FLASH for (uint32_t i = 0; i < count; i++) { if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address + (4 * i), data[i]) != HAL_OK) { return HAL_ERROR; } } // 锁定FLASH HAL_FLASH_Lock(); return HAL_OK; } ``` 请注意,这只是一个简单的示例代码,并且没有包含错误处理和其他边界条件。在实际使用中,您可能需要添加适当的错误处理和边界检查。 希望这能帮助到您开始在STM32G070上进行FLASH读写操作。如有任何进一步的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值