在STM32的全系列MCU中均有一个96位的唯一设备标识符。在ST的相关资料中,对其功能的描述有3各方面:
用作序列号(例如 USB 字符串序列号或其它终端应用程序)
在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以提高 Flash 中代码的安全性
激活安全自举过程等
在资料中对其特性的描述是:96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远不能改变这些位。96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接起来。
想要读取唯一ID,就需要知道它的存储地址,在不同系列的MCU中地址是有差别的,我们查询了部分MCU的资料并将其总结如下:

20190323134230206_.png?imageView2/2/w/1000
G4 0x1fff7590
STM32G030利用UID和OTP区域
https://blog.csdn.net/qq_43448742/article/details/106917836
void Get_CPU_ID(void)
{
//read CPU ID,stm32lxx,add+4
CpuID[0] = *(__IO u32 *)(0X1FF80058);
CpuID[1] = *(__IO u32 *)(0X1FF80054);
CpuID[2] = *(__IO u32 *)(0X1FF80050);
}
int main(void)
{
…
printf(“rn###########CPU ID:%X-%X-%Xrn”,CpuID[0],CpuID[1],CpuID[2]);
关键字:STM3
引用地址:
STM32的ID号地址
推荐阅读最新更新时间:2026-03-25 10:27
基于STM32的平衡小车设计过程分享(2)
一、简介 续上文,电机驱动部分完成,接下来我们给他加上一个OLED的显示功能和MPU6050的姿态检测功能 二、姿态角显示开发 2.1 MPU6050简介 MPU6050是一种集成了3轴陀螺仪和3轴加速度计的数字运动处理器。它由英飞凌公司开发,可用于测量物体的角速度、加速度和方向,广泛应用于机器人、无人机、游戏手柄、智能手机和运动监测等领域。MPU6050采用I2C接口进行通信,具有低功耗、高精度、小尺寸等特点,是一款非常优秀的运动传感器。 2.2 OLED简介 OLED(Organic Light Emitting Diode)是有机发光二极管,是一种新型的显示技术。与传统的液晶显示屏相比,OLED显示
[单片机]
STM32的时钟体系
【1】STM32的时钟共有三类 (1)纯内部(内部RC电路) HSI( 内部高速时钟) LSI(内部低速时钟) (2)内外部(内部RC电路配合外部晶振) HSE LSE (3)纯外部(使用别人的时钟,通过下面两个端口输入) OSC_IN OSC32_IN 【2】三类时钟信号说明 (1)纯内部 特点:上电后很快就可以准备好(快速)、即使可以校正也无法校正精确(不精确)、用于刚上电的时钟(32默认时钟可修改) (2)内外部 特点:准备时间长(慢)、不可校正但是精确(精确)、代替默认时钟(需软件设置) (3)纯外部 特点:用于多机互动,提供同步时钟、四条通路可选 【3】STM32的时钟树 【4】STM32的时钟框图详解 1、
[单片机]
STM32综合网上讲解的几种读保护措施
以下内容是在STM32F103系列单片机实验成功! STM32可以对存储在flash上的程序进行读保护. 启动读保护后,用户就不能再读写程序了. 所以,在烧写程序之前,需要程序调用关闭读保护.关闭读保护后,会自动清空flash上的程序 头文件位于:#include stm32f10x_flash.h 启动保护,用在main()函数初始化时调用: void Set_Protect(void) //启动保护 { if(FLASH_GetReadOutProtectionStatus() != SET) { FLASH_Unlock(); //解锁 FLASH_ReadOutProtection(ENABLE
[单片机]
玩转STM32(7)第一次编译
前面介绍了认识开发环境,当然你学习上面这些知识还不会进行编译一个项目的,那么你也许会急着想知道下一步怎么办?怎么样才可以把这个项目编译出来,或者烧写到开发板里进行测试。下面就来解决编译这个问题,编译原因在前面已经说过,就是把人类理解的语言转换为机器语言。在Keil的集成开发环境里,界面上主要有四个编译选项,如下图所示: 下面来从左到右来介绍这四个编译选项的使用和意义,第一个选项是编译一个文件,并且是代码区里选中的文件,如上图就是main.c是当前活动的、选中的,其它文件不作任何的处理。那么为什么要有这样一个选项,而不是编译所有的文件呢?对于初学者来说,要理解这个区别有点困难,因为他接触到的代码,都是非常少,比如几百行,几千行,
[单片机]
STM32什么时候使用AFIO?
什么时候要开启AFIO呢?参考手册: 说的很明白,操作AFIO的三类寄存器时需要开启: AFIO_EVCR AFIO_MAPR AFIO_EXTICRx 这三类其实是AFIO的全部寄存器, AFIO_EVCR是事件相关的,AFIO_MAPR是与重映射相关的,AFIO_EXTICRx是与外部中断相关的。 因此管脚重映射、外部中断、事件时开启AFIO。
[单片机]
STM32新建keil工程具体步骤(详细)
1. 新建本地工程文件夹 在本地电脑上新建一个“工程模板”文件夹,在它之下再新建 6 个文件夹: 2.添加库文件到相应文件夹 把 ST 标准库必要的文件复制到工程模版对应文件夹的目录下 3.KEIL5新建工程 打开 KEIL5,新建一个工程,文件名自拟,工程放在Project目录下。 保存后弹出芯片选择,要根据自己芯片的型号提前按照PACK包,选择型号后点击OK。 随后弹出在线添加库文件,关闭即可。 4.添加组文件夹 在新建的工程中添加常用的文件夹,用来存放不同的文件。 5.添加文件 在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。 6.配置魔术棒选
[单片机]
STM32_USART 串口通讯详解
对51单片机有了解的都知道51单片机的串口通讯工作原理,我们单片机使用的电平TTL电平,为了使我们的的单片机与PC进行通信,就需要一个电平转换芯片,把TTL电平转换为USB电平(使用的USB接口,如果使用的DB9接口,电平转换芯片则为TTL转RS232电平芯片),然后通过对SBUF寄存器的读写操作来实现PC与MCU的通信。STM32的串口通讯原理与51相同。下面就对USART尽行具体的介绍。 USART(Universal synchronous asynchronous receivertransmitter )通用同步异步收发器,是STM32上基于串口通讯协议来实现与外部通信的一个外设,因为串口通讯协议的简单,便捷,所以在
[单片机]
【STM32平衡小车】电磁巡线归一化算法(二)
一、归一化的概念 归一化处理,由于各个电感的性能特性存在很大差异特别是电压波动范围相差较大。因此为了给算法制定统一的标准给数据处理带来方便须对 A/D传感器采集来的信号做归一化处理。此设计中的具体方法是通过公式将各传感器电压值都处理成相对该传感器最大电压和最小电压使得传感器输出电压值都保持在 0到 100之间。 归一化之后的传感器数据如图所示横坐标表示距离中心线的距离单位是毫米,纵轴是电压值。 二、归一化的原因 假设不用归一化处理时,距离中线零偏差时,电感A的值是1000,偏离赛道20厘米时,电感A值是200.当赛道电源不准时,比如输出电流由100ma变成了120ma,这时,电感A在零偏差的值和偏离赛道20厘米时候的值都会
[单片机]