STM32中控制I/O口的暫存器們
阿新 • • 發佈:2019-01-31
引言
STM32的I/O口由軟體配置,有八種模式:輸入懸浮、輸入上拉、輸入下拉、模擬輸入、開漏輸出、推輓輸出、推輓式複用功能及開漏複用功能。
每個I/O口由7個暫存器控制,分別是:
模式配置的埠暫存器 32位 CRL、CRH
資料暫存器 32位 IDR、ODR
置位/復位暫存器 32位 BSRR
復位暫存器 16位 BRR
鎖存暫存器 32位 LCKR
主要介紹一下CRL、CRH、IDR、ODR
一 CRL、CRH
CRL控制低8位I/O口,CRH控制高8位I/O口,下圖是《STM32參考手冊》和《原子教你玩STM32》中關於CRL的介紹。CRL共32位,每四位控制一個I/O口,所以控制8個I/O口。CRH與CRL類似,就不做介紹了。
GPIOx->CRL&=0xfffffff0;//x:A~E;用哪一位I/O口先置零
GPIOx->CRL|=0x00000003;//設定I/O口的功能
二 IDR、ODR
IDR為埠輸入暫存器,只用了低16位,且為只讀暫存器。ODR為埠輸出暫存器,也只用了低16位,可讀可寫,該暫存器讀出的資料可以判斷I/O口的輸出狀態,向該暫存器寫資料可以控制I/O口的輸出電平。下圖為《STM32參考手冊》中關於IDR和ODR的介紹。
GPIOx->ORD|=1<<5;//第五位輸出高電平
更多精彩內容,歡迎關注【跟微控制器談戀愛】