STM32唯一序列号UID--HAL_GetUIDw0详解
目录
- 一、概述
- 二、寄存器
- 三、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详解相关推荐
- STM32接口FSMC/FMC难点详解
STM32接口FSMC/FMC难点详解 转载 http://blog.sina.com.cn/s/blog_808bca130102x94k.html STM32F767的FMC将外部存储器划分为 ...
- STM32之NVIC的深入详解
朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统.[转载]STM32之NVIC的深入详解 什么是NVIC?即嵌套向量中断控制器(Nested Vectored Inter ...
- 【STM32学习】时钟配置详解
[STM32学习]时钟配置详解 看懂时钟图 结合代码 外部高速时钟修改 看懂时钟图 在刚开始学习32的时候,并不会在意这些,或者即使看了也看的不是很明白.随着学习的深入,我们发现看门狗.定时器.ADC ...
- STM32 USB设备远程唤醒机制详解
目录 1.USB Resume信号 2.USB远程唤醒的方式 3.J状态和K状态 4.STM32 USB设备远程唤醒机制详解 5.主机对设备远程唤醒功能状态的获取.清除和设置 1.USB Resume ...
- STM32最小系统硬件组成详解
STM32最小系统硬件组成详解 0组成: 电源 复位 时钟 调试接口 启动 1.电源 : 一般3.3V LDO供电 加多个0.01uf去耦电容 2.复位:有三种复位方式:上电 ...
- STM32开发 -- L3GD20H陀螺仪开发详解
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/93894852 之前讲过: MPU6050开发系列 STM32开发 – LIS ...
- STM32开发 -- 4G模块开发详解(3)
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/81782682 上面两篇文章,基本上把软硬件部分讲完了.接下来我们就看一下收发 ...
- STM32开发 -- 4G模块开发详解(2)
如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/81773782 二.软件部分 1.初始化 模块的波特率为115200,8位数据 ...
- 【STM32】电容触摸按键控制模块详解(代码、流程图、每行均有注释)
STM32-电容触摸按键控制模块详解(代码.每行均有注释) 阿汪先生用的开发板是正点原子的战舰板,但本部分代码通用于STM32的各个开发板. 本文是针对正点原子提供的例程的详细补充,重点是扫描触摸按键 ...
- STM32定时器---正交编码器模式详解
编码器分类: 按工作原理:光电式.磁电式和触点电刷式 按码盘的刻孔方式:增量式和绝对式两类 由于博主接触面还不是很广,一共就用过两个种类的编码器,都是属于光电的 差分编码器:一般由8根线连接 信号线分 ...
最新文章
- 用Inno Setup来解决.NetFramework安装问题
- python包Yellowbrick可视化lasso模型的最佳alpha值及误测误差
- Waymo十周年:多尔戈夫讲述从被嘲笑到硕果累累
- C51汇编伪指令 CSEG DSEG
- 白话数字签名(番外篇)——签名EXE文件(下)
- 数论四之综合训练——Magic Pairs,Crime Management,Top Secret,组合数问题
- 从AIDL一窥Android Binder机制
- php的date比较时间差,php date 时间差
- java培训学费_太原java培训班价格表
- 使用Struts2框架开发租房系统(8)
- 21天学通Java学习笔记-Day03
- 红米note5系统Android11,红米Note5-MIUI11 开发版|超多功能|Xposed|ROOT|桌面布局-刷机之家...
- html如何格式化时间,js 日期时间的格式化
- 秀米怎么添加word附件
- Towards Playing Full MOBA Games with Deep Reinforcement Learning翻译
- 安规X电容和Y电容的作用
- 端午节,我们失去的太多了
- 在ROIC的框架下精读巴菲特的新作
- 未来创业的四种商业模式
- 分页器的使用-2 手写一个分页器
热门文章
- 【Java】接口.案例.打印机
- MATLAB彩色图片的处理
- 【非原创 遥感卫星信息整理汇总-02】国外遥感卫星信息汇总
- rook 排错记录 + Orphaned pod found kube-controller-manager的日志输出
- 云服务器公网架设传奇,传奇私服服务器端在云服务器架设,全版本通用的传奇游戏架设教程...
- jquery-实现的添加个人信息加验证,附完全的注释,相信大家可以看懂
- C语言+EasyX库实现--绘制彩虹
- 蓝桥杯学习——递归问题(上楼梯)
- Windows Server 2012 R2 更改系统语言
- 彻底弄懂JS的事件冒泡和事件捕获