0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于STM32的這幾個(gè)寄存器, 你知道嗎?

黃工的嵌入式技術(shù)圈 ? 來(lái)源:黃工的嵌入式技術(shù)圈 ? 2020-03-06 15:19 ? 次閱讀

今天分享幾點(diǎn)小知識(shí),希望對(duì)你有幫助!

1Flash容量寄存器

這個(gè)問(wèn)題是之前有人問(wèn)過(guò),說(shuō):我的芯片被抹掉,看不清了,我怎么知道這塊芯片容量大???

解決辦法:

1.通過(guò)讀寄存器

STM32的“參考手冊(cè)”中有Flash size data register這么一個(gè)寄存器(一般在手冊(cè)最后),明確寫(xiě)了寄存器的基地址。

提示:不同芯片型號(hào),可能這個(gè)寄存器地址不同。比如F103的基地址為:0x1FFFF7E0。

是一個(gè)16位的數(shù)值,出廠寫(xiě)入,程序只能讀取。讀取方法很簡(jiǎn)單,可以如下:

uint16_t Flash_size;

Flash_size = *(uint16_t *)0x1FFFF7E0;

說(shuō)到這里,可以參看我之前分享的一篇文章《你的STM32芯片F(xiàn)LASH容量真如ST官方選型手冊(cè)那樣嗎?》

2.通過(guò)STM32 ST-LINK Utility直接讀取

通過(guò)ST-Link連接芯片,直接讀取,可以看到容量信息

2

UID寄存器

之前有人問(wèn)我,可以通過(guò)STM32的UID來(lái)加密嗎?這個(gè)肯定是可以的。

但又問(wèn)了我一個(gè)問(wèn)題,我不希望讀取全部(96位),可以只讀取部分寄存器來(lái)作為標(biāo)識(shí)嗎?讀取的部分會(huì)不會(huì)重復(fù)?

STM32的UID唯一標(biāo)識(shí)符適用于:

用來(lái)作為序列號(hào)。

用來(lái)作為密碼,在編寫(xiě)閃存時(shí),將此唯一標(biāo)識(shí)與軟件加解密算法結(jié)合使用,提高代碼在閃存存儲(chǔ)器內(nèi)的安全性。

用來(lái)激活帶安全機(jī)制的自舉過(guò)程。

STM32的UID共有96位(32x 3)。所有,就有朋友,我是否可以只讀取其中某一部分來(lái)作為唯一識(shí)別?

這個(gè)問(wèn)題,嚴(yán)格來(lái)說(shuō),不可以。但如果不是特別嚴(yán)格,還是可以。因?yàn)檫@個(gè)UID是通過(guò)晶元、分批等來(lái)進(jìn)行編號(hào)的。如果你買(mǎi)同一批次,你會(huì)發(fā)現(xiàn)那個(gè)編號(hào)可能連續(xù)。

我之前曾讀取過(guò)幾塊生產(chǎn)的板卡(購(gòu)買(mǎi)得_MCU是同一批次),芯片的UID是連續(xù)的,感興趣的可以試試。

所以,通過(guò)讀取部分UID來(lái)作為標(biāo)識(shí),只能說(shuō)不嚴(yán)格的情況是可以的。

3

寄存器偏移地址

現(xiàn)在還有許多初學(xué)的朋友在學(xué)習(xí)底層的一些知識(shí),比如前面就有朋友想自己通過(guò)寄存器來(lái)編程,但是卻不知道什么是寄存器基地址,什么是寄存器偏移地址。

1.基地址

每一個(gè)片內(nèi)外設(shè)都有一個(gè)對(duì)應(yīng)的基地址,而且是由廠商決定我們不能修改。如下圖:

在程序中,你會(huì)發(fā)現(xiàn)和上面對(duì)應(yīng)的代碼:

2.偏移地址

偏移地址就是在基地址基礎(chǔ)上偏移(一般是以4字節(jié)增加),比如TIM定時(shí)器的偏移地址:

同樣,在程序中對(duì)應(yīng)的代碼通過(guò)結(jié)構(gòu)體實(shí)現(xiàn)偏移:

關(guān)于基地址和偏移地址,不管是標(biāo)準(zhǔn)外設(shè)庫(kù)還是HAL庫(kù),都是上面所示那種基地址+偏移的方法實(shí)現(xiàn)。

