STM32入門編程總結(jié)3 (時(shí)鐘+GPIO)
時(shí)鐘,單片機(jī)的時(shí)鐘好比人的心臟,時(shí)鐘歇了,單片機(jī)也就停止工作了,51單片機(jī)就一個(gè)時(shí)鐘,12M、11.0592M居多,11.0592M這么有零有整奇葩的頻率主要是為了51單片機(jī)串口通信波特率能正好是個(gè)整數(shù);STM32單片機(jī)有四個(gè)時(shí)鐘,HSI、HSE、LSI、LSE,HIS是內(nèi)部高速時(shí)鐘(RC振蕩器)8Mhz,經(jīng)過倍頻器后,單片機(jī)主頻上限可以達(dá)到64Mhz,HSE是外部高速晶振8Mhz,經(jīng)過倍頻器后單片機(jī)主頻上限可以達(dá)到72Mhz,LSI是內(nèi)部低速40Khz時(shí)鐘(RC振蕩器),可以為RTC(實(shí)時(shí)時(shí)鐘類似于DS1302)提供時(shí)鐘,也可以為獨(dú)立看門狗提供時(shí)鐘,LSE是32.768khz晶振,為RTC提供時(shí)鐘,32.768khz這么有零有整的奇葩頻率源自于,32768= 2的15次方,RTC時(shí)鐘內(nèi)部有個(gè)2的15次方分頻器,所以32768hz晶振經(jīng)過分頻后正好是1秒,這是整個(gè)瓜的來龍去脈。
另外著重提一點(diǎn),內(nèi)部時(shí)鐘(HSI、LSI)都是RC振蕩器,HSE、LSE是晶振,晶振和RC振蕩器不是一回事兒,說STM32單片機(jī)有四個(gè)晶振是錯(cuò)誤的說法,說有四個(gè)時(shí)鐘沒啥問題,外部晶振的穩(wěn)定性要比內(nèi)部RC振蕩器好一些,外部晶振可以倍頻讓STM32單片機(jī)主頻達(dá)到72Mhz,內(nèi)部RC振蕩器倍頻只能達(dá)到64Mhz。
插播一段MCO(main clock output對(duì)應(yīng)PA8引腳),這個(gè)引腳可以輸出單片機(jī)當(dāng)前工作的主頻/二分之一主頻,程序設(shè)定是72Mhz運(yùn)行,假設(shè)8Mhz晶振虛焊,STM32單片機(jī)不是立即停止工作,而是會(huì)自動(dòng)切換到內(nèi)部RC振蕩器采用64Mhz的主頻繼續(xù)工作,對(duì)于特別嚴(yán)苛的應(yīng)用場(chǎng)合,72Mhz和64Mh還是有很大差異,需要知道當(dāng)前MCU是否穩(wěn)妥工作在72Mhz,通過MCO這個(gè)pin就可以抓取到(1/2PLLCLK)。
再插播一段分頻器,2分頻器,是把輸入端頻率除以二然后輸出;選擇器,是選擇某一個(gè)作為輸入后直接輸出;倍頻器把頻率翻倍,像我當(dāng)前用的i9-9900k CPU睿頻5.0Ghz,這個(gè)5.0Ghz不是晶振直接搞到5.0Ghz,而是100Mhz晶振經(jīng)過內(nèi)部倍頻電路翻50倍搞到5.0Ghz的。
STM32單片機(jī)的大部分外設(shè)都掛載在APB2、APB1總線上,GPIO、UART1、SPI1、ADC1、2、EXTI、TIM1都是APB2(72Mhz)的小弟,APB1(36Mhz)上掛載的是IIC1-2、CAN1-2、UART2-5、SPI2-2等,APB2上的外設(shè)用的頻率多一些,畢竟很多小伙伴磨煉了多年也就止步于一LED燈大師。
GPIO口,通用輸入輸出口,51單片機(jī)P0、P1、P2、P3每組從0-7共8個(gè)IO口,STM32單片機(jī),分為GPIOA-G,每組0-15共16個(gè)IO口,51單片機(jī)的IO口比較省心,要么置零要么置1,STM32的IO口花活兒多一些,整體分為兩大類,輸出類:(1)推挽模式,可以粗略理解為把IO口要么接單片機(jī)的VDD,要么接GND,IO口帶載上限:25ma,點(diǎn)個(gè)燈沒啥問題;(2)開漏模式,如果說VDD是IO口的頭,開漏模式相當(dāng)于掀開IO口的頭蓋骨,讓用戶去自定義(51單片機(jī)P0口:“啊這事兒我熟”),供電電壓不再局限于MCU的3.3V,可以5V且通過更大的電流。(復(fù)用推挽/開漏是指有的IO口身兼數(shù)職,既可以當(dāng)UART用,又可以當(dāng)IO口用)。
輸入模式:上拉、下拉、浮空、模擬輸入,上拉(弱)置高,下拉(弱)置低,浮空啥也不接(默認(rèn)浮空),模擬輸入是使用ADC外設(shè)時(shí)配置IO口的模式。IO口還有速度選擇:LOW、Medium、High,速度越低,功耗越低;IO口接按鍵,設(shè)置為上拉模式比較好,上拉模式的抗干擾能力比下拉強(qiáng),上拉平時(shí)是高電平,來個(gè)尖峰干擾還是高電平;下拉平時(shí)是低電平,來個(gè)尖峰干擾就拉高了會(huì)導(dǎo)致誤認(rèn)為有按鍵按下,所以綜合考慮,按鍵采用IO口上拉更穩(wěn)妥。
審核編輯:湯梓紅
-
adc
+關(guān)注
關(guān)注
99文章
6533瀏覽量
545685 -
STM32
+關(guān)注
關(guān)注
2272文章
10923瀏覽量
357462 -
編程
+關(guān)注
關(guān)注
88文章
3637瀏覽量
93957
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論