打印
[STM32F3]

在 STM32F303的flash中能否用一个快做数据的永久存储空间。

[复制链接]
338|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Treasure101|  楼主 | 2025-3-28 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在 STM32F303的flash中能否用一个快做数据的永久存储空间。


TRM 提到了 Flash Map,而 HAL 似乎有一些 API能用。

但是不知道哪些函数能用。

有没有例程呢?

另外,是否有 HAL API 来获取部件的 UID??

使用特权

评论回复
沙发
梅花香自123| | 2025-3-31 22:38 | 只看该作者
Flash 用于存储程序代码,但也可以用于保存一些应用数据

使用特权

评论回复
板凳
公羊子丹| | 2025-4-1 07:34 | 只看该作者
可以的,STM32F303 的 Flash 可以作为数据存储,你可以保留 Flash 的 最后一页(比如 0x0801F800)来存储数据。

使用特权

评论回复
地板
周半梅| | 2025-4-1 07:35 | 只看该作者
HAL 库确实有相关 API,你可以用 HAL_FLASH_Program() 来写入数据,用 HAL_FLASHEx_Erase() 来擦除扇区。

使用特权

评论回复
5
帛灿灿| | 2025-4-1 07:36 | 只看该作者
关于获取 UID,HAL 里有现成的 API,你可以直接调用:

uint32_t uid[3];
uid[0] = HAL_GetUIDw0();
uid[1] = HAL_GetUIDw1();
uid[2] = HAL_GetUIDw2();

使用特权

评论回复
6
童雨竹| | 2025-4-1 07:37 | 只看该作者
注意 Flash 的擦除和写入限制,写 Flash 时只能 从 1 变成 0,如果要改成 1,必须先擦除整个页。

使用特权

评论回复
7
万图| | 2025-4-1 07:38 | 只看该作者
如果数据经常更新,建议用 EEPROM 仿真,STM32F3 没有内置 EEPROM,可以用 Flash 的两页轮流存储,实现 EEPROM 的功能。

使用特权

评论回复
8
Wordsworth| | 2025-4-1 07:39 | 只看该作者
你可以参考 STM32 官方的 EEPROM 仿真库,ST 提供了一些 AN2594 相关的资料,专门讲如何用 Flash 模拟 EEPROM。

使用特权

评论回复
9
Bblythe| | 2025-4-1 07:39 | 只看该作者
示例代码可以看看 STM32CubeF3,STM32Cube\Repository\STM32Cube_FW_F3\Projects\ 里应该有 Flash 相关的 Demo。

使用特权

评论回复
10
Pulitzer| | 2025-4-1 07:40 | 只看该作者
如果数据不经常更改,可以直接用 Flash 末尾存储配置数据,写入时 HAL_FLASH_Program(),读取时 *(volatile uint32_t*)address 即可。

使用特权

评论回复
11
Uriah| | 2025-4-1 07:41 | 只看该作者
注意 Flash 的耐久度,STM32F3 的 Flash 擦写寿命通常是 1 万次,如果频繁写入,可能会导致 Flash 过早损坏。

使用特权

评论回复
12
Clyde011| | 2025-4-1 07:42 | 只看该作者
如果你的数据存储需求较大,可以考虑外部 EEPROM 或 FRAM,这样不用担心 Flash 擦除次数的问题。

使用特权

评论回复
13
powerantone| | 2025-4-1 12:28 | 只看该作者
STM32F303 的 Flash 存储器是一种非易失性存储器,这意味着当设备断电时,存储在 Flash 中的数据不会丢失。因此,它可以用作数据的永久存储空间。

使用特权

评论回复
14
stormwind123| | 2025-4-1 12:29 | 只看该作者
每个 STM32 芯片都有一个唯一的标识符(UID),它通常用于设备认证、加密或其他需要唯一性识别的应用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

9

帖子

0

粉丝