娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

STM32中的位帶操作: 名字為位帶操作,實際上是對位的操作,位操作就是可以單獨的對一個比特位讀和寫,這個在 51 單片機中非常常見。 51 單片機中通過關鍵字 sbit 來實現位定義, STM32 沒有這樣的關鍵字,而是通過訪問位帶別名區來實現。STM32 的全部寄存器都可以通過訪問位帶別名區的方式來達到訪問原始寄存器比特位的效果,這比 51 單片機強大很多。因為 51 單片機里面并不是所有的寄存器都是可以比特位操作,有些寄存器還是得字節操作,比如 SBUF。


51單片機中的位操作:

51單片機中可以對寄存器實現單個位的操作,靠的就是關鍵字sbit,如

sbit led=P1^0; led=1;就可實現對P1.0位置1的效果。


為什么STM32不推崇直接進行位操作?

本人認為STM32是32位MCU,一次處理32位數據,所以一次只處理一位的數據未必大材小用了,除非特殊情況,否則都以32位處理。


如何處理STM32中要對某一位進行操作時的情況?

要知道STM32中采用庫函數編程,所以有很多的對位操作的任務都用具體的函數來完成,而這些函數都已經做好了我們只需要知道怎么用就行。但我們仍然可以自己實現位操作,這種神操作就是位帶操作 。


位帶區與位帶區別名:

在 STM32 中,有兩個地方實現了位帶,一個是 SRAM 區的最低 1MB 空間,令一個是外設區最低 1MB 空間。這兩個 1MB 的空間除了可以像正常的 RAM 一樣操作外,他們還有自己的位帶別名區,位帶別名區把這 1MB 的空間的每一個位膨脹成32 位 (要知道 STM32 的系統總線是 32 位的,按照 4 個字節訪問的時候是最快的,所以膨脹成 4 個字節來訪問是最高效的。),當訪問位帶別名區的這些字時,就可以達到訪問位帶區某個比特位的目的。


位帶區就是就是可以進行位帶操作的寄存器的映射地址。


位帶區別名可以理解為將位帶區每一個位都膨脹32倍(用一個字節代表一個位,以便于32位MCU操作)后的地址。


如何實現位帶操作?

要進行位帶操作需要知道被操作的位的地址,因為SRAM和外設中都可以位帶操作,所以形式上可以將位帶操作歸納為倆個公式。


對于位帶區的某個比特,記它所在字節的地址為 A,位序號為 n(0<=n<=7),則其在位帶區別名地址為:


外設:AliasAddr= =0x42000000+ (A-0x40000000)*8*4 +n*4

SRAM:AliasAddr= =0x22000000+ (A-0x20000000)*8*4 +n*4


用外設解釋公式:0X42000000 是外設位帶別名區的起始地址, 0x40000000 是外設位帶區的起始地址,(A-0x40000000)表示該比特前面有多少個字節,一個字節有 8 位,所以8,一個位膨脹后是 4 個字節,所以4, n 表示該比特在 A 地址的序號,因為一個位經過膨脹后是四個字節,所以也*4。

當然,也可以將倆個公式合二為一:


 // 把“位帶地址+位序號”轉換成別名地址的宏

AliasAdd = (addr & 0xF0000000)+0x02000000+((addr &0x00FFFFFF)<<5)+(bitnum<<2)


知曉了位帶區別名的地址,然后將此地址轉換為指針類型就可以通過位帶操作對原始的為進行操作。

附上野火的位帶操作代碼


#include "stm32f10x.h"

#include "./led/bsp_led.h"


#define PCout(n) (*(unsigned int*)(((GPIOC_BASE+0x0c) & 0xF0000000)+0x02000000+(((GPIOC_BASE+0x0c) &0x000FFFFF)<<5)+(n<<2)))

#define PBout(n) (*(unsigned int*)(((GPIOB_BASE+0x0c) & 0xF0000000)+0x02000000+(((GPIOB_BASE+0x0c) &0x000FFFFF)<<5)+(n<<2)))


void delay(uint32_t count)

{

for(; count!=0; count--);

}


int main(void)

{

LED_GPIO_Config();  //LED初始化函數

while(1)

{

PCout(2) = 1;

//GPIO_SetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);

delay(0xfffff);

PCout(2) = 0;

//GPIO_ResetBits(LED1_GPIO_PORT, LED1_GPIO_PIN);

delay(0xfffff);

PCout(3) = 1;

//GPIO_SetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);

delay(0xfffff);

PCout(3) = 0;

//GPIO_ResetBits(LED2_GPIO_PORT, LED2_GPIO_PIN);

delay(0xfffff);

}


代碼簡述:用宏定義的方法來操作GPIOC中的ODR寄存器和IDR寄存器中的某一位來實現led燈的亮滅


#define PCout(n) (*(unsigned int*)(((GPIOC_BASE+0x0c) & 0xF0000000)+0x02000000+(((GPIOC_BASE+0x0c) &0x000FFFFF)<<5)+(n<<2)))


關鍵字:STM32  位帶操作  32位 引用地址:STM32—位帶操作

上一篇:利用ST-LINK配合ST-LINK Utility 將bin文件下載到STM32的FLASH中
下一篇:STM32—重定向printf和getchar函數到串口

推薦閱讀

與7月份相比,8月份所有尺寸液晶面板的價格都有上浮,浮動范圍在4-5美元。而后面整機的售價則出現相反的情況,所有尺寸整機售價都在下降,其中65英寸和49英寸整機的售價降價較為明顯。?奧維云網分析指出,造成面板價格上行的原因有兩個:一是供應端,5月和6月面板廠通過低價專案的方式清理了庫存,有了喊漲的底氣,另外其實三季度原本預計的新增產能,沒...
據外媒報道,奧迪正在與比亞迪進行談判,將后者納入其電池供應商之列。受此消息刺激,周五比亞迪港股一路上揚,收盤大漲逾6%,收報40.6元/股。據悉,比亞迪的電池將用于基于奧迪和保時捷共同開發的PPE(Premium Platform Electric)平臺打造的高端車型,首批車型將于2021年左右進入市場。并且,二者還探討了深化合作的可能性,奧迪可能將入股比亞迪電池...
8月31日,據國外移動數碼觀察媒體digitimes分析,iPhone 12系列在今年的出貨量在6300萬部到6800萬部之間,較去年iPhone 11同期的出貨量將下滑超過500萬部。digitimes認為,受疫情影響,iPhone 12系列的大規模量產時間和官方推出時間,較往年可能會推遲4到6周。在量產和推出時間延遲之后,iPhone 12在今年的銷售時間也將縮短,進而影響今年的出貨量。不...
用于真正的重型設備:儒卓力提供威世981 HE精密電位計產品系列即使在惡劣環境中也能夠保持可靠和精確:威世981 HE 系列精密電位計采用非接觸式霍爾效應技術運行,非常耐用并能夠承受高振動。威世提供空心軸或D軸以及彈簧加載型款,具有高達±0.5%的精確線性度以及出色的重復性能。得益于先進的霍爾效應技術,981 HE 系列傳感器能夠在最高20 G的高頻...

史海拾趣

問答坊 | AI 解惑

電子鐘數碼管很閃

我做了電子鐘。為什么都是很閃眼睛,好像電壓不穩似的,我看公交上的沒有這種現象!不知怎么回事???…

查看全部問答∨

用過采樣和求均值提高ADC分辨率

用過采樣和求均值提高ADC分辨率…

查看全部問答∨

QT的交差編譯

昨天對QT4.5.3進行了三次的編譯,結果都是一個結果都是leaving dmoes/browser 真的不懂是什么原因,怎么編譯QT就這么的難啊 各位談一下編譯QT的感想吧…

查看全部問答∨

冰天雪地裸身跪求——一一個507kHz的正弦或方波

在做一個實驗項目 其中要用507kHz的無線通信 可是信號發生一直不好 本來是用反相器,波形有點三角,頻率配的還不錯 可是一進模擬開關就萎了 所以再求一個電路能發生507kHz阿 學長說用鎖相環+晶振吶,能這樣最好啊。。 本人模電學的很爛很爛 ...…

查看全部問答∨

C# 能開發winxpe嗎?

請教各位大俠,xpe多媒體支持強不強,我的程序是C#開發的,這個系統支持嗎?…

查看全部問答∨

如何講光敏二極管的電平輸入單片機?

一對收、發光敏二極管,要判斷二極管間有、無遮擋,并將接受光敏二極管的狀態如何輸入單片機,需要進行A/D變換嗎?…

查看全部問答∨

請問同仁:STM32F207

請問同仁:STM32F207能否實現芯片加密??…

查看全部問答∨

模擬spi調試ads1247遇到寄存器的值讀不出來

最近調ti的ads1247,用的模擬spi方式,示波器看了spi的信號電平都有的,但是寄存器的值就是讀不出來,奇怪了。…

查看全部問答∨

有關CD4069組成振蕩電路的問題

我想做一個無線充電的模塊,這個圖是我在網上找的,是該模塊的振蕩部分           我想請以下幾個問題:          1、圖上那個晶振和R1再經過3個非門出來后為什么是方波,每個非門 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 石嘴山市| 榆林市| 建宁县| 宁远县| 治县。| 洛隆县| 滕州市| 海口市| 类乌齐县| 新营市| 安泽县| 镇江市| 平和县| 德州市| 遂川县| 浮梁县| 东辽县| 鸡东县| 灵丘县| 涞水县| 道真| 中卫市| 龙川县| 和平县| 德清县| 土默特右旗| 洪湖市| 泰州市| 大埔区| 资阳市| 大悟县| 和平区| 大姚县| 资中县| 商河县| 安西县| 龙山县| 汽车| 正安县| 六安市| 门头沟区|