STM32F7xx —— 96位唯一ID

                           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   0x1FF0F420

typedef 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;
    }
  }
}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值