如何读取STM32的唯一ID


STM32的微控制器设计有唯一的ID,每个ID都具备有不可修改和唯一性,这一点在基本的程序防解密上很有效果,ID结合加密的程序可以有效增加破解的难度和成本。


读取ID以STM32F469为例:


ID存储在共96位的只读地址(寄存器)内,因此使用三个32位无符号整数读取,当然使用8或者16位读取也都是可以的。这里因为已经构建了一个stemwin框架,因此使用GUI_xxxx函数打印获取的代码



	 CpuID[0]=*(uint32_t*)(0x1FFF7A10);
         CpuID[1]=*(uint32_t*)(0x1FFF7A10+sizeof(uint32_t));
         CpuID[2]=*(uint32_t*)(0x1FFF7A10+sizeof(uint32_t)*2);
	 GUI_GotoXY(415,400);
	 GUI_DispDecMin(CpuID[0]);
	 GUI_GotoXY(415,424);
	 GUI_DispDecMin(CpuID[1]);
	 GUI_GotoXY(415,448);
	 GUI_DispDecMin(CpuID[2]);


在DEBUG下查看存储也可以看到Device ID





因为每款STM32的存储器地址不一样,不同的微控制器型号96bit的ID存储位置不一样,所以需要自行查找STM32的地址,方法很简单,可以从官网或者手册网站下载手册,我喜欢使用的有www.alldatasheet.com这一网站,之后在手册中直接搜索Unique device ID就可以找到所需的地址。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值