在 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 位做些什么
}

Check out similar posts by category: C/C++, Embedded