如何以编程方式读取 STM32 的特定 CPU 类型?

How can I programatically read the specific CPU type of an STM32?

基于 the documentation 我很确定这个问题的答案是 "You can't.",但无论如何都值得一问。在 STM32 处理器上,有什么方法可以确定软件中的特定 CPU 类型? (即,我想知道我的代码是 运行 在 STM32F407x、STM32F417x 还是 STM32F437x 上)

您要查找的信息在 DBGMCU_IDCODE 寄存器中。您可以从那里判断您是 407 还是 437,但我认为您无法判断您是 407 还是 417。

您可以尝试写入加密单元,看看它是否能区分 407 和 417,但我不知道它是否可靠。

有一个 HAL 库可以帮助你走得更远:

如果您的特定设备不在保障范围内,您或许可以延长这些时间。它可能使用与 Colin 的答案相同的寄存器作为起点。