一,及哦地址
基地址base的定義: ↓
定義完是這個:
GPIOA的地址就是以上的代表
2寄存器:
通過bsrr來改變odr寄存器,左移16位就是把0-15位的給移到高位的保留區,這樣就歸零了
3,項目寄存器實操 :
//PA11---
#define DHT11_IO_IN() {GPIOA->CRH&=0XFFFF0FFF;GPIOA->CRH|=8<<12;}
一個寄存器是32位,而一個引腳是4位控制,一個寄存器可以控制8個引腳
一個端口有16個引腳,所以要兩個寄存器控制一個端口的引腳,分為高(8-15)低(0-7)寄存器√
(
crh的每一位(0,F)對應4位控制寄存器。0是從高寄存器第八位開始數,11引腳就是從CRH高--第八位開始,8,9,10,11,第11位就為0)
哈哈搞亂了寫這里的時候:::直接就是前一句是清零寄存器,后一句是編輯寄存器
高寄存器的為0就是對應4個二進制位為0,并與運算,清零
后一句就是這么編輯呢?就是用每個引腳對應 0000這4位二進制來控制的,我們寫個8對應1000,就有:
so! this 句:#define DHT11_IO_OUT() {GPIOA->CRL&=0XFFFFFFF0;GPIOA->CRL|=3;}?