埠配置暫存器CRH怎麼弄,埠配置暫存器CRH

2022-12-01 16:35:57 字數 2873 閱讀 1403

1樓:匿名使用者

這是用i/o口暫存器定義的方法,其實就是

gpiog->crh&=0xffff0fff;gpiog->crh|=8<<12; //把pg11定義為輸入模式,即

gpiog->crh=0xffff8fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是1000.

同理gpiog->crh&=0xffff0fff;gpiog->crh|=3<<12;//是把pg11定義為推輓輸出模式,即

gpiog->crh&=0xffff3fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是0011.

2樓:a九尾妖姬

其實就是:

gpiog->crh&=0xffff0fff;gpiog->crh|=8<<12; //把pg11定義為輸入模式,即

gpiog->crh=0xffff8fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是1000.

同理gpiog->crh&=0xffff0fff;gpiog->crh|=3<<12;//是把pg11定義為推輓輸出模式,即

gpiog->crh&=0xffff3fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是0011.

gpio口配置是通過配置暫存器來進行的,每個gpio 埠有:

兩個32位配置暫存器(gpiox_crl,gpiox_crh)分別控制每個埠的高八位和低八位。如果io口是0-7號的話,則寫crl暫存器;如果io口是8-15號的話,則寫crh暫存器。

兩個32位資料暫存器(gpiox_idr,gpiox_odr)一個是隻讀作輸入資料暫存器,一個是隻寫作輸出暫存器。

一個32位置位/復位暫存器(gpiox_bsrr)。

一個16位復位暫存器(gpiox_brr)。

一個32位鎖定暫存器(gpiox_lckr)。

常用的io埠暫存器只有四個:crh,crl,idr,odr。

埠配置暫存器crh

3樓:匿名使用者

這是用i/o口暫存器定義的方法,其實就是

gpiog->crh&=0xffff0fff;gpiog->crh|=8<<12; //把pg11定義為輸入模式,即

gpiog->crh=0xffff8fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是1000.

同理gpiog->crh&=0xffff0fff;gpiog->crh|=3<<12;//是把pg11定義為推輓輸出模式,即

gpiog->crh&=0xffff3fff;則暫存器位配置cnf1、cnf0、mode1、mode0分別是0011.

4樓:匿名使用者

說一下我自己的理解吧,這個配置gpio的crh與crl分別對應的是gpio16個引腳的高8位於低8位,上面的**配置的是crh,也就是高8位的引腳,具體是哪個引腳因看第一個語句,gpiog->crh&=0xffff0fff;具體分析一下這個語句,

gpiog->crh=gpiog->crh&0xffff0fff;也就是用crh的第4位也就是gpiog的第11引腳的crh先清零,其他的位不變,然後再分析下面這個語句

gpiog->crh|=8<<12;把這個語句拆開可以這樣理解

gpiog->crh=gpiog->crh|8<<12;也就是說需要gpio->crh或上8<<12(這裡分析一下這個符號《與》該怎麼記憶呢,其實可以這樣箭頭向左就是左移,箭頭向右就是右移,這裡的8<<12也就是8左移12位,怎麼左移呢都用2進製表示一下就清楚了8用二進位制的話是1000左移12位是1000 0000 0000 0000,也就是0x8000,對於的就是複用推輓輸出模式)

gpiog->crh|=8<<12;這句話最終可以看成是這樣的gpiog->crh|=0x0000 8000;因為前面的模式已經清空了,這裡再重新配置

對於stm32,為什麼 gpioa->crh&=0x0f0fffff;的意思是pa13,15設定成輸入,**等

5樓:匿名使用者

是這樣的;所以pa13,15對應的是0x0(即0000);

0000 = cnf1 cnf0 mode1 mode0;mode00代表輸入模式,cnf 00在輸入模式下代表模擬輸入。

stm32的gpioa有16個引腳,但是gpioa也是暫存器嗎有多少位

6樓:

stm32是32位的,其中的所有暫存器都是32位的,但是不同暫存器中,有效的位數相應改變。

gpio有

埠配置低暫存器gpiox_crl:配置0-7引腳的模式,每個引腳配4bit,兩位用於配置輸入模式,兩位用於配置輸出模式

埠配置高暫存器gpiox_crh:配置8-15引腳的模式(同上)

埠輸入資料暫存器gpiox_idr(低16位有效)並行讀入16位資料

埠輸出資料暫存器gpiox_odr(低16位有效)並行輸出16位資料

埠位設定/清除暫存器gpiox_bsrr:拉高拉低相應引腳,1bit對應1引腳

埠位清除暫存器gpiox_brr(低16位有效):拉低相應引腳,同上

埠配置鎖存暫存器gpiox_lckr(17位有效)

x=a b c d e;

具體可以參看《stm32參考手冊》

為什麼程式不認識高位暫存器crh呢

7樓:匿名使用者

gel檔案裡的memory map設定了這個地址區域是不可讀的範圍。你要讀的話,需要修改gel檔案的相關讀寫許可權。但是最好先閱讀相關文件。

擅自更改memory map讀寫許可權可能會導致某些不可預計的錯誤。 檢視原帖》

暫存器間接定址方式中,運算元在中a通用暫存器 b

c.儲存單元 暫存器間接定址方式中,暫存器記憶體放的是 運算元的地址,而不是運算元 本回身,即運算元是答通過暫存器間接得到的,因此稱為暫存器間接定址。運算元放在ram某個儲存單元中,該單元的地址又放在暫存器r0或r1中。如要進行算術運算,要計算每班學員各科成績的平均值,可以編一個求平均成績的通用程式...

微控制器的特殊功能暫存器中哪些暫存器可以用暫存器定址

可以直接讀取,也就是暫存器定址是可以的,但80 ff的暫存器 52微控制器 必須採用暫存器間接定址。你用匯編嗎。如果用c的話就很簡單了。直接讀就好了。當然要看他的手冊,有的讀寫的時候,要先向暫存器寫入特定的值才能寫。比如你定義一個數 int dat dat gpiob 可以位bai定址的特殊功能du...

程式狀態字暫存器PSW到底屬於運算器還是控制器

狀態字暫存器psw屬於運算器部分,我們期末就考了這道題,是選擇題,你可以參考白中英主編版的權第四版組成原理,第128頁,還畫有cpu模型圖,控制器由程式計數器 指令暫存器 指令譯碼器 時序產生器 操作控制器組成 運算器由 算術邏輯單元 通用暫存器 資料緩衝暫存器dr,和狀態字暫存器psw組成。恩這個...