一、概念性
什么是位帶操作
位帶操作就是可以單獨對一個比特位讀和寫。在51單片機中,通過sbit關鍵字來實現位定義。
對于STM32位帶區和位帶別名區的理解
STM32里沒有這樣的關鍵字,但可以通過位帶別名區來實現。
想要控制這些bit,就可以通過訪問和控制位帶別名區的一個32bit的字(因為stm32單片機以32bit為單位操作最為高效),來控制位帶區內的任意一位。
一個位帶區的位對應位帶別名區的四個字節(32bit)。
SRAM存儲代碼的區域。
二 、位帶區和位帶別名區的地址轉換
- 地址關系
(一) 外設位帶區和位帶別名區
AliasAddr = 0x4200 0000 + (Addr-0x4000 0000)*8*4 + n*4
公式的解釋
(Addr-0x4000 0000)得到的是相差幾個字節
*8是因為一個字節8個位
*4是因為一個位在位帶別名區內要膨脹成4個位
+ n*4 是因為某一個位號在位帶別名區內要膨脹成4個位
(二) SRAM位帶區和SRAM位帶別名區
AliasAddr = 0x2200 0000 + (Addr-0x2000 0000)*8*4 + n*4
(三) 外設和SRAM統一轉化處理公式
((addr & 0xF000 0000)+0X0200 0000 + ((addr&0x00FF FFFF)<<5)+(bitnum<<2))
addr 要操作的位所在寄存器地址
bit num 寄存器的第幾位
三、實操
(一) 代碼分析
#include 'stm32f10x.h'#include 'bsp_led.h'#include 'bsp_key.h'#define GPIOB_ODR_Addr (GPIOB_BASE+0x0C)#define PBout(n) *(unsigned int *)((GPIOB_ODR_Addr & 0xF0000000)+0X02000000+((GPIOB_ODR_Addr&0x00FFFFFF)<<5)+(n<<2))int main(void){
LED_GPIO_Config(LED_R_GPIO_PIN);
while(1)
{
PBout(5) = 1;
//GPIO_ResetBits(LED_GPIO_PORT,LED_R_GPIO_PIN);
Delay(0xFFFFF);
PBout(5) = 0;
//GPIO_SetBits(LED_GPIO_PORT,LED_R_GPIO_PIN);
Delay(0xFFFFF);
}}
位帶公式
((addr & 0xF000 0000)+0X0200 0000 + ((addr&0x00FF FFFF)<<5)+(bitnum<<2))
位帶宏定義
#define GPIOB_ODR_Addr (GPIOB_BASE+0x0C)#define PBout(n) *(unsigned int *)((GPIOB_ODR_Addr & 0xF0000000)+0X02000000+((GPIOB_ODR_Addr&0x00FFFFFF)<<5)+(n<<2))
位帶公式,經編譯后,運算得到的值只是一個數,芯片無法識別為地址。
要想識別為地址,需要將這個數強制類型轉換為地址,加(unsigned int *)
經過轉換后,要用一個指針指向此地址,需要加``*`
變量n在PBout(n)作為一個未知數的作用,#define很強啊。
綜上,實現位帶操作,需要兩個宏定義
一是某一外設地址=基地址+偏移地址
二是將Pxout(n)、Pxint(n)進行宏定義
上一篇:GPIO8種模式的原理
下一篇:單片機位操作詳解
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- 使用 Semtech 的 SC2516 的參考設計
- 使用 IXYS 的 Z8917529FSCRXXX 的參考設計
- 使用 Broadcom Inc 的 ACPL-339J 的參考設計
- 使用 ROHM Semiconductor 的 BD49K46G-TL 的參考設計
- LT1076CT-5 5V 降壓型開關穩壓器的典型應用電路
- 適用于汽車應用的 A5970D 1A 降壓穩壓器的典型應用
- TRK-S12ZVHY64: 適用于摩托車儀表板應用的S12 MagniV
- LTC6262ITS8 低功率、低失真 ADC 驅動器、運算放大器的典型應用
- AD9913/PCBZ,用于 AD9913、10 位、250 MSPS 數模轉換器的評估板
- LTC3830、3.3V 至 5V 反相轉換器
- 方案分享 | ARXML 規則下 ECU 總線通訊與 ADTF 測試方案 方案分享 | ARXML 規則下 ECU 總線通訊與
- 車載SerDes產業起飛!國產新品密集炸場
- 出貨量激增1.34倍! 5G車規模組成標配,三大廠商新品同臺競技
- 6月新能源市場:零跑創新高;比亞迪海外突破;理想滑坡
- 基于中科芯車規MCU的LED矩陣大燈應用方案
- 蘋果被判侵犯3G專利,需向西班牙公司TOT賠償1.1億美元
- 從設計概念到 FPGA 原型僅需數分鐘,印度 InCore 完成 SoC Generator 平臺硅驗證
- 消息稱因難尋客戶,三星推遲美國芯片工廠的完工時間
- BOE(京東方)聯合榮耀打造榮耀Magic V5 以領先LTPO技術打造行業新標桿
- 華為ADS 4發布:多傳感器融合,提升自動駕駛安全性