STM32唯一ID(Unique Device ID)的读取方法
每一个STM32微控制器都自带一个96位的唯一ID,也就是Unique Device ID或称为UID,这个唯一ID在任何情况下都是唯一的且不允许修改。
在开发过程中,可能需要用到这个UID,比如博主最近在研究的UAVCAN中就用到了UID。那么,这96位ID怎么读取呢?可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。这里需要注意的是UID的首地址问题,因为不同型号的STM32芯片的首地址可能不同。在网上搜索后发现,STM32F103系列MCU的UID首地址是0x1ffff7e8,而STM32F207/STM32F40X系列MCU的UID首地址是0x1fff7a10。由于博主用的芯片型号是STM32F407,这里就贴出实测通过的STM32F407的UID读取代码,是以字节为单位读取的。STM32F103系列只需要把首地址修改为0x1ffff7e8即可。
下其他系列的芯片的UID首地址,F3系列的UID是0x1ffff7ac,F7系列的UID是0x1ff0f420
#define STM32_UNIQUE_ID_SIZE 12
u8 stm32_uniqueId[STM32_UNIQUE_ID_SIZE] = {0};
u8* readStm32UniqueID(void)
{ vu8* addr = (vu8*)(0x1fff7a10); //UID首地址for(u8 i = 0; i < STM32_UNIQUE_ID_SIZE; ++i){u8 id= *addr;stm32_uniqueId[i] = id;++addr;}return stm32_uniqueId;
}
/*** @brief Returns 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)));
}/*** This function will get STM32 uid.*/
void rt_get_cpu_id(rt_uint32_t cpuid[3])
{/* get stm32 uid */cpuid[0] = HAL_GetUIDw0();cpuid[1] = HAL_GetUIDw1();cpuid[2] = HAL_GetUIDw2();
}
void XXX(void)
{uint8_t cpuid[12]={"0000000000"};rt_get_cpu_id((uint32_t*)cpuid);
}
STM32唯一ID(Unique Device ID)的读取方法相关推荐
- 读取STM32F207/40x的CPU唯一ID(Unique Device ID)号方法
在网上看到有很多的读取STM32F103系列MCU的CPU ID号,但是拿来在STM32F207上面是读取不到ID号的(按照STM32F103的地址读出来都是0XFFFFFFFF),原因是STM32F ...
- STM32的全系列MCU的ID号的地址及读取方法
在STM32的全系列MCU中均有一个96位的唯一设备标识符.在ST的相关资料中,对其功能的描述有3各方面: 用作序列号(例如 USB 字符串序列号或其它终端应用程序) 在对内部 Flash 进行编程前 ...
- 关于android设备唯一区分device id的取得
2019独角兽企业重金招聘Python工程师标准>>> 有些apk为了区分唯一设备,需要用到一个device id. 1. 取得设备的MAC address 如果用户没有通过w ...
- 是否有唯一的 Android 设备 ID?
问: Android 设备是否有唯一 ID,如果有,使用 Java 访问它的简单方法是什么? 答1: 保持自己快人一步,享受全网独家提供的一站式外包任务.远程工作.创意产品订阅服务–huntsbot. ...
- 是否有唯一的Android设备ID?
Android设备是否具有唯一的ID,如果是,则使用Java访问它的简单方法是什么? #1楼 有许多不同的方法可以解决这些ANDROID_ID问题(有时可能为null或特定模型的设备总是返回相同的ID ...
- 浅谈 iOS Device ID 的修改
Dark side of the Force 最近有一篇 文章 介绍了如何实现 AppStore App 自动下载,笔者看后收获良多.不过文中只介绍了如何去模拟用户的操作来完成下载,并没有涉及抹机.I ...
- android 有哪些设备id,Android之设备ID(Device ID)
有时,Android应用程序开发过程中需要得到基于Android智能手机设备的唯一ID .特别是在需要唯一标识设备注册的情况下,Device ID就非常有用.今天我就整理一下Device ID有哪些方 ...
- Android之设备ID(Device ID)
有时,Android应用程序开发过程中需要得到基于Android智能手机设备的唯一ID .特别是在需要唯一标识设备注册的情况下,Device ID就非常有用.今天我就整理一下Device ID有哪些方 ...
- 蓝牙DID协议讲解 Bluetooth Device ID
零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)DID(Device ID)协议讲解 btsnoop以及流程在资料中的......\STM32_UBUNTU_BLUETOOTH\2- ...
最新文章
- 关于mtl_transactions_interface表序列
- 计算机原理解读图,详细讲解仪器仪表测试系统,结构原理图拿走不谢
- 智慧城市需要百姓智慧
- 6、HIVE JDBC开发、UDF、体系结构、Thrift服务器、Driver、元数据库Metastore、数据库连接模式、单/多用户模式、远程服务模式、Hive技术原理解析、优化等(整理的笔记)
- 无法访问 gcr.io 的解决方案
- ABP入门系列(21)——切换MySQL数据库
- C/C++ OpenCV之Scharr边缘检测
- pid和linux的关系,linux – bash pid和$$之间的区别
- linux 用户管理和帮助命令
- 一加7pro运动计步功能_系统:一加推送一加7Pro的氢OS9.5.9系统版本更新,继续优化屏幕...
- 字符串格式参数的日期比较函数
- 突袭HTML5之SVG 2D入门12 - SVG DOM
- 微信小程序多人开发-版本管理
- php毕设周记_(完整版)毕设周记
- 各省农村人均受教育年限及村委会个数(2011-2019年)
- MySQL安装失败的原因
- Activities介绍
- matlab去除摩尔纹,索尼ILCE-7RM2测评——理论画质篇
- 金融区块链标准规范解读
- bzip2格式文件解压
热门文章
- Day01-C#学习:05、转义符号及算术运算符
- “自习室”--随想项目
- 常用文件存储系统概述
- 未备案域名使用Cloudflare进行301重定向
- mysql 删除一个约束条件_MySQL 字段增删改查 和 约束条件
- 基于python实现淘宝协议秒杀程序
- Skywalking 扩展:TID自定义规则
- 培训经历和培训现状,供开发人员参考
- Essential Grammar in Use(Third Edition)--Present perfect Unit17
- input的type属性和textarea标签