STM32 BSRR暫存器和BRR暫存器

2021-09-30 18:27:43 字數 598 閱讀 4340

置gpioa->bsrr低16位的某位為』1』,則對應的i/o埠管腳置』1』;

置gpioa->bsrr低16位的某位為』0』,則對應的i/o埠管腳保持不變。

置gpioa->bsrr高16位的某位為』1』,則對應的i/o埠管腳置』0』;

置gpioa->bsrr高16位的某位為』0』,則對應的i/o埠管腳保持不變。

置gpioa->brr低16位的某位為』1』,則對應的i/o埠管腳置』0』;

置gpioa->brr低16位的某位為』0』,則對應的i/o埠管腳保持不變。

明白以上特性後就可以直接向51一樣快速改變一組資料了。而不用一位位的操作。

例:要設定gpioa的0、5、10、11為高,而保持其它i/o口不變,則

gpioa->bsrr = 0x0c21(0000 1100 0010 0001);

也可以直接操作暫存器:

gpioa->bsrr = data & 0xff00;

gpioa->brr = ~data & 0xff00;

STM32 GPIO BRR和BSRR暫存器

使用brr和bsrr暫存器可以方便地快速地實現對埠某些特定位的操作,而不影響其它位的狀態。比如希望快速地對gpioe的位7進行翻轉,則可以 gpioe bsrr 0x80 置 1 gpioe brr 0x80 置 0 如果使用常規 讀 改 寫 的方法 gpioe odr gpioe odr 0x80...

STM32蜂鳴器 暫存器

這次實驗犯了個笑話,竟然在巨集定義後面加分號.就像這樣 define 大家千萬不要學我,結果報錯expected expression,還苦惱半天,想為啥操作不了暫存器了?我真愚蠢!剛開始我也不會寫這些東西,其實摸清套路就好,rcc時鐘使能 gpio初始化 相關暫存器初始化 延時函式 串列埠等初始化...

STM32暫存器對映

1.對映即將記憶體的某段位址與某一暫存器對應,微控制器對函式的操作底層是操作暫存器,而暫存器最終是操作記憶體上對應的單元,2.各個暫存器對應的位址都是在st定義的起始位址上層層偏移得到 3.想要實現某功能可直接對此段記憶體寫進相應的值,即可賦予某一功能 4.stm32底層實際是先定義出外設基位址,然...