STM32HAL内部识别码,全球唯一识别码,UID读取

HAL库好就好在都封装好了,我们只需要调取API都搞定了。

  uint32_t UIDw[3];
  uint32_t HalVersion  = HAL_GetHalVersion();
  uint32_t REVID       = HAL_GetREVID();
  uint32_t DEVID       = HAL_GetDEVID();
  UIDw[0]              = HAL_GetUIDw0();
  UIDw[1]              = HAL_GetUIDw1();
  UIDw[2]              = HAL_GetUIDw2();

在文件stm32l1xx_hal.c可找到需要的函数。

/**
  * @brief Return the HAL revision
  * @retval version: 0xXYZR (8bits for each decimal, R for RC)
  */
uint32_t HAL_GetHalVersion(void)
{
  return __STM32L1xx_HAL_VERSION;
}

以上图为例,__STM32L1xx_HAL_VERSION是宏定义

/**
 * @brief STM32L1xx HAL Driver version number
   */
#define __STM32L1xx_HAL_VERSION_MAIN   (0x01) /*!< [31:24] main version */
#define __STM32L1xx_HAL_VERSION_SUB1   (0x04) /*!< [23:16] sub1 version */
#define __STM32L1xx_HAL_VERSION_SUB2   (0x00) /*!< [15:8]  sub2 version */
#define __STM32L1xx_HAL_VERSION_RC     (0x00) /*!< [7:0]  release candidate */
#define __STM32L1xx_HAL_VERSION         ((__STM32L1xx_HAL_VERSION_MAIN << 24)\
                                        |(__STM32L1xx_HAL_VERSION_SUB1 << 16)\
                                        |(__STM32L1xx_HAL_VERSION_SUB2 << 8 )\
                                        |(__STM32L1xx_HAL_VERSION_RC))

好像这个没什么用,咱们改这个没意义。那我们直接看UID。

/**
  * @brief  Return the first word of the unique device identifier (UID based on 96 bits)
  * @retval Device identifier 31:0 bits
  */
uint32_t HAL_GetUIDw0(void)
{
  return(READ_REG(*((uint32_t *)UID_BASE)));
}

UID_BASE是地址

#define UID_BASE              (0x1FF80050UL)                  /*!< Unique device ID register base address for Cat.1 and Cat.2 devices */

这几个函数实际上就是读地址内的数据。实验完毕。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值