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

 

 

 

 

 

 

 

Version: 2.12.0 (2019-07-17) Keil.STM32F7xx_DFP.2.12.0.pack Download Updated Pack to include subset of STM32Cube_FW_F7 Firmware Package version V1.15.0 using HAL Drivers V1.2.7 Added support for Low Level (LL) drivers. Corrected RTE_Device.h file (I2C3_SDA) Corrected condition for selecting HAL RCC MX_Device_h.ftl: Updated parsing of USART virtual mode Updated generation of macros: Added handling for '(' and ')' symbols Corrected launching STM32CubeMX via "play" button for existing projects overwrites with a new STM32CubeMX project file instead of loading existing. Updated Board Examples: graphics examples use Segger emWin version 5.50.0. examples enable Event Recorder in debug targets Updated LCDConf.c (ready for GUI_USE_ARGD = 1) CMSIS-Driver: CAN: Corrected SetBitrate function to leave Silent and Loopback mode as they were. Corrected SetMode function to clear Silent and Loopback mode when NORMAL mode is activated. Corrected MessageSend function to only access required data for sending. EMAC: Corrected __MEMORY_AT(x) define to be compliant with Arm Compiler 6. Corrected: ETH DMA initialization moved to enable of MAC transmitter or receiver solving netInitialize/netUnnitialize/netInitialize sequence. I2C: Corrected transfers for data sizes greater than 255 (Complete Reload handling). Corrected I2C_SlaveReceive functionality. Corrected code alignment. MCI: Added data cache handling. USART: Added check for valid pointer to USART_PIN prior to use. Corrected POWER_OFF sequence. DMA is DeInitialized after it is aborted. USB Device: Updated USBD_EndpointConfigure function to check that maximum packet size requested fits into configured FIFO (compile time configured). I/O output speed is configurable SPI: Updated SPI_TRANSFER_INFO structure - tx_buf type changed from uint8_t * to const uint8_t *. Added check for valid pointer to SPI_PIN prior to use.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值