linux读取stm32唯一识别码,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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值