国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32之寄存器

這篇具有很好參考價(jià)值的文章主要介紹了STM32之寄存器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在學(xué)習(xí)STM32之前有必要了解一下ARM架構(gòu),以下相關(guān)ARM架構(gòu)的知識(shí)來(lái)自百度百科?:?

ARM架構(gòu),曾稱進(jìn)階精簡(jiǎn)指令集機(jī)器(Advanced?RISC?Machine)更早稱作Acorn RISC Machine,是一個(gè)32位精簡(jiǎn)指令集(RISC)架構(gòu)。還有基于ARM設(shè)計(jì)的派生產(chǎn)品,重要產(chǎn)品包括Marvell的XScale架構(gòu)和德州儀器的OMAP系列。

STM32芯片內(nèi)部構(gòu)造

以STM32F103為例,它采用的是Cortex-M3內(nèi)核,內(nèi)核即CPU,他是由ARM公司設(shè)計(jì)。內(nèi)核之外的部件被稱為片上外設(shè),如GPIO、USART、I2C、SPI等都叫做片上外設(shè)。如下圖所示:

stm32,寄存器,stm32?

芯片和外設(shè)之間是通過(guò)各種總線連接的,其中驅(qū)動(dòng)單元有四個(gè),被動(dòng)單元也有四個(gè)。驅(qū)動(dòng)單元就是平時(shí)所說(shuō)的CPU,被動(dòng)單元指的是外設(shè)。下面簡(jiǎn)要介紹一下各個(gè)部件。

驅(qū)動(dòng)單元?
  • ICode 總線 ICode 中的 I 表示 Instruction,即指令。內(nèi)核通過(guò)ICode 總線讀取內(nèi)部FLASH代碼指令來(lái)執(zhí)行程序。

  • DCode 總線 DCode 中的 D 表示 Data,即數(shù)據(jù),那說(shuō)明這條總線是用來(lái)取數(shù)的。因?yàn)閿?shù)據(jù)可以被 Dcode 總線和 DMA 總線訪問(wèn)(向flash,SRAM,或外設(shè)數(shù)據(jù)寄存器里面取數(shù)據(jù)),所以為了避免訪問(wèn)沖突,在取數(shù)的時(shí)候需要經(jīng)過(guò)一個(gè)總線矩陣來(lái)仲裁,決定哪個(gè)總線在取數(shù),取到的數(shù)據(jù)可以暫存在Cortex?-M3內(nèi)核里面的寄存器在進(jìn)行處理。?

  • 系統(tǒng)總線System 系統(tǒng)總線主要是訪問(wèn)外設(shè)的寄存器,我們通常說(shuō)的寄存器編程,即讀寫(xiě)寄存器都是通過(guò)這根系統(tǒng)總線來(lái)完成的。

  • DMA 總線 DMA 總線與DCode總線一樣主要是用來(lái)傳輸數(shù)據(jù),但Dcode總線傳輸數(shù)據(jù)要占用內(nèi)核(cpu)的資源,而DMA總線相當(dāng)于獨(dú)立于內(nèi)核cpu但幫助內(nèi)核cpu傳輸數(shù)據(jù)而不用占用內(nèi)核(cpu)的資源,就是在DMA傳輸數(shù)據(jù)的同時(shí)內(nèi)核cpu可以干別的事情比如點(diǎn)亮一個(gè)LED燈?

  • 總線矩陣 總線矩陣協(xié)調(diào)內(nèi)核系統(tǒng)總線和DMA主控總線之間的訪問(wèn)仲裁,仲裁利用輪換算法。因?yàn)閿?shù)據(jù)可以被 Dcode 總線和 DMA 總線訪問(wèn),數(shù)據(jù)可以是在某個(gè)外設(shè)的數(shù)據(jù)寄存器,可以在SRAM,可以在內(nèi)部的 FLASH。所以為了避免訪問(wèn)沖突,在取數(shù)的時(shí)候需要經(jīng)過(guò)一個(gè)總線矩陣來(lái)仲裁,決定哪個(gè)總線在取數(shù)?

