96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。
在HAL库中有现成API接口可以调用。
以下为STM32F411示例代码:
/**
* @brief Returns first word of the unique device identifier (UID based on 96 bits)
* @retval Device identifier
*/
uint32_t HAL_GetUIDw0(void)
{
return (READ_REG(*((uint32_t *)UID_BASE)));
}
/**
* @brief Returns second word of the unique device identifier (UID based on 96 bits)
* @retval Device identifier
*/
uint32_t HAL_GetUIDw1(void)
{
return (READ_REG(*((uint32_t *)(UID_BASE + 4U))));
}
/**
* @brief Returns third word of the unique device identifier (UID based on 96 bits)
* @retval Device identifier
*/
uint32_t HAL_GetUIDw2(void)
{
return (READ_REG(*((uint32_t *)(UID_BASE + 8U))));
}
三个API接口分别获取三个4字节ID,HAL_GetUIDw0(void)/HAL_GetUIDw1(void)/HAL_GetUIDw2(void);
开始地址在头文件中有宏定义:
#define UID_BASE 0x1FFF7A10UL /*!< Unique device ID register base address */
直接调用HAL库简单方便:
CPU_ID[0] = HAL_GetUIDw0();
CPU_ID[1] = HAL_GetUIDw1();
CPU_ID[2] = HAL_GetUIDw2();