硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6339|回复: 5
收起左侧

[STM32H7] STM32H7的CPU ID地址和F4是不同的,读取了下老地址竟然硬件异常了

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115660
QQ
发表于 2018-11-27 03:50:39 | 显示全部楼层 |阅读模式
STM32F4的CPU ID地址
CPU_Sn0 = *(__IO uint32_t*)(0x1FFF7A10);
CPU_Sn1 = *(__IO uint32_t*)(0x1FFF7A10 + 4);
CPU_Sn2 = *(__IO uint32_t*)(0x1FFF7A10 + 8);

STM32H7的CPU ID地址
_id[0] = *(__IO uint32_t*)(0x1FF1E800);
_id[1] = *(__IO uint32_t*)(0x1FF1E800 + 4);
_id[2] = *(__IO uint32_t*)(0x1FF1E800 + 8);

回复

使用道具 举报

680

主题

3479

回帖

5544

积分

论坛元老

积分
5544
发表于 2018-11-27 15:40:12 | 显示全部楼层
不错,不错,单片机型号不同,有些对应的地址也发生了一点变化
回复

使用道具 举报

32

主题

297

回帖

393

积分

高级会员

积分
393
发表于 2018-11-28 11:09:34 | 显示全部楼层
感谢硬汉分享,这个ID可以做一些绑定用,能保证唯一,就是数据比较长
回复

使用道具 举报

4

主题

141

回帖

153

积分

初级会员

积分
153
QQ
发表于 2018-11-30 14:33:37 | 显示全部楼层
是不一样的,HAL 库有专门的宏定义的,读哪个宏定义就不会有问题,也方便移植
回复

使用道具 举报

85

主题

426

回帖

701

积分

金牌会员

积分
701
QQ
发表于 2021-1-21 14:50:29 | 显示全部楼层
qgyhd1234 发表于 2018-11-30 14:33
是不一样的,HAL 库有专门的宏定义的,读哪个宏定义就不会有问题,也方便移植

H7 中是这样定义的
/*!< Device electronic signature memory map */
#define UID_BASE                  (0x1FF1E800UL)            /*!< Unique device ID register base address */
#define FLASHSIZE_BASE            (0x1FF1E880UL)            /*!< FLASH Size register base address */

stm32F429 中是这样定义的
#define UID_BASE                     0x1FFF7A10UL           /*!< Unique device ID register base address */
#define FLASHSIZE_BASE               0x1FFF7A22UL           /*!< FLASH Size register base address       */
#define PACKAGE_BASE                 0x1FFF7BF0UL           /*!< Package size register base address     */


CPU ID  的定义都是  UID_BASE
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

85

主题

426

回帖

701

积分

金牌会员

积分
701
QQ
发表于 2021-1-21 14:52:22 | 显示全部楼层
/*
*********************************************************************************************************
*    函 数 名: bsp_GetCpuID
*    功能说明: 该CPU UID
*    形    参: _id : 返回ID
*    返 回 值: 无
*********************************************************************************************************
*/
void bsp_GetCpuID(uint32_t *_id)
{
//    _id[0] = *(__IO uint32_t *)(UID_BASE);
//    _id[1] = *(__IO uint32_t *)(UID_BASE + 4);
//    _id[2] = *(__IO uint32_t *)(UID_BASE + 8);
   
    _id[0] = HAL_GetUIDw0();
    _id[1] = HAL_GetUIDw1();
    _id[2] = HAL_GetUIDw2();

}
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-10 10:43 , Processed in 0.292200 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表