1. 程式人生 > >STM32中控制I/O口的暫存器們

STM32中控制I/O口的暫存器們

 引言  

 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;//第五位輸出高電平





更多精彩內容,歡迎關注【跟微控制器談戀愛】