前言
本例是以读写C8T6最小系统板的Flash,了解其Flash地址空间的数据读取。 stm32f103c8t6只有20KB 内存(RAM)供程序代码和数组变量存放,因此,针对内部Flash的总计64KB存储空间(地址从0x08000000开始),运行一次写入8KB数据,总计复位运行代码4次,将32KB数据写入Flash。并验证写入数据的正确性和读写速率。
一、配置cubemx工程
滴答定时器的配置
打开外部时钟 配置时钟树
基本配置完成 设置堆栈大小
然后生成代码即可
二、使用Keil5修改代码
添加flash.c文件 并在工程路径中添加其头文件所在路径
在main.c文件中添加flash.h 头文件 并定义两个变量数组
在main 函数中添加以下代码
uint8_t i;
uint8_t FlashTest[] = "Hello This is a Flash Test DEMO";
HAL_Init();
SystemClock_Config();
FlashWriteBuff( DEVICE_INFO_ADDRESS, FlashTest,sizeof(FlashTest) );
for(i=0;i<255;i++)
FlashWBuff[i] = i;
FlashWriteBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest), FlashWBuff,255 );
FlashReadBuff( DEVICE_INFO_ADDRESS + sizeof(FlashTest),FlashRBuff,255 );
MX_GPIO_Init();
while (1)
{
}
编译完成后,开始调试程序
三、调试
进入调试界面,添加内存观察窗口
添加变量观测窗口,并添加FlashWBuff ,FlashRBuff 变量
并勾选窗口自动更新
F5,全速运行程序,可以看到数组FlashRBuff中内容与数组FlashWBuff中内容一样了:
观察内存窗口
我们尝试修改一下代码,多写几次
参考: STM32 进阶教程 13 – FLASH的读写操作
STM32操作访问flash,包括写入数据到flash和从flash读取数据
|