stm32点亮LED的有关寄存器配置CRL、CRH、IDR、ODR
1、先了解io口
32的io口可以由軟件配置寄存器為8種模式:
單io口寄存器必須按32位字被訪問
32 的每個 io端口 都有 7 個寄存器控制:
兩個32位 端口配置 寄存器-- CRL和CRH 兩個32位 數據 寄存器-- IDR和ODR 一個32位 置位/復位 寄存器-- BSRR 一個16位 復位 寄存器-- BRR 一個32位 鎖存 寄存器-- LCKR常用的4個寄存器-- CRL、CRH、IDR、ODR
2、來看CRL和CEH:
CRL 和 CRH 控制著每個 IO 口的模式及輸出速率
io口配置表:
輸出模式配置:
端口低配置寄存器 CRL 的描述:
此寄存器的復位值:0x4444 4444
CRL 控制著那幾個IO端口(A–G)的低 8 位端口的模式,
例如:A0—A7由CRL控制,A8—A15由CRH控制
每個IO口占用CRL的4個位,高兩位為CNFy[1:0],低兩位為MODE
下面有幾個配置模式常用的值:
- 0X0 表示模擬輸入模式(ADC 用) - 0X3 表示推挽輸出模式(做輸出口用,50M 速率) - 0X8 表示上/下拉輸入模式(做輸入口用) - 0XB 表示復用輸出(使用 IO 口的第二功能,50M 速率)舉例:將A端口的第11位設置為上拉輸入,12位設置為推挽輸出
11位和12位屬于高8位,由CRH控制,然后一個引腳占4位 11=1000 12=1110 根據上表來配置的
代碼的寫法:
GPIOC->CRH &= 0XFFF00FFF; //清除原來的設置 GPIOC->CRH |= 0X00038000; //配置11輸入 12輸出 GPIOC->ODR = 1<<11; //11上拉3、下面到 IDR 寄存器
IDR 是一個端口輸入 數據寄存器,只用了低 16 位。該寄存器為 只讀 寄存器,并且只能以 16 位的形式讀出
4、ODR 是一個端口輸出數據寄存器
也只用了低 16 位。該寄存器為可 讀寫,從該寄存器讀出來的數據可以用于判斷當前 IO 口的輸出狀態。而向該寄存器寫數據,則可以控制某個 IO 口的輸出電平。該寄存器的各位描述如下圖所示
配置好這幾個寄存器,就可以讓32的IO口來控制LED燈了
總結
以上是生活随笔為你收集整理的stm32点亮LED的有关寄存器配置CRL、CRH、IDR、ODR的全部內容,希望文章能夠幫你解決所遇到的問題。