如何在代码本身中找出闪存的大小?

Posted

技术标签:

【中文标题】如何在代码本身中找出闪存的大小?【英文标题】:How do I find out the size of the flash memory in the code itself? 【发布时间】:2021-07-29 13:14:47 【问题描述】:

我想在代码本身中获取闪存的限制地址,或者至少是这个闪存的大小。

我在stm32f302xc.h文件中只找到了flash的起始地址,但没有找到结束地址。

/** @addtogroup Peripheral_memory_map
  * @
  */

#define FLASH_BASE            0x08000000UL /*!< FLASH base address in the alias region */
#define SRAM_BASE             0x20000000UL /*!< SRAM base address in the alias region */
#define PERIPH_BASE           0x40000000UL /*!< Peripheral base address in the alias region */
#define SRAM_BB_BASE          0x22000000UL /*!< SRAM base address in the bit-band region */
#define PERIPH_BB_BASE        0x42000000UL /*!< Peripheral base address in the bit-band region */

什么定义对此负责,谢谢。

【问题讨论】:

【参考方案1】:

参考手册RM0366 在29.2 内存大小数据寄存器部分中描述了您想要的内容。

ST 提供了这种功能,但由于某种原因,它们并不总是提供一种在标题中访问它的简单方法。

这个寄存器的地址是FLASHSIZE_BASE。您必须在运行时阅读它,例如:

uint16_t flash_size_kb = *(const uint16_t*)FLASHSIZE_BASE;

【讨论】:

以上是关于如何在代码本身中找出闪存的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何将动态加载的图像调整为闪存(as3)

GCC - 如何停止 malloc 被链接?

大量的读/写会使闪存本身恶化吗?

如何在 DB2 中找出当前事务日志的大小?

如何在 tkinter 中找出当前小部件的大小?

如何在不更改字体本身的情况下更改 uilabel 的字体大小?