0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 15:19 次阅读

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

1Flash容量寄存器

这个问题是之前有人问过,说:我的芯片被抹掉,看不清了,我怎么知道这块芯片容量大小?

解决办法:

1.通过读寄存器

STM32的“参考手册”中有Flash size data register这么一个寄存器(一般在手册最后),明确写了寄存器的基地址。

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

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

uint16_t Flash_size;

Flash_size = *(uint16_t *)0x1FFFF7E0;

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

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

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

2

UID寄存器

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

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

STM32的UID唯一标识符适用于:

用来作为序列号。

用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。

用来激活带安全机制的自举过程。

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

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

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

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

3

寄存器偏移地址

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

1.基地址

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

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

2.偏移地址

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

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5334

    浏览量

    120208
  • FlaSh
    +关注

    关注

    10

    文章

    1632

    浏览量

    147908
  • STM32
    +关注

    关注

    2270

    文章

    10890

    浏览量

    355630
收藏 人收藏

    评论

    相关推荐

    寄存器间接寻址和寄存器寻址的区别

    寄存器间接寻址和寄存器寻址是计算机体系结构中两种重要的寻址方式,它们在指令执行过程中起着关键作用。下面将从定义、原理、特点、应用场景以及区别等方面对这两种寻址方式进行详细阐述。
    的头像 发表于 10-05 17:13 1247次阅读

    寄存器的类型和作用

    在计算机科学中,寄存器(Register)是一种高速存储单元,它位于CPU内部,与CPU的运算单元和逻辑控制单元紧密相连。寄存器的主要作用是暂时存储指令、操作数和地址等临时数据,以便CPU快速访问和处理。由于寄存器直接集成在CP
    的头像 发表于 09-05 14:11 1533次阅读

    寄存器故障分析

    寄存器故障分析是计算机硬件维护与系统稳定性保障中的重要环节。寄存器作为计算机中的关键组成部分,负责存储和传输数据,其稳定性和可靠性直接影响到整个计算机系统的性能。以下是对寄存器故障的全面分析,包括故障类型、故障现象、故障原因及诊
    的头像 发表于 08-29 11:26 912次阅读

    寄存器是什么意思?寄存器是如何构成的?

    在计算机科学中,寄存器(Register)是一个高速存储单元,它位于中央处理(CPU)内部,用于存储计算机程序执行过程中所需要的数据、指令地址或状态信息。寄存器是计算机体系结构中至关重要的组成部分,对计算机的运算速度和性能有着
    的头像 发表于 08-02 18:23 3845次阅读
    <b class='flag-5'>寄存器</b>是什么意思?<b class='flag-5'>寄存器</b>是如何构成的?

    寄存器寻址和直接寻址的区别

    寄存器寻址和直接寻址是计算机指令系统中的两种基本寻址方式。它们在指令的执行过程中起着至关重要的作用,决定了指令操作数的来源和目标。下面我们将介绍这两种寻址方式的特点、区别以及在实际应用中的优缺点
    的头像 发表于 07-12 10:42 1623次阅读

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部的寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内存的访问。 寄存器寻址的基本概念
    的头像 发表于 07-12 10:36 627次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本寄存器
    的头像 发表于 07-12 10:31 1280次阅读

    移位寄存器右移是怎么移位的

    移位寄存器是一种在数字电路和计算机科学中广泛使用的存储设备,它可以用来存储和传输数据。在移位寄存器中,数据可以通过移位操作来实现数据的传输和处理。移位寄存器的移位操作有两种基本形式:左移和右移。本文
    的头像 发表于 07-12 10:14 1286次阅读

    干货满满:ARM的内核寄存器讲解

    内核寄存器与外设寄存器: 内核寄存器与外设寄存器是完全不同的概念。内核寄存器是指 CPU 内部的寄存器
    发表于 04-17 11:47 3474次阅读
    干货满满:ARM的内核<b class='flag-5'>寄存器</b>讲解

    如何根据自己设计中的寄存器配置总线定义来生成一套寄存器配置模版

    无论是FPGA还是ASIC,系统设计中总会存在配置寄存器总线的使用,我们会将各种功能、调试寄存器挂载在寄存器总线上使用。
    的头像 发表于 03-04 13:56 1129次阅读
    如何根据自己设计中的<b class='flag-5'>寄存器</b>配置总线定义来生成一套<b class='flag-5'>寄存器</b>配置模版

    CPU的6个主要寄存器

    CPU寄存器是中央处理内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制
    的头像 发表于 02-03 15:15 4195次阅读

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行移位寄存器和并行移位
    的头像 发表于 01-18 10:52 8140次阅读

    个人对STM32 SysTick的总结(寄存器操作)

    一、概述:SysTick是一个简单的递减24位计数。如果不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。状态控制寄存器的第0位可以使能计数,当
    的头像 发表于 01-06 08:00 1830次阅读
    个人对<b class='flag-5'>STM32</b> SysTick的总结(<b class='flag-5'>寄存器</b>操作)

    MC17XS6500高边驱动芯片寄存器的介绍

    本文主要是对MC17XS6500高边驱动芯片寄存器进行的介绍,MC17XS6500寄存器分为输入寄存器和输出寄存器,对常用的几个输入和输出
    的头像 发表于 12-29 08:27 771次阅读
    MC17XS6500高边驱动芯片<b class='flag-5'>寄存器</b>的介绍

    请问AENERGY、 RAENERGY、VAENERGY这几个寄存器到底功率寄存器还是能量寄存器

    反复看了几次datasheet ,现在都不明白AENERGY、 RAENERGY、VAENERGY 这几个寄存器是功率寄存器还是能量寄存器了。 Datasheet中: AENERG
    发表于 12-27 07:16