相关疑难解决方法(0)

在Flash中为用户数据分配内存(STM32F4 HAL)

我正在尝试使用STM32F405的内部闪存来存储一堆用户可设置的字节,这些字节在重新启动后仍然存在.

我正在使用:

uint8_t userConfig[64] __attribute__((at(0x0800C000)));
Run Code Online (Sandbox Code Playgroud)

为我想要存储的数据分配内存.

当程序启动时,我检查第一个字节是否设置为0x42,如果没有,我使用以下方法设置:

HAL_FLASH_Unlock();
HAL_FLASH_Program(TYPEPROGRAM_BYTE, &userConfig[0], 0x42);
HAL_FLASH_Lock();
Run Code Online (Sandbox Code Playgroud)

之后,我检查了价值userConfig[0],我看到0x42......太棒了!

然而,当我点击重置时,再次查看该位置,它0x42不再是......

知道我哪里错了吗?我也尝试过:

#pragma location = 0x0800C00
volatile const uint8_t userConfig[64]
Run Code Online (Sandbox Code Playgroud)

但我得到了相同的结果..

microcontroller stm32 flash-memory stm32f4discovery

12
推荐指数
1
解决办法
2万
查看次数

如何在STM32F4,Cortex M4上写入/读取FLASH

我想写一个变量,例如一个数字为5的整数到FLASH,然后在电源消失后再次打开设备读取它.

我已经知道为了写东西我首先需要擦除页面然后写.

在手册中它说:

  1. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY1 = 0x0819 2A3B
  2. 在Flash选项密钥寄存器(FLASH_OPTKEYR)中写入OPTKEY2 = 0x4C5D 6E7F

我该如何执行此任务?

扇区0的块地址从0x0800 0000到0x0800 3FFF,这是我想写的地方.

这里是手册的链接,第71页:STM32手册

c flash-memory mbed stm32f4

8
推荐指数
1
解决办法
2万
查看次数