單片機正常工作的基本條件及其時鐘系統 今亮點

2023-06-12 15:05:31 來源:奇遇單片機

1.單片機正常工作的基本條件

單片機正常工作需要滿足三個條件:1) 給單片機供電 2) 單片機復位電路 3)單片機時鐘電路。滿足這三個條件的硬件電路,我們稱之為單片機最小硬件系統。


(相關資料圖)

單片機復位電路有兩種,高電平復位和低電平復位。STM32系列單片機采用的是低電平復位,RESET這個標志我們稱之為網絡號,相同網絡號表示導線相互連接。

單片機時鐘電路也有多種方式, 一個是采用外置晶振的方式,一個采用內部時鐘,還有一種是外部直接接入其他芯片生成的符合要求的時鐘信號(這種不常見)。

2.單片機的時鐘系統

數字電路都是需要時鐘信號來驅動的,所謂時序,就是數據按照時鐘信號來變化。單片機屬于數字芯片,自然離不開時鐘信號。一般來說,單片機時鐘源來自外部晶振信號HSE或者內部時鐘HSI。

系統時鐘SYSCLK信號源可以選擇HSE,HSI或者鎖相環PLLCLK,一般我們都會選擇PLLCLK這個信號源作為系統時鐘。HSE或者HSI經過分頻后,送到倍頻器PLLMUL,然后產生PLLCLK。系統時鐘SYSCLK經過各種分頻器后產生各種外設所需的時鐘信號。

同等條件下, 時鐘頻率越低數字電路的功耗就越低。另外,單片機內部不同的外設電路對時鐘信號的頻率要求不一樣。有的電路反應慢,不需要那么快的時鐘信號,例如,iic總線電路。有的電路需要速度快的時鐘信號,例如usb電路。通過對時鐘信號分頻不但可以滿足不同外設需求還能降低功耗。而且,這些內部外設電路的時鐘信號還可以開啟關閉。所以,我們在操作單片機內部模塊時,第一步要做的就是開啟對應外設的時鐘信號。

3.淺談單片機啟動方式

單片機啟動方式是指,單片機從哪里開始執行程序。STM32執行的第一條指令地址是在地址0x0000 0000上。如果程序放在SRAM里面執行,那就要在0地址上設置跳轉指令,跳到SRAM的首地址0x20000 0000,所以是需要重新設置異常向量表的。系統儲存器和Flash儲存器都是雙地址,系統儲存器里面出廠前寫入了bootloader引導程序相當于電腦的BIOS一樣,可以把我們的用戶程序轉存到flash里面去。你可以把bootloader看成一個flash讀寫程序,當然了,BootLoader還做了一些硬件初始化工作。

4.一燈大師的手與腳

單片機最大的特色就是好玩有趣,當然了,學渣可能覺得不怎么好玩。我記得第一次點亮LED燈時,我激動的一夜無眠。那種感覺無以言表,反正就跟撿了錢一樣,打開了新世界,從此走上了不歸路,為什么叫不歸路呢。等以后啤酒小龍蝦準備好,我慢慢道來。

成為一燈大師,是每個電子人的必經之路。你可以啥也不會,但是你得會點燈,不然你咋好意思說你學過單片機。單片機通過Input和Output引腳來與外界交換信息,就像章魚的觸手一樣,可以抓取物體,也可以扔物體。我們這里主要談談單片機的IO,單片機的IO有時候我們也會直接說成單片機的引腳。單片機的IO內部結構簡圖如下所示:

學單片機一定要去看用戶手冊和數據手冊,這兩個手冊比開發板的例程和教科書更有用。通過上圖,我們可以知道,上半部分是輸出電路結構,下半部分是輸入電路結構。單片機內部的上拉和下拉電阻是針對輸入電路來說的,輸出電路部分是沒有上拉下拉電阻的。

在單片機后續學習中,我們會發現一些電路會外置上拉電阻。可是,單片機內部已經有上拉電阻了,為什么還要在外部加上拉電阻呢?因為,我們操作芯片除了讀數據,還要寫數據。讀數據是輸入,寫數據是輸出,單片機輸出是沒有上拉電阻的。在按鍵檢測時,我們就可以根據需要來設置上拉電阻或者下拉電阻。

我們知道,單片機IO電路有兩部分組成,輸入和輸出電路兩部分,它們共用一個輸出引腳,也就是說單片機的引腳可以讀數據也可以輸出數據。通過配置寄存器來設置單片機的IO是輸出還是輸入,下圖是和單片機IO相關的寄存器,了解一下就可以了,知道有這些東西就行。

寄存器每4位對應一個引腳,比如PA0引腳,那么,0-3位就是PA0的配置位,點亮LED燈,屬于IO輸出功能。這里0-1位,我們可以設置成01,10,11。2-3位,可以設置成00推挽模式。

什么是推挽模式,可以簡單理解成驅動能力強,電流比較大,詳情可以自行百度:推挽電路原理分析。開漏模式是指輸出電路中的P-MOS管被關閉,只有N-MOS可以開啟與關閉,N-MOS開啟時,輸出低電平,關閉時,則為開漏。此時,驅動電路只能輸出低電平0,無法輸出高電平。要想輸出高電平,需要外置上拉電阻。

這里強調一點,單片機的輸出開漏模式是可以直接讀取數據的,不需要切換到輸入模式來讀取數據。其原理就是,開漏模式的電平是由外部電路決定的,不受內部輸出電路的影響。

在上面的引腳功能配置表里,我們總結了一下。輸入模式有三種1)浮空模式,單片機引腳的電平是不確定的,電平由外部電路決定。2)上下拉模式,當向輸出寄存器寫入1時,為上拉模式,否則,寫入0,則為下拉模式。上下拉模式常用于各種外部信號的檢測。比如,要檢測高電平,那就設置成下拉輸入模式。3)模擬輸入,檢測模擬信號。

輸出模式,是可以選擇io引腳的電平變化頻率的。輸入模式沒有這個選項,輸出模式時,上下拉電阻是禁用的。復用模式是指,io沒有連接到輸出寄存器,而是連接到了內部其他電路(內部外設,比如定時器,串口等等)。推挽模式,就是常規的輸出模式,對應于輸入上下拉模式。開漏模式對應于輸入浮空模式。開漏模式是一種特殊的輸出模式,這種模式下可以直接讀輸入寄存器來獲取io的引腳電平狀態。

通過以上知識點的學習后,我們可以正式開始進入點燈環節了,看再多的理論知識,最后也需要實踐來檢驗我們的理解是否正確。我以前都是一邊看資料或者看手冊一邊寫程序來驗證自己理解的對不對。

標簽:

上一篇:世界播報:深度解析NAT和DHCP的原理以及配置
下一篇:最后一頁