在 C 中读取 STM32 唯一设备 ID
所有 STM32 微控制器都具有 96 位工厂编程的唯一设备 ID。然而,对我来说很难找到一个许可合适的示例,说明如何以兼容不同系列和编译器的方式读取它。
这是一个定义设备 ID 地址宏的简单头文件。虽然我检查了 STM32F4 和 STM32F0 系列的地址,但其他系列的设备 ID 地址可能略有不同。如果出现错误,请查看对应于你的 STM32 系列的参考手册。
STM32-UID.h
/**
* 用于读取 STM32 设备 UUID 的简单头文件
* 已在 STM32F4 和 STM32F0 系列上测试
*
* 版本 1.0
* 由 Uli Koehler 编写
* 发布在 https://techoverflow.net
* 在 CC0 (公共领域) 下许可:
* https://creativecommons.org/publicdomain/zero/1.0/
*/
#ifndef __UUID_H
#define __UUID_H
#include <stdint.h>
/**
* STM32 工厂编程的 UUID 内存。
* 从此地址开始的三个 32 位值
* 使用方式:STM32_UUID[0], STM32_UUID[1], STM32_UUID[2]
*/
#define STM32_UUID ((uint32_t *)0x1FFF7A10)
#endif //__UUID_H
这是一个如何读取它的简单示例:
stm32-uid-example.c
#include "STM32-UID.h"
void foobar() {
uint32_t idPart1 = STM32_UUID[0];
uint32_t idPart2 = STM32_UUID[1];
uint32_t idPart3 = STM32_UUID[2];
//用整个 96 位做些什么
}If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow