找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2765|回復(fù): 0
收起左側(cè)

STM32位帶操作的實(shí)現(xiàn)解讀 附源程序

[復(fù)制鏈接]
ID:763998 發(fā)表于 2020-6-20 00:47 | 顯示全部樓層 |閱讀模式

位帶的概述

2.1.1 什么是位帶操作?

              先認(rèn)識(shí)兩個(gè)概念:位帶區(qū)、位帶別名區(qū)。

位帶區(qū):支持位帶操作的地址區(qū)。

              位帶別名區(qū):位帶區(qū)映射的地址區(qū)

由圖可知,位帶區(qū)的每一位,在位帶別名區(qū)中都有32位對(duì)應(yīng)。(假裝理解:在位帶區(qū)中它是1位,在位帶別名區(qū)中它膨脹了,為32位)


位帶操作:

簡(jiǎn)單理解,能對(duì)單片機(jī)的某一位進(jìn)行單獨(dú)操作。

復(fù)雜理解,對(duì)位帶別名區(qū)的操作,最終會(huì)映射到位帶區(qū)中。理解:你對(duì)位帶別名的某32位地址寫(xiě)入1,相當(dāng)于在這個(gè)32位地址對(duì)應(yīng)的位帶區(qū)中的某一位寫(xiě)1。

2.1.2位帶操作的細(xì)節(jié)?

              在位帶區(qū)中,每個(gè)位(比特)都映射到別名地址區(qū)的一個(gè)(32位)字——這字只有 LSB (最低位)有效。

              理解:在位帶別名區(qū)中某個(gè)32位地址中寫(xiě)入0x1,0x3,0x7,0xf是一樣的效果,都映射到位帶區(qū)中的某一位寫(xiě)入1。

支持位帶操作的兩個(gè)內(nèi)存區(qū)的范圍是:

0x2000_0000-0x200F_FFFF( SRAM 區(qū)中的最低 1MB)

0x4000_0000-0x400F_FFFF(片上外設(shè)區(qū)中的最低 1MB)

2.1.3 位帶操作的好處

《1》書(shū)寫(xiě)方便、使代碼簡(jiǎn)潔

              以前對(duì)某一位進(jìn)行操作時(shí)(寫(xiě)操作)

                            讀----讀取整個(gè)寄存器

                            改----屏蔽不需要的位,修改需要的位

                            寫(xiě)----把修改好的值,寫(xiě)回寄存器

              現(xiàn)在對(duì)某一位進(jìn)行操作時(shí)(寫(xiě)操作)

                            寫(xiě)----確定需要修改的位,寫(xiě)入對(duì)應(yīng)位帶別名區(qū)

《2》安全

              以前讀、改、寫(xiě),是三個(gè)步驟,在多中斷系統(tǒng)中,存在數(shù)據(jù)寫(xiě)入丟失的風(fēng)險(xiǎn)。

              位帶操作、一步到位、直接寫(xiě),不會(huì)存在數(shù)據(jù)寫(xiě)入丟失風(fēng)險(xiǎn)。底層是執(zhí)行一個(gè)原子操作的讀、改、寫(xiě)過(guò)程,不允許被中斷。

2.1.4 位帶操作的實(shí)現(xiàn)

映射公式:

              理解公式從這個(gè)角度理解:位帶操作的位帶區(qū)與位帶別名區(qū)的關(guān)系是:一個(gè)比特位(1位)與一個(gè)字(32位=4個(gè)字節(jié))之間的映射

1比特位與4個(gè)字節(jié)的對(duì)應(yīng)

2.2 位帶軟件實(shí)現(xiàn)

2.2.1 片上外設(shè)位帶實(shí)現(xiàn)

以PA端口為例:

第一步:找出PA端口數(shù)據(jù)寄存器對(duì)應(yīng)的地址。

復(fù)盤(pán):

              0x4000 0000

              0x0002 0000

              0x0000 0000

              0x0000 0014

相加結(jié)果:

              0x4002 0014

第二步:根據(jù)公式,求出位帶區(qū)別名區(qū)中地址

2.3補(bǔ)充

位帶操作開(kāi)始難以理解其實(shí)現(xiàn)原理,但漸漸喜歡位帶操作,漸漸了解一點(diǎn)一點(diǎn)。

《1》位帶操作,實(shí)現(xiàn)51類(lèi)似的IO控制功能

《2》位帶區(qū)中的每一比特位,都映射到別名區(qū)的一個(gè)字(4個(gè)字節(jié))(綁定關(guān)系)

《3》對(duì)別名地址的訪(fǎng)問(wèn)最終作用到位帶區(qū)的訪(fǎng)問(wèn)上

51hei.png


以上文檔51hei下載地址:

位帶操作.docx (1.91 MB, 下載次數(shù): 22)

頭文件: M4位帶操作文件.zip (910 Bytes, 下載次數(shù): 16)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表