STM32F7xx —— 96位唯一ID
// 配置单片机型号 对外只有这个宏CONFIG_SYSTEM_HARDWARE_TYPE
#define CONFIG_SYSTEM_HARDWARE_TYPE SOC_TYPE_STM32F7// SOC类型
typedef enum
{SOC_TYPE_STM32F0,SOC_TYPE_STM32F1,SOC_TYPE_STM32F2,SOC_TYPE_STM32F3,SOC_TYPE_STM32F4,SOC_TYPE_STM32F7,SOC_TYPE_STM32L0,SOC_TYPE_STM32L1,SOC_TYPE_STM32L4,SOC_TYPE_STM32H7,
} soc_type_t;#define SOC_STM32F0_ID_ADDR 0x1FFFF7AC
#define SOC_STM32F1_ID_ADDR 0x1FFFF7E8
#define SOC_STM32F2_ID_ADDR 0x1FFF7A10
#define SOC_STM32F3_ID_ADDR 0x1FFFF7AC
#define SOC_STM32F4_ID_ADDR 0x1FFF7A10
#define SOC_STM32F7_ID_ADDR 0x1FF0F420
#define SOC_STM32L0_ID_ADDR 0x1FF80050
#define SOC_STM32L1_ID_ADDR 0x1FF80050
#define SOC_STM32L4_ID_ADDR 0x1FFF7590
#define SOC_STM32H7_ID_ADDR 0x1FF0F420typedef struct
{uint8_t type;uint32_t addr;
} soc_id_t;static const soc_id_t soc_id_entries[] =
{{SOC_TYPE_STM32F0, SOC_STM32F0_ID_ADDR},{SOC_TYPE_STM32F1, SOC_STM32F1_ID_ADDR},{SOC_TYPE_STM32F2, SOC_STM32F2_ID_ADDR},{SOC_TYPE_STM32F3, SOC_STM32F3_ID_ADDR},{SOC_TYPE_STM32F4, SOC_STM32F4_ID_ADDR},{SOC_TYPE_STM32F7, SOC_STM32F7_ID_ADDR},{SOC_TYPE_STM32L0, SOC_STM32L0_ID_ADDR},{SOC_TYPE_STM32L1, SOC_STM32L1_ID_ADDR},{SOC_TYPE_STM32L4, SOC_STM32L4_ID_ADDR},{SOC_TYPE_STM32H7, SOC_STM32H7_ID_ADDR},
};void SocIDGet(uint32_t *id, soc_type_t type)
{uint8_t i;for(i = 0; i < sizeof(soc_id_entries) / sizeof(soc_id_entries[0]); ++i){if(type == soc_id_entries[i].type){id[0] = *(uint32_t *)(soc_id_entries[i].addr + 0);id[1] = *(uint32_t *)(soc_id_entries[i].addr + 4);id[2] = *(uint32_t *)(soc_id_entries[i].addr + 8);break;}}
}