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;
}
文章提供了STM32系列芯片的序列号地址以及一个STM32F40X的源代码示例,该代码用于读取并格式化输出芯片的96位唯一设备ID。函数`bf_GetUid`从地址0x1FFF7A10读取数据并转化为12个16进制数字的字符串。

1120

被折叠的 条评论
为什么被折叠?



