良许Linux教程网 干货合集 关于STM32的这几个寄存器,你知道吗?

关于STM32的这几个寄存器,你知道吗?

今天我要分享几点小知识,希望对你有所帮助!

1. Flash容量寄存器

有人之前问过一个问题:如果芯片被抹掉了,我们怎么知道芯片的容量大小呢?

解决这个问题的方法如下:

  1. 通过读取寄存器

在STM32的参考手册中有一个Flash size data register(Flash容量寄存器),这个寄存器的基地址通常会在手册的最后一部分中明确标明。

提示:不同芯片型号,这个寄存器的地址可能不同。以F103为例,它的基地址是0x1FFFF7E0。

image-20231230212710453
image-20231230212710453

是一个16位的数值,出厂写入,程序只能读取。读取方法很简单,可以如下:

uint16_t Flash_size;

Flash_size = *(uint16_t *)0x1FFFF7E0;

说到这里,可以参看我之前分享的一篇文章《你的STM32芯片FLASH容量真如ST官方选型手册那样吗?

2.通过STM32 ST-LINK Utility直接读取

通过ST-Link连接芯片,直接读取,可以看到容量信息:

image-20231230212714321
image-20231230212714321

2UID寄存器

之前有人问我,可以通过STM32的UID来加密吗? 这个肯定是可以的。

但又问了我一个问题,我不希望读取全部(96位),可以只读取部分寄存器来作为标识吗?读取的部分会不会重复?

STM32的UID唯一标识符适用于

  • 用来作为序列号。
  • 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
  • 用来激活带安全机制的自举过程。

STM32的UID共有96位(32 x 3)。所有,就有朋友,我是否可以只读取其中某一部分来作为唯一识别?

这个问题,严格来说,不可以。但如果不是特别严格,还是可以。因为这个UID是通过晶元、分批等来进行编号的。如果你买同一批次,你会发现那个编号可能连续。

image-20231230212718657
image-20231230212718657
image-20231230212727276
image-20231230212727276

我之前曾读取过几块生产的板卡(购买得_MCU是同一批次),芯片的UID是连续的,感兴趣的可以试试。

所以,通过读取部分UID来作为标识,只能说不严格的情况是可以的

3寄存器偏移地址

现在还有许多初学的朋友在学习底层的一些知识,比如前面就有朋友想自己通过寄存器来编程,但是却不知道什么是寄存器基地址,什么是寄存器偏移地址。

1.基地址

每一个片内外设都有一个对应的基地址,而且是由厂商决定我们不能修改。如下图:

image-20231230212733415
image-20231230212733415

在程序中,你会发现和上面对应的代码:

image-20231230212738072
image-20231230212738072

2.偏移地址

偏移地址就是在基地址基础上偏移(一般是以4字节增加),比如TIM定时器的偏移地址:

image-20231230212741632
image-20231230212741632

同样,在程序中对应的代码通过结构体实现偏移:

image-20231230212746220
image-20231230212746220

关于基地址和偏移地址,不管是标准外设库还是HAL库,都是上面所示那种基地址+偏移的方法实现。

还是之前多次在文章中提到的,想要了解寄存器原理,或者通过寄存器来实现的朋友,最好参考“标准外设库”例程。HAL库封装的相对复杂,不适合研究最底层寄存器。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部