還是之前多次在文章中提到的,想要了解寄存器原理,或者通過(guò)寄存器來(lái)實(shí)現(xiàn)的朋友,最好參考“標(biāo)準(zhǔn)外設(shè)庫(kù)”例程。HAL庫(kù)封裝的相對(duì)復(fù)雜,不適合研究最底層寄存器。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119192
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1598

    瀏覽量

    147331
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352432
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    寄存器尋址的實(shí)現(xiàn)方式

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器尋址是一種常見(jiàn)的尋址方式,它允許程序直接訪問(wèn)CPU內(nèi)部的寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因?yàn)樗苊饬藢?duì)內(nèi)存的訪問(wèn)。 寄存器尋址的基本概念
    的頭像 發(fā)表于 07-12 10:36 ?359次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計(jì)算機(jī)中用于存儲(chǔ)數(shù)據(jù)的高速存儲(chǔ)單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴(kuò)展寄存器兩種類(lèi)型。 一、基本寄存器
    的頭像 發(fā)表于 07-12 10:31 ?631次閱讀

    CPU的6個(gè)主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內(nèi)部的元件,包括通用寄存器、專(zhuān)用寄存器和控制
    的頭像 發(fā)表于 02-03 15:15 ?2934次閱讀

    個(gè)人對(duì)STM32 SysTick的總結(jié)(寄存器操作)

    一、概述:SysTick是一個(gè)簡(jiǎn)單的遞減24位計(jì)數(shù)。如果不需要再應(yīng)用程序中嵌入操作系統(tǒng),SysTick可以作為簡(jiǎn)單的延時(shí)和產(chǎn)生周期性的中斷。狀態(tài)控制寄存器的第0位可以使能計(jì)數(shù),當(dāng)
    的頭像 發(fā)表于 01-06 08:00 ?1414次閱讀
    個(gè)人對(duì)<b class='flag-5'>STM32</b> SysTick的總結(jié)(<b class='flag-5'>寄存器</b>操作)

    MC17XS6500高邊驅(qū)動(dòng)芯片寄存器的介紹

    本文主要是對(duì)MC17XS6500高邊驅(qū)動(dòng)芯片寄存器進(jìn)行的介紹,MC17XS6500寄存器分為輸入寄存器和輸出寄存器,對(duì)常用的幾個(gè)輸入和輸出
    的頭像 發(fā)表于 12-29 08:27 ?584次閱讀
    MC17XS6500高邊驅(qū)動(dòng)芯片<b class='flag-5'>寄存器</b>的介紹

    請(qǐng)問(wèn)AENERGY、 RAENERGY、VAENERGY這幾個(gè)寄存器到底功率寄存器還是能量寄存器?

    反復(fù)看了幾次datasheet ,現(xiàn)在都不明白AENERGY、 RAENERGY、VAENERGY 這幾個(gè)寄存器是功率寄存器還是能量寄存器了。 Datasheet中: AENERG
    發(fā)表于 12-27 07:16

    運(yùn)算放大器的種類(lèi)都有哪些?知道嗎?

    運(yùn)算放大器的種類(lèi)都有哪些?知道嗎
    的頭像 發(fā)表于 12-13 15:14 ?634次閱讀
    運(yùn)算放大器的種類(lèi)都有哪些?<b class='flag-5'>你</b><b class='flag-5'>知道嗎</b>?

    5大高精密多層pcb的特點(diǎn)知道嗎

    5大高精密多層pcb的特點(diǎn)知道嗎
    的頭像 發(fā)表于 12-08 16:10 ?727次閱讀

    寄存器陣列低功耗設(shè)計(jì)方案

    寄存器寫(xiě)操作的時(shí)候會(huì)改變寄存器內(nèi)容,需要時(shí)鐘鎖入新的數(shù)據(jù)。但是,對(duì)寄存器進(jìn)行讀操作的時(shí)候,寄存器內(nèi)容不改變,寄存器不需要時(shí)鐘。這個(gè)特點(diǎn)工具是
    的頭像 發(fā)表于 12-08 11:19 ?486次閱讀
    <b class='flag-5'>寄存器</b>陣列低功耗設(shè)計(jì)方案

    寄存器查看的功能和使用

    對(duì)于搞嵌入式底層開(kāi)發(fā)的軟件或者硬件工程師來(lái)說(shuō),經(jīng)常會(huì)涉及到查看芯片手冊(cè),比如某個(gè)芯片的串口控制寄存器值,需要知道這個(gè)值對(duì)應(yīng)寄存器的哪些位,微軟計(jì)算
    的頭像 發(fā)表于 11-28 12:26 ?1421次閱讀
    <b class='flag-5'>寄存器</b>查看<b class='flag-5'>器</b>的功能和使用

    寄存器開(kāi)發(fā),HAL開(kāi)發(fā)和LL開(kāi)發(fā)的區(qū)別和參考代碼

    不依賴(lài)高級(jí)的抽象層。以下是寄存器級(jí)開(kāi)發(fā)的一般步驟和示例:1.包含頭文件在程序中包含與目標(biāo)微控制系列相關(guān)的寄存器定義頭文件。#include"stm32f4xx.h"
    的頭像 發(fā)表于 11-17 08:00 ?1011次閱讀
    <b class='flag-5'>寄存器</b>開(kāi)發(fā),HAL開(kāi)發(fā)和LL開(kāi)發(fā)的區(qū)別和參考代碼

    STM32庫(kù)函數(shù)與寄存器開(kāi)發(fā)區(qū)別

    直接操作寄存器,運(yùn)行效率高。
    的頭像 發(fā)表于 10-31 16:04 ?2909次閱讀
    <b class='flag-5'>STM32</b>庫(kù)函數(shù)與<b class='flag-5'>寄存器</b>開(kāi)發(fā)區(qū)別

    無(wú)源與有源器件的這些區(qū)別知道嗎?

    無(wú)源與有源器件的這些區(qū)別知道嗎
    的頭像 發(fā)表于 10-26 15:27 ?4541次閱讀
    無(wú)源與有源器件的這些區(qū)別<b class='flag-5'>你</b>都<b class='flag-5'>知道嗎</b>?

    CPSR寄存器和APSR寄存器的組成

    程序狀態(tài)寄存器的作用就是反映處理的狀態(tài)信息。在程序運(yùn)行期間我們可以通過(guò)查看程序狀態(tài)寄存器的狀態(tài)位來(lái)進(jìn)行程序的分支跳轉(zhuǎn)處理,或者我們可以設(shè)置程序狀態(tài)寄存器的模式位來(lái)改變處理
    的頭像 發(fā)表于 10-20 11:38 ?3726次閱讀
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的組成

    SoC芯片上的寄存器設(shè)計(jì)與驗(yàn)證

    就像芯片本身一樣,SoC上的CSR設(shè)計(jì)也沿用了層級(jí)設(shè)計(jì)的方法。從最底層往上,寄存器可以被分為以下幾個(gè)層級(jí)。
    的頭像 發(fā)表于 10-20 10:39 ?1151次閱讀
    SoC芯片上的<b class='flag-5'>寄存器</b>設(shè)計(jì)與驗(yàn)證