crh寄存器_CRL,CRH寄存器
在移植ds18b20時(shí)看到這樣一段代碼
#define DS18B20_IO_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
#define DS18B20_IO_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
什么意思呢,然后查了一下手冊
發(fā)現(xiàn)CRL和CRH寄存器使用是基本相同的:都是配置端口工作模式,以CRH為例,一共有4個(gè)字節(jié),從左往右依次配置PIN15---->PIN8,比如我要配置PIN8,那么我就需要關(guān)注
CRH的最右邊的4個(gè)比特,0xFFFF FFF0(0所代表的4個(gè)比特就是需要配置的)
如果你的端口號(hào)小于8,就配置CRL,比如PA2;大于等于8就配置CRH
然后回到上面那兩行代碼:先看第一行
GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;
配置的CRH寄存器從又往左第4個(gè),依次數(shù)過來,pin8,pin9,pin10,pin11,配置的是PB11腳,0代表什么呢,按照上圖的定義,表示復(fù)位后的模擬輸入模式
然后??GPIOB->CRH|=8<<12;? ?把8變成二進(jìn)制就表示0100,01,表示浮空輸入,00表示輸入模式,<<12表示配置的PIN11引腳。
再看這一行:
{GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
同樣先復(fù)位,然后3變成二進(jìn)制就是0011,00,通用推挽輸出,11表示50mhz輸出模式
那么如果我們要配置PB2分別為模擬輸入和推挽輸出應(yīng)該怎么做呢,
首先pb2應(yīng)該配置CRL寄存器,其他和上面講的就一樣了
#define DS18B20_IO_IN() {GPIOB->CRL&=0XFFFFF0FF;GPIOB->CRL|=8<<8;}
#define DS18B20_IO_OUT() {GPIOB->CRL&=0XFFFFF0FF;GPIOB->CRL|=3<<8;}
總結(jié)
以上是生活随笔為你收集整理的crh寄存器_CRL,CRH寄存器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: crh寄存器_STM32的GPIO的寄存
- 下一篇: 十进制转k进制 k进制转十进制