洋桃电子STM32F407单片机入门教程笔记十二:芯片ID读取

   此文档作为对洋桃电子STM32F407单片机视频的整理,B站链接:第31集)芯片ID读取_哔哩哔哩_bilibili

        STM32单片机虽然是批量生产的芯片,但每个芯片都有一组全球唯一的ID编码,像身份证一样刻在芯片存储器里不能更改。每个芯片ID码由96位二进制数组成,存放在3个32位寄存器里,只要读取单片机中固定的3个地址就能读出芯片ID,芯片ID可以作为产品硬件的序列号,还可用于加密算法,使每个产品都有独立密码,还可用于防止程序被他人复制,只要在程序运行时读取芯片ID,并判断是不是正确的ID范围,不在范围内就停止运行,即使他人得到HEX文件下载到新的芯片,由于芯片ID不符合就无法运行,防止了盗版。

        从96位芯片ID寄存器表中可以得知,芯片ID寄存器的第一组的地址是0x1FFF7A10,第二组偏移0x04即0X1FFF7A14,第三组偏移0x08即0x1FFF7A18。三组内容都都是出厂前编程的不允许我们用户修改。

1. 芯片ID读取

        由于芯片ID是存放在Flash空间中的数据,所以不需要进行CubeMX设置,也不需要调用HAL库函数,只要直接使用指令读取Flash中的地址即可。

        在主函数开始处的第72行创建一个用于存放3个32位ID的数组,在需要读取芯片ID的地方添加第102~104行,直接从3个固定地址中读出数据,读出数据是32位的,每个系列单片机的芯片ID所在地址有所不同,读取其他芯片之前要先在《参考手册》上确认芯片ID的地址,第105行将读出的芯片ID显示在超级终端上。

2. 实验现象

        开发板重启后显示芯片ID。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值