每個STM32有一個獨立的ID,這個ID可以用來:
產品唯一的身份標識的作用:
● 用來作為序列號(例如USB字符序列號或者其他的終端應用);
● 用來作為密碼,在編寫閃存時,將此唯一標識與軟件加解密算法結合使用,提高代碼在閃存存儲器內的安全性;
● 用來激活帶安全機制的自舉過程;
以STM32F103CBT6來說,使用四個寄存器來存儲這個ID,讀取方式為:
void GetChipUniqueID(void) { u32 chipUniqueID32[3]; chipUniqueID32[0] = *(__IO u32*)(0X1FFFF7F2);//ID地址的高32位寄存器地址 chipUniqueID32[1] = *(__IO u32*)(0X1FFFF7EE);//ID地址的中32位寄存器地址 chipUniqueID32[2] = *(__IO u32*)(0X1FFFF7E8);//ID地址的低32位寄存器地址 printf("此芯片的唯一ID為:%d-%d-%d\r\n",chipUniqueID32[0],chipUniqueID32[2],chipUniqueID32[2]); }
注意:在讀取唯一身份識別ID的時候要注意存儲方式是小端模式。
讀取Flash大小的方式為:
void GetFlashSize(void) { u16 Stm32_Flash_Size; Stm32_Flash_Size = *(u16*)(0x1FFFF7E0);//閃存容量寄存器 printf("芯片閃存容量大小為%dK\r\n",Stm32_Flash_Size); }