每一个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)的读取方法相关推荐

  1. 读取STM32F207/40x的CPU唯一ID(Unique Device ID)号方法

    在网上看到有很多的读取STM32F103系列MCU的CPU ID号,但是拿来在STM32F207上面是读取不到ID号的(按照STM32F103的地址读出来都是0XFFFFFFFF),原因是STM32F ...

  2. STM32的全系列MCU的ID号的地址及读取方法

    在STM32的全系列MCU中均有一个96位的唯一设备标识符.在ST的相关资料中,对其功能的描述有3各方面: 用作序列号(例如 USB 字符串序列号或其它终端应用程序) 在对内部 Flash 进行编程前 ...

  3. 关于android设备唯一区分device id的取得

    2019独角兽企业重金招聘Python工程师标准>>> 有些apk为了区分唯一设备,需要用到一个device id. 1. 取得设备的MAC address    如果用户没有通过w ...

  4. 是否有唯一的 Android 设备 ID?

    问: Android 设备是否有唯一 ID,如果有,使用 Java 访问它的简单方法是什么? 答1: 保持自己快人一步,享受全网独家提供的一站式外包任务.远程工作.创意产品订阅服务–huntsbot. ...

  5. 是否有唯一的Android设备ID?

    Android设备是否具有唯一的ID,如果是,则使用Java访问它的简单方法是什么? #1楼 有许多不同的方法可以解决这些ANDROID_ID问题(有时可能为null或特定模型的设备总是返回相同的ID ...

  6. 浅谈 iOS Device ID 的修改

    Dark side of the Force 最近有一篇 文章 介绍了如何实现 AppStore App 自动下载,笔者看后收获良多.不过文中只介绍了如何去模拟用户的操作来完成下载,并没有涉及抹机.I ...

  7. android 有哪些设备id,Android之设备ID(Device ID)

    有时,Android应用程序开发过程中需要得到基于Android智能手机设备的唯一ID .特别是在需要唯一标识设备注册的情况下,Device ID就非常有用.今天我就整理一下Device ID有哪些方 ...

  8. Android之设备ID(Device ID)

    有时,Android应用程序开发过程中需要得到基于Android智能手机设备的唯一ID .特别是在需要唯一标识设备注册的情况下,Device ID就非常有用.今天我就整理一下Device ID有哪些方 ...

  9. 蓝牙DID协议讲解 Bluetooth Device ID

    零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)DID(Device ID)协议讲解 btsnoop以及流程在资料中的......\STM32_UBUNTU_BLUETOOTH\2- ...

最新文章

  1. 关于mtl_transactions_interface表序列
  2. 计算机原理解读图,详细讲解仪器仪表测试系统,结构原理图拿走不谢
  3. 智慧城市需要百姓智慧
  4. 6、HIVE JDBC开发、UDF、体系结构、Thrift服务器、Driver、元数据库Metastore、数据库连接模式、单/多用户模式、远程服务模式、Hive技术原理解析、优化等(整理的笔记)
  5. 无法访问 gcr.io 的解决方案
  6. ABP入门系列(21)——切换MySQL数据库
  7. C/C++ OpenCV之Scharr边缘检测
  8. pid和linux的关系,linux – bash pid和$$之间的区别
  9. linux 用户管理和帮助命令
  10. 一加7pro运动计步功能_系统:一加推送一加7Pro的氢OS9.5.9系统版本更新,继续优化屏幕...
  11. 字符串格式参数的日期比较函数
  12. 突袭HTML5之SVG 2D入门12 - SVG DOM
  13. 微信小程序多人开发-版本管理
  14. php毕设周记_(完整版)毕设周记
  15. 各省农村人均受教育年限及村委会个数(2011-2019年)
  16. MySQL安装失败的原因
  17. Activities介绍
  18. matlab去除摩尔纹,索尼ILCE-7RM2测评——理论画质篇
  19. 金融区块链标准规范解读
  20. bzip2格式文件解压

热门文章

  1. Day01-C#学习:05、转义符号及算术运算符
  2. “自习室”--随想项目
  3. 常用文件存储系统概述
  4. 未备案域名使用Cloudflare进行301重定向
  5. mysql 删除一个约束条件_MySQL 字段增删改查 和 约束条件
  6. 基于python实现淘宝协议秒杀程序
  7. Skywalking 扩展:TID自定义规则
  8. 培训经历和培训现状,供开发人员参考
  9. Essential Grammar in Use(Third Edition)--Present perfect Unit17
  10. input的type属性和textarea标签