??【藍橋杯嵌入式】專題正在持續(xù)更新中,原理圖解析?,各模塊分析?以及歷年真題講解?都在這兒哦,歡迎大家前往訂閱本專題,獲取更多詳細信息哦??????
??本系列專欄 -??藍橋杯嵌入式_勾欄聽曲_0的博客
??歡迎大家? ??? 點贊??? 評論??? 收藏??
??個人主頁 -?勾欄聽曲_0的博客??
??希望本文能對你有所幫助,如有不足請指正,共同進步吧??
??安能以身之察察,受物之汶汶者乎?安能以皓皓之白,而蒙世俗之塵埃乎???
GPIO
查看原理圖
芯片電路原理圖
芯片數據手冊
找到引腳定義,理解引腳功能
找到功能對應的Port
微控制器參考手冊
?總結
GPIO
GPIO(英語:General-purpose input/output),通用型之輸入輸出的簡稱,功能類似8051的P0—P3,其接腳可以供使用者由程控自由使用,PIN腳依現實考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO),如當clk generator, chip select等。
既然一個引腳可以用于輸入、輸出或其他特殊功能,那么一定有寄存器用來選擇這些功能。對于輸入,一定可以通過讀取某個寄存器來確定引腳電位的高低;對于輸出,一定可以通過寫入某個寄存器來讓這個引腳輸出高電位或者低電位;對于其他特殊功能,則有另外的寄存器來控制它們。
本次舉例的芯片為STM32G4系列,其他芯片配置原理類似,相信你看完這篇文章后會有更深入的理解。
查看原理圖
要從底層理解GPIO口配置的原理,必然就少不了看原理圖,大家稍安勿躁,一定要克服,現在就由我來帶大家認清GPIO的真面目吧,簡單易懂,放心食用。
芯片電路原理圖
我們只來看芯片區(qū)域的原理圖,其他外設暫時不看,可觀們請看下圖:
?STM32芯片和51類似,GPIO引腳也是分為了幾組,有PA0~PA15,PB0~PB15等,其中有一些引腳是我們無法配置的,如序號15,31,47,63的VSS等,具體看下圖(非灰色的引腳就是無法改變的),然后對照上圖就能看出來,這些引腳都是接地或者高電平之類的固定值。
?好的,現在我們進入正題,假如我們想使用PA4引腳的“SPI3_NSS/ I2S3_WS”功能,我們是不是要先知道PA4引腳普通模式是什么功能,復用模式又是什么功能呢,然后再去理解,普通模式與復用模式如何配置。那我們接著往下看。
芯片數據手冊
在芯片書手冊中,我們主要查詢的是各個GPIO口的功能,包括普通模式與復用模式下的各種功能,然后去對照微控制器操作手冊來配置GPIO口,話不多說,接下來看圖(我們依舊以配置PA4口的“SPI3_NSS/ I2S3_WS”功能舉例):
找到引腳定義,理解引腳功能
第一步,找到手冊中引腳及引腳描述(Pinouts and pin description)這一章(不同手冊名稱可能不同,但意思大抵是相同的),然后再向下找到“Pin definition”:
?然后再這一章節(jié)中找到介紹PA4的地方,如下,我們就可以知道PA4引腳的普通模式與復用模式的功能分別是什么了,也能找到我們的目標PA4引腳的“SPI3_NSS/ I2S3_WS”功能。
?在這之中,我們發(fā)現PA4引腳的普通功能是TT_a,而復用功能有TIM3_CH2, SPI1_NSS, SPI3_NSS/ I2S3_WS, USART2_CK, SAI1_FS_B, EVENTOUT,這么多,我們要找的“SPI3_NSS/ I2S3_WS”就在復用功能中,但是又這么多復用功能,我們要這么去配置來分辨他們呢?我們接著向下走。
找到功能對應的Port
第二步,找到手冊中引腳及引腳描述(Pinouts and pin description)這一章(不同手冊名稱可能不同,但意思大抵是相同的),然后再向下找到“Alternate functions”:
?點擊即可看到如下,再找到PA4,后面就是PA4 引腳的復用功能,再這張圖中PA4后面找到“SPI3_NSS/ I2S3_WS”功能對應的列頭(Port),可以看到是“AF6”:
?接下來我們拿著這個Port“AF6”往下走
微控制器參考手冊
我們現在這個手冊中找到“General-purpose I/Os (GPIO)”中的“GPIO registers”,在這下面找到寄存器(GPIOx_AFRL),我這里是“GPIO alternatefunction low register(GPIOx_AFRL) (x = A to G)”:
?這里可以看到有兩個(GPIO_AFRH),對應的是low reguster低寄存器(低八位)與high reguster高寄存器(高八位),我們需要找的是PA4口,也就是低八位了,所以我們來看9.4.9low register:
?因為我們找的是PA4口。對應的是AFSEL4,下面有四個數據為,現在是定義到了PA4口,那么接下來就要實現“SPI3_NSS/ I2S3_WS”,這個功能對應是port是”AF6“,我們往下翻 可以看到如下,“AF6”對應的數據是“?0110”。
現在一切都浮出水面啦,最后的配置就是將“GPIOX_AFRH”寄存器賦值,因為找的是PA4口,所以是GPIOA_AFRH,然后也因為是PA4,所以我們選擇到AFSEL4[3:0],而我們選擇的功能對應的Port是“AF6”,而“AF6”對應的是數據是“0110”,所以我們賦值是數據為“0110”,到此,我們就完成了PA4口復用功能“GPIOA_AFRH”的選擇了。
?總結
首先在硬件手冊中了解?GPIO端口的名稱;然后再到數據手冊中找到需要使用的GPIO的普通模式還是復用模式,如果是復用模式,在找到該復用模式對應的port是多少;然后再到微控制器手冊中找到對應的寄存器賦值,以及port對應的數值,再賦值給寄存器就可以啦。文章來源:http://www.zghlxwxcb.cn/news/detail-620568.html
如果有幫助的話,歡迎點贊收藏哦~??,有不同見解或更好的觀點也可以在評論區(qū)留言,也可以筆者點點關注,互通有無,互相進步。文章來源地址http://www.zghlxwxcb.cn/news/detail-620568.html
到了這里,關于STM32 | GPIO口的普通與復用如何配置與用法,本文降從最底層教你如何查看手冊運用寄存器來實現GPIO口的配置的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!