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

    文章

    5589

    浏览量

    129060
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154705
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371150
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【NCS随笔】nRF54L15使用UICR寄存器保存数据

    nRF54L15使用UICR寄存器保存数据 本文章主要是讲解如何使用nRF54L15的UICR寄存器保存一些基础数据 一、UICR寄存器的说明 UICR(用户信息配置寄存器)**是非易
    的头像 发表于 11-27 17:09 1109次阅读

    嵌入式系统必懂的 20 个寄存器

    嵌入式开发看起来很复杂,但很多操作其实都离不开寄存器寄存器就是MCU内部的存储单元,它们控制着处理和外设的行为。熟悉这些寄存器就能更
    的头像 发表于 11-14 10:28 648次阅读
    嵌入式系统必懂的 20 个<b class='flag-5'>寄存器</b>

    薄膜电容的关键词是什么知道吗

    薄膜电容是一种以金属箔作为电极,以聚乙酯、聚丙烯、聚苯乙烯等塑料薄膜作为电介质的电容器,在电子电路中具有重要作用。薄膜电容有哪些关键词知道吗
    的头像 发表于 10-13 15:30 277次阅读
    薄膜电容的关键词是什么<b class='flag-5'>你</b><b class='flag-5'>知道吗</b>?

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    Texas Instruments SN74HCT595/SN74HCT595-Q1 8位移位寄存器包含8位串进并出移位寄存器,向8位D类存储寄存器馈送信号。存储寄存器具有并行 3 状
    的头像 发表于 09-19 14:31 576次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    TPIC6595 8位功率移位寄存器技术文档摘要

    该TPIC6595是一款单片、高压、大电流功率的8位移位寄存器,设计用于需要相对较高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 11:10 686次阅读
    TPIC6595 8位功率移位<b class='flag-5'>寄存器</b>技术文档摘要

    ‌TPIC6B595 8位功率移位寄存器技术文档总结

    TPIC6B595器件是一款单片、高压、中电流功率8位移位寄存器,设计用于需要相对高负载功率的系统。该器件在输出端包含一个内置电压钳位,用于电感瞬态保护。功率驱动应用包括继电器、螺线管和其他中电流
    的头像 发表于 09-09 10:16 736次阅读
    ‌TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技术文档总结

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1040次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    第四章 什么是寄存器

    本篇文章我们讲解了寄存器的概念、地址映射和寄存器操作等内容,内容比较干,大家有个概念即可,不要求全部熟记掌握,有需要时可重复查阅观看。下一篇我们将开始进行实操内容,通过控制单片机的GPIO来点亮一颗LED,敬请期待!
    的头像 发表于 05-21 14:23 1133次阅读
    第四章 什么是<b class='flag-5'>寄存器</b>

    STM32的几种开发方式,知道吗?(可下载)

    经常有人会问,你们 STM32 编程是用库函数 还是用寄存器的...会说库函数方便,容 易,都用库函数...等等这样的问题,今天我们就来 dis 一下这几种编程方式,STM32 编程
    发表于 04-03 11:24 0次下载

    74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书

    电子发烧友网站提供《74HC594-Q100;74HCT594-Q100带输出寄存器的8位移位寄存器规格书.pdf》资料免费下载
    发表于 02-09 15:19 0次下载
    74HC594-Q100;74HCT594-Q100带输出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>规格书

    STC15系列常用寄存器汇总免费下载

      寄存器的功能是存储二进制代码,它是由具有存储功能的触发组合起来构成的。一个触发可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发
    发表于 01-22 17:24 10次下载

    请问关于ADS5407内部寄存器有没有相关的中文介绍的?

    请问关于ADS5407内部寄存器有没有相关的中文介绍的?其中有几个寄存器的功能不是特别明白,麻烦啦
    发表于 01-17 07:36

    XILINX FPGA CLB单元之移位寄存器

    一、移位寄存器 SLICEM函数发生也可以配置为32位移位寄存器,而无需使用slice中可用的触发。以这种方式使用,每个LUT可以将串行数据延迟1到32个时钟周期。 移入D(DI1
    的头像 发表于 01-16 17:45 1453次阅读
    XILINX FPGA CLB单元之移位<b class='flag-5'>寄存器</b>

    STM32驱动ADS7952时怎么配置AD的寄存器

    STM32驱动ADS7952时不懂怎么配置AD的寄存器,不知道发送什么数据偶去才能使它工作,PDF看不懂,貌似要发很多次不同的数据,请尽快求解
    发表于 01-02 07:08

    TPS80032寄存器手册

    电子发烧友网站提供《TPS80032寄存器手册.pdf》资料免费下载
    发表于 12-21 09:08 0次下载
    TPS80032<b class='flag-5'>寄存器</b>手册