结贴了,感谢版主提醒。现总结一下:STM32L0X3系列单片机的96位唯一ID读取的基地址是0x1FF80050,分为两个部分来读,即基地址起连续读8字节,最后4个字节则需要偏移20(0x14)字节读取。合起来这12个字节才是我们想要的96位唯一ID码。以下是我用的程序,供大家参考。
uint32_t idAddr[]={
0x1FFFF7AC, /*STM32F0唯一ID起始地址*/
0x1FFFF7E8, /*STM32F1唯一ID起始地址*/
0x1FFF7A10, /*STM32F2唯一ID起始地址*/
0x1FFFF7AC, /*STM32F3唯一ID起始地址*/
0x1FFF7A10, /*STM32F4唯一ID起始地址*/
0x1FF0F420, /*STM32F7唯一ID起始地址*/
0x1FF80050, /*STM32L0唯一ID起始地址0x1FF80050*/
0x1FF80050, /*STM32L1唯一ID起始地址*/
0x1FFF7590, /*STM32L4唯一ID起始地址*/
0x1FF0F420}; /*STM32H7唯一ID起始地址*/
/*获取MCU的唯一ID*/
void GetSTM32MCUID(uint32_t *id,MCUTypedef type)
{
if(id!=NULL)
{
id[0]=*(uint32_t*)(idAddr[type]);
id[1]=*(uint32_t*)(idAddr[type]+4);
if(type==STM32L0_HRI)
{
id[2]=*(uint32_t*)(idAddr[type]+0x14); //STM32L0系列的要最后四个字节要偏20(0x14)字节
}
else
{
id[2]=*(uint32_t*)(idAddr[type]+8);
}
}
}
|