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