被動(dòng)單元?
  • 內(nèi)部FLASH 簡(jiǎn)單介紹在flash存儲(chǔ)內(nèi)容:我們寫(xiě)好的程序編譯之后都是一條條指令(二進(jìn)制代碼),存放在 FLASH 中,我們常量或常變量C 語(yǔ)言中的 const 關(guān)鍵字修飾也存放在FLASH

  • 內(nèi)部SRAM 就是我們常說(shuō)的電腦內(nèi)存條,程序函數(shù)內(nèi)部的局部變量和全局變量,堆(malloc分配)棧(局部變量)等的開(kāi)銷都是基于內(nèi)部的SRAM。內(nèi)核通過(guò) DCode 總線來(lái)訪問(wèn)它?

  • FSMC FSMC 的英文全稱是 Flexible static memory controller,叫靈活的靜的存儲(chǔ)器控制器,是 STM32F10xx 中一個(gè)很有特色的外設(shè)通過(guò)FSMC我們可以擴(kuò)展內(nèi)存,如外部的SRAM,NANDFLASH 和 NORFLASH。但有一點(diǎn)我們要注意的是,F(xiàn)SMC 只能擴(kuò)展靜態(tài)的內(nèi)存,即名稱里面的 S:static,不能是動(dòng)態(tài)的內(nèi)存,比如 SDRAM 就不能擴(kuò)展。?

  • AHB 到 APB 的橋 兩個(gè)AHB/APB橋在AHB和2個(gè)APB總線間提供同步連接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz),上面掛載著 STM32 各種各樣的特色外設(shè)。我們經(jīng)常說(shuō)的 GPIO、串口、I2C、SPI 這些外設(shè)就掛載在這兩條總線上,這個(gè)是我們學(xué)習(xí) STM32 的重點(diǎn),就是要學(xué)會(huì)編程這些外設(shè)去驅(qū)動(dòng)外部的各種設(shè)備。

? ? ? ? ??

什么是寄存器?

寄存器是CPU內(nèi)部用來(lái)存放數(shù)據(jù)的小型存儲(chǔ)區(qū)域,用于暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果,所以被叫做寄存器。?? ?

寄存器電路是由鎖存器或觸發(fā)器構(gòu)成的,一個(gè)觸發(fā)器或鎖存器儲(chǔ)存一位二進(jìn)制數(shù),一個(gè)8為寄存器至少含8個(gè)觸發(fā)器或鎖存器。

寄存器的功能是存儲(chǔ)二進(jìn)制代碼,它是由具有存儲(chǔ)功能的觸發(fā)器組合起來(lái)構(gòu)成的。一個(gè)觸發(fā)器可以存儲(chǔ)1位二進(jìn)制代碼,故存放n位二進(jìn)制代碼的寄存器,需用n個(gè)觸發(fā)器來(lái)構(gòu)成。也可以說(shuō)是給特定功能的單元取的別名,寄存器是單片機(jī)內(nèi)部的控制機(jī)構(gòu)。

寄存器地址=總線基地址+外設(shè)基于總線地址的偏移量+寄存器相對(duì)于外設(shè)基地址的偏移量

存儲(chǔ)器映射:芯片廠商給存儲(chǔ)器分配地址的過(guò)程就成為存儲(chǔ)器映射,如果給存儲(chǔ)器再分配一個(gè)地址就叫存儲(chǔ)器重映射。寄存器是一類特殊的存儲(chǔ)器,它的每個(gè)位都有特定的功能,可以實(shí)現(xiàn)對(duì)外設(shè)功能的控制,給寄存器的地址命名的過(guò)程就叫做寄存器映射。

在STM32中,ST官方將各個(gè)外設(shè)寄存器的地址進(jìn)行了封裝,總線或外設(shè)都以他們的名字作為宏名,最后把寄存器封裝成結(jié)構(gòu)體。在操作寄存器時(shí),我們可以直接使用宏定義好的結(jié)構(gòu)體類型指針,使用時(shí)直接用相應(yīng)指針對(duì)結(jié)構(gòu)體成員寄存器進(jìn)行訪問(wèn)即可。

