STM32芯片序列号及获取源代码

  1. STM32每个系列都会有唯一的一个芯片序列号(96位bit):

           STM32F10X 的地址是 0x1FFFF7E8
           STM32F20X 的地址是 0x1FFF7A10
           STM32F30X 的地址是 0x1FFFF7AC
           STM32F40X 的地址是 0x1FFF7A10
           STM32L1XX 的地址是 0x1FF80050
    
  2. 源代码(以 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;
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