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 */
这几个函数实际上就是读地址内的数据。实验完毕。