接下來(lái)的一段時(shí)間里會(huì)對(duì)STM32重新進(jìn)行認(rèn)識(shí),會(huì)對(duì)其中的的相關(guān)知識(shí)進(jìn)行梳理。歡迎關(guān)注我的公眾號(hào),晚霽見(jiàn)月,我們一同交流學(xué)習(xí)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-836784.html

到了這里,關(guān)于STM32之寄存器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32存儲(chǔ)器映射以及寄存器映射

    STM32存儲(chǔ)器映射以及寄存器映射

    目錄 1.STM32的尋址范圍? 2.存儲(chǔ)器映射 3.存儲(chǔ)器功能劃分(以STM32F1為例) 4.寄存器映射 1.32位單片機(jī)有32根地址線,每根地址線有兩種狀態(tài),導(dǎo)通或者不導(dǎo)通。 2.單片機(jī)內(nèi)存地址訪問(wèn)的存儲(chǔ)單元是按字節(jié)編址的,而不是bit。 比如我們要訪問(wèn)0x01這個(gè)地址,訪問(wèn)的其實(shí)是一個(gè)字節(jié)的空

    2024年04月23日
    瀏覽(47)
  • STM32-ADC電壓采樣實(shí)驗(yàn)(寄存器版)

    STM32-ADC電壓采樣實(shí)驗(yàn)(寄存器版)

    STM32F10X系列支持三路ADC,其ADC通道及對(duì)應(yīng)IO口如下表所示: 其能接受的電壓輸入范圍一般為0-3.3V(V REF- ≤ V IN ≤ V REF+ ),因此,如果需要測(cè)量超出0-3.3v量程范圍的電壓數(shù)據(jù),需要在外圍硬件增加分壓電阻,將電路轉(zhuǎn)換到0-3.3V量程范圍內(nèi)再進(jìn)行采集。 這里用于做ADC采集的引腳使

    2024年02月15日
    瀏覽(27)
  • STM32的GPIO操作(寄存器&HAL)

    STM32的GPIO操作(寄存器&HAL)

    (注:此為樂(lè)某學(xué)習(xí)記錄,若有出錯(cuò)的地方歡迎各位指出?。?本人使用的開(kāi)發(fā)板的芯片是STM32H743XIH6,所以外設(shè)也是根據(jù)此芯片來(lái)介紹。 在使用HAL庫(kù)配置的時(shí)候,需要安裝STM32CubeMX。此軟件可在ST官網(wǎng)下載,剩下的安裝步驟比較簡(jiǎn)單,不會(huì)單獨(dú)出篇進(jìn)行講解。 STM32CubeMX下載網(wǎng)址

    2024年02月04日
    瀏覽(33)
  • STM32微機(jī)系統(tǒng)框架、內(nèi)存、存儲(chǔ)器、寄存器

    STM32微機(jī)系統(tǒng)框架、內(nèi)存、存儲(chǔ)器、寄存器

    大家好,我是 杰哥嵌入式開(kāi)發(fā) 最近在出定時(shí)器系列, 但是線下班有一些學(xué)生在學(xué)習(xí)完C語(yǔ)言之后, 在51接觸各種寄存器和對(duì)軟件代碼各種操作是如何在單片機(jī)系統(tǒng)中起到作用的感到非常的不解, 經(jīng)過(guò)我的初步分析,是對(duì)嵌入式微機(jī)系統(tǒng)的大概雛形系統(tǒng)框架不熟悉導(dǎo)致。 所以

    2024年02月06日
    瀏覽(35)
  • STM32 寄存器操作 GPIO 與下降沿中斷

    STM32 寄存器操作 GPIO 與下降沿中斷

    寄存器本質(zhì)就是一個(gè)開(kāi)關(guān),當(dāng)我們把芯片寄存器配置指定的狀態(tài)時(shí)即可使用芯片的硬件能力。 寄存器映射表則是開(kāi)關(guān)的地址說(shuō)明。對(duì)于我們希望點(diǎn)亮 GPIO_B 的一個(gè)燈來(lái)說(shuō),需要關(guān)注以下的兩個(gè)寄存器: ? 對(duì)于我們實(shí)現(xiàn)希望點(diǎn)亮一個(gè)燈的需求來(lái)說(shuō),不僅需要配置配置 GPIO_B 的時(shí)

    2024年02月20日
    瀏覽(28)
  • keil5 查看stm32 寄存器的值

    keil5 查看stm32 寄存器的值

    1 查看芯片內(nèi)部寄存器的值,首先是在仿真狀態(tài)下,首先仿真,程序運(yùn)行。 2 點(diǎn)擊菜單欄的 View - System viewer ,右側(cè)便會(huì)出現(xiàn)芯片的所有寄存器(如果沒(méi)有,需要添加),點(diǎn)擊要查看的寄存器,便會(huì)出現(xiàn)在側(cè)邊欄上 可以查看值,也可以直接設(shè)置寄存器的值。 3 如果沒(méi)有出現(xiàn),如下

    2024年01月24日
    瀏覽(33)
  • 【STM32調(diào)試】寄存器調(diào)試不良問(wèn)題記錄持續(xù)版

    【STM32調(diào)試】寄存器調(diào)試不良問(wèn)題記錄持續(xù)版

    記錄一些stm32調(diào)試過(guò)程中:不易被理解、存在使用誤區(qū)、不清不楚、是坑、使用常識(shí)等方面的一些記錄。本記錄只包含stm32的內(nèi)核以及外設(shè)等寄存器的調(diào)試,不包含業(yè)務(wù)方面。 使用低功耗功能前是否需要打開(kāi)PWR時(shí)鐘? 是需要先打開(kāi)PWR時(shí)鐘的,否則無(wú)法喚醒。 睡眠模式、停機(jī)模

    2024年01月18日
    瀏覽(37)
  • 深度理解STM32的串口實(shí)驗(yàn)(寄存器)【保姆級(jí)教程】

    深度理解STM32的串口實(shí)驗(yàn)(寄存器)【保姆級(jí)教程】

    USART—通用同步異步收發(fā)接收器,是一個(gè)串行通信設(shè)備,可以和外部設(shè)備進(jìn)行靈活的全雙工數(shù)據(jù)交換,有別于USART還有一個(gè)UART(在原來(lái)的基礎(chǔ)上裁剪掉了同步通信功能(時(shí)鐘同步)),串行通信一般是以幀格式傳輸數(shù)據(jù),一幀一幀的傳。 協(xié)議層: 串口通信的一個(gè)數(shù)據(jù)包包含從

    2023年04月15日
    瀏覽(25)
  • 【STM32】讀寫(xiě)B(tài)KP備份寄存器&RTC實(shí)時(shí)時(shí)鐘

    【STM32】讀寫(xiě)B(tài)KP備份寄存器&RTC實(shí)時(shí)時(shí)鐘

    目錄 BKP BKP簡(jiǎn)介 BKP基本結(jié)構(gòu) BKP測(cè)試代碼 RTC RTC簡(jiǎn)介 RTC框圖 RTC基本結(jié)構(gòu) 硬件電路 RTC操作注意事項(xiàng) 接線圖 初始化 使用BKP解決只初始化一次時(shí)間 ?初始化參考代碼 RTC設(shè)置時(shí)間 RTC讀取時(shí)間 完整代碼 MyRTC.c MyRTC.h main.c BKP(Backup Registers)備份寄存器 BKP可用于存儲(chǔ)用戶應(yīng)用程序數(shù)據(jù)

    2024年04月22日
    瀏覽(41)
  • 【STM32 CubeMX】HAL庫(kù)的本質(zhì)讀寫(xiě)寄存器

    【STM32 CubeMX】HAL庫(kù)的本質(zhì)讀寫(xiě)寄存器

    在嵌入式系統(tǒng)開(kāi)發(fā)中,HAL(Hardware Abstraction Layer)庫(kù)是一個(gè)重要的概念,它提供了一個(gè)抽象層,使開(kāi)發(fā)者可以更容易地編寫(xiě)可移植的代碼,而不必?fù)?dān)心底層硬件的細(xì)節(jié)。STM32CubeMX是一款由STMicroelectronics提供的工具,用于生成STM32微控制器的初始化代碼,其中包括了HAL庫(kù)的使用。

    2024年02月20日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包