目录

  • 一、概述
  • 二、寄存器
  • 三、HAL库函数

一、概述

最近项目上使用STM32的device id来标识每个设备,这里简单记录下STM32的UID。

二、寄存器

芯片的手册,找到UID的地址。以STM32L051为例,如下图:

可以看到UID96位,也就是12字节。

有了具体地址,即可通过直接寻址读取ID。需要注意的是:Bits 95:64的Address offset为0x14。一定不要直接基地址、基地址+4、基地址+8的方式读取。

 #define UID_BASE 0x1FF80050uint32_t UID[3];UID[0] = (uint32_t)(*((uint32_t *)UID_BASE));UID[1] = (uint32_t)(*((uint32_t *)(UID_BASE + 0x04)));UID[2] = (uint32_t)(*((uint32_t *)(UID_BASE + 0x14)));

三、HAL库函数

此外,HAL库也提供了接口函数读取ID。

  uint32_t UID[3];UID[0] = HAL_GetUIDw0();UID[1] = HAL_GetUIDw1();UID[2] = HAL_GetUIDw2();

查看HAL函数,定义如下:

/*** @brief  Returns the first word of the unique device identifier (UID based on 96 bits)* @retval Device identifier*/
uint32_t HAL_GetUIDw0(void)
{return(READ_REG(*((uint32_t *)UID_BASE)));
}/*** @brief  Returns the second word of the unique device identifier (UID based on 96 bits)* @retval Device identifier*/
uint32_t HAL_GetUIDw1(void)
{return(READ_REG(*((uint32_t *)(UID_BASE + 0x04U))));
}/*** @brief  Returns the third word of the unique device identifier (UID based on 96 bits)* @retval Device identifier*/
uint32_t HAL_GetUIDw2(void)
{return(READ_REG(*((uint32_t *)(UID_BASE + 0x14U))));
}

也是用直接寻址读取,只不过是封装了一下。


STM32 量产时自动写入序列号
概念扩展:UUID GUID

STM32唯一序列号UID--HAL_GetUIDw0详解相关推荐

  1. STM32接口FSMC/FMC难点详解

    STM32接口FSMC/FMC难点详解 转载   http://blog.sina.com.cn/s/blog_808bca130102x94k.html STM32F767的FMC将外部存储器划分为 ...

  2. STM32之NVIC的深入详解

    朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统.[转载]STM32之NVIC的深入详解 什么是NVIC?即嵌套向量中断控制器(Nested Vectored Inter ...

  3. 【STM32学习】时钟配置详解

    [STM32学习]时钟配置详解 看懂时钟图 结合代码 外部高速时钟修改 看懂时钟图 在刚开始学习32的时候,并不会在意这些,或者即使看了也看的不是很明白.随着学习的深入,我们发现看门狗.定时器.ADC ...

  4. STM32 USB设备远程唤醒机制详解

    目录 1.USB Resume信号 2.USB远程唤醒的方式 3.J状态和K状态 4.STM32 USB设备远程唤醒机制详解 5.主机对设备远程唤醒功能状态的获取.清除和设置 1.USB Resume ...

  5. STM32最小系统硬件组成详解

    STM32最小系统硬件组成详解 0组成: 电源   复位   时钟    调试接口  启动 1.电源 : 一般3.3V  LDO供电   加多个0.01uf去耦电容   2.复位:有三种复位方式:上电 ...

  6. STM32开发 -- L3GD20H陀螺仪开发详解

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/93894852 之前讲过: MPU6050开发系列 STM32开发 – LIS ...

  7. STM32开发 -- 4G模块开发详解(3)

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/81782682 上面两篇文章,基本上把软硬件部分讲完了.接下来我们就看一下收发 ...

  8. STM32开发 -- 4G模块开发详解(2)

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/81773782 二.软件部分 1.初始化 模块的波特率为115200,8位数据 ...

  9. 【STM32】电容触摸按键控制模块详解(代码、流程图、每行均有注释)

    STM32-电容触摸按键控制模块详解(代码.每行均有注释) 阿汪先生用的开发板是正点原子的战舰板,但本部分代码通用于STM32的各个开发板. 本文是针对正点原子提供的例程的详细补充,重点是扫描触摸按键 ...

  10. STM32定时器---正交编码器模式详解

    编码器分类: 按工作原理:光电式.磁电式和触点电刷式 按码盘的刻孔方式:增量式和绝对式两类 由于博主接触面还不是很广,一共就用过两个种类的编码器,都是属于光电的 差分编码器:一般由8根线连接 信号线分 ...

最新文章

  1. 用Inno Setup来解决.NetFramework安装问题
  2. python包Yellowbrick可视化lasso模型的最佳alpha值及误测误差
  3. Waymo十周年:多尔戈夫讲述从被嘲笑到硕果累累
  4. C51汇编伪指令 CSEG DSEG
  5. 白话数字签名(番外篇)——签名EXE文件(下)
  6. 数论四之综合训练——Magic Pairs,Crime Management,Top Secret,组合数问题
  7. 从AIDL一窥Android Binder机制
  8. php的date比较时间差,php date 时间差
  9. java培训学费_太原java培训班价格表
  10. 使用Struts2框架开发租房系统(8)
  11. 21天学通Java学习笔记-Day03
  12. 红米note5系统Android11,红米Note5-MIUI11 开发版|超多功能|Xposed|ROOT|桌面布局-刷机之家...
  13. html如何格式化时间,js 日期时间的格式化
  14. 秀米怎么添加word附件
  15. Towards Playing Full MOBA Games with Deep Reinforcement Learning翻译
  16. 安规X电容和Y电容的作用
  17. 端午节,我们失去的太多了
  18. 在ROIC的框架下精读巴菲特的新作
  19. 未来创业的四种商业模式
  20. 分页器的使用-2 手写一个分页器

热门文章

  1. 【Java】接口.案例.打印机
  2. MATLAB彩色图片的处理
  3. 【非原创 遥感卫星信息整理汇总-02】国外遥感卫星信息汇总
  4. rook 排错记录 + Orphaned pod found kube-controller-manager的日志输出
  5. 云服务器公网架设传奇,传奇私服服务器端在云服务器架设,全版本通用的传奇游戏架设教程...
  6. jquery-实现的添加个人信息加验证,附完全的注释,相信大家可以看懂
  7. C语言+EasyX库实现--绘制彩虹
  8. 蓝桥杯学习——递归问题(上楼梯)
  9. Windows Server 2012 R2 更改系统语言
  10. 彻底弄懂JS的事件冒泡和事件捕获