每个STM32有一个独立的ID,这个ID可以用来:
产品唯一的身份标识的作用:
● 用来作为序列号(例如USB字符序列号或者其他的终端应用);
● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性;
● 用来激活带安全机制的自举过程;
以STM32F103CBT6来说,使用四个寄存器来存储这个ID,读取方式为:
void GetChipUniqueID(void)
{ u32 chipUniqueID32[]; chipUniqueID32[] = *(__IO u32*)(0X1FFFF7F2);//ID地址的高32位寄存器地址
chipUniqueID32[] = *(__IO u32*)(0X1FFFF7EE);//ID地址的中32位寄存器地址
chipUniqueID32[] = *(__IO u32*)(0X1FFFF7E8);//ID地址的低32位寄存器地址 printf("此芯片的唯一ID为:%d-%d-%d\r\n",chipUniqueID32[],chipUniqueID32[],chipUniqueID32[]); }
注意:在读取唯一身份识别ID的时候要注意存储方式是小端模式。
读取Flash大小的方式为:
void GetFlashSize(void)
{
u16 Stm32_Flash_Size; Stm32_Flash_Size = *(u16*)(0x1FFFF7E0);//闪存容量寄存器 printf("芯片闪存容量大小为%dK\r\n",Stm32_Flash_Size); }