STM32芯片序列号及获取源代码
-
STM32每个系列都会有唯一的一个芯片序列号(96位bit):
STM32F10X 的地址是 0x1FFFF7E8 STM32F20X 的地址是 0x1FFF7A10 STM32F30X 的地址是 0x1FFFF7AC STM32F40X 的地址是 0x1FFF7A10 STM32L1XX 的地址是 0x1FF80050
-
源代码(以 STM32F40X为例)
/********************************************************************************************************
*
*设备电子签名,唯一设备 ID 寄存器
*out: 输出缓冲区
*输出缓冲区的大小至少为25字节,字符串末尾\0
***********************************************************************************************************/
char bf_GetUid(char *out, uint16_t outsize)
{
const uint8_t *uid = ( uint8_t* )( 0x1FFF7A10 );
char len;
if(out == 0 || outsize < 25)
return 0;
len = snprintf(out, outsize,
"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
uid[0], uid[1], uid[2], uid[3],
uid[4], uid[5], uid[6], uid[7],
uid[8], uid[9], uid[10],uid[11]);
return len - 1;
}