stm32芯片的flash大小是可以直接在内存中读取到的。
stm32F1系列芯片读取flash大小的方法为:
*(__IO uint16_t *)(0x1FFFF7E0);//读取到的单位为Kb,如读取到0x0800,则芯片的flash空间为128Kb
读取芯片96位唯一ID(96-bit unique ID)方法为每次读取32位,分三次读取:
*(__IO uint32_t *)(0x1FFFF7E8);
*(__IO uint32_t *)(0x1FFFF7EC);
*(__IO uint32_t *)(0x1FFFF7F0);
stm32F4系列芯片读取flash大小的办法为:
*(__IO uint16_t *)(0x1FFF7A22);//读取到的单位为Kb,如读取到0x0800,则芯片的flash空间为128Kb
读取芯片96位唯一ID(96-bit unique ID)方法为每次读取32位,分三次读取:
*(__IO uint32_t *)(0x1FFF7A10);
*(__IO uint32_t *)(0x1FFF7A14);
*(__IO uint32_t *)(0x1FFF7A18);
获取芯片代码方法为:
(*(__IO uint32_t *)(0xE0042000) & 0x00000FFF)//获取像ST-LINK Utility上面的Device ID一样的设备号
注意:此地址的内容只能在SWD模式下进行读取,正常程序运行状态下是无法读取该地址内容的。而且读取时只可使用32位的读取方式读取。