放心大膽的看,單片機基本結構詳解在這裡
寫在前面
本系列文章主要從一個單片機開發者的角度,講解自己對單片機的理解,並不是一個完善的教程,所以不適合作為某款單片機的學習教材。但是,本文旨在用最通俗的語言講清楚在單片機開發過程中需要掌握的知識結構,為想要入門該領域的人,提供一個除傳統的教材以外的另一個途徑。
///插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我拿就行了免費的,私信我就可以哦~點我頭像黑色字體加我地球呺也能領取哦。最近比較閒,帶做畢設,帶學生參加省級或以上比賽///
正文開始:
本系列文章儘量使用通俗易懂的語言來講述知識點,帶來的問題可能就是嚴謹性不夠,如果出現明顯的錯誤,還望指正。
>單片機基本結構【此部分內容僅需了解,不需掌握】
很多人認為單片機相當於我們常見電腦的中央處理器(CPU),嚴格來講這是不正確的,單片機全稱單片微型計算機,Single Chip Microcomputer,因此他本質還是計算機,詳細來講,就是把中央處理器、隨機存儲器(RAM)、只讀存儲器(ROM)、定時器、計數器、中斷、輸入輸出接口(IO)等主要部件,集成在一個晶片上而形成的計算機系統。
A、以簡單的C51單片機為例,他包含的主要部件如下:
1、中央處理器(CPU)。C51單片機的中央處理器為8位數據寬度,能處理8位的二進位數。主要有運算器和控制器兩部分組成。
2、存儲器。存儲器又分為只讀存儲器與數據(隨機)存儲器(RAM),這裡講的只讀存儲器是指運行的程序只能讀取的部分,而不是實際意義上的只讀,我們一般把我們寫的程序燒錄到這一存儲器上,所以嚴格意義上他也是可以擦寫的。數據存儲器(RAM)則主要存放我們程序中需要用到的變量。
3、定時器與計數器。定時器的本質就是一個寄存器,裡面可以設置一個初始數值,然後每個機器周期這個數值加一,直到溢出,溢出後這個寄存器又被賦初始值並開始新的循環,溢出時會出發定時器中斷,可以運行中斷中的程序。當把加一的信號改為外部中斷時,就可以實現計數器的功能了。
4、中斷。顧名思義,中斷就是當達到某種預製條件時,停下當前的工作去干別的事情。常見的有外部中斷、定時器中斷、串口中斷等。
5、IO。單片機與外界交換數據的接口就是IO,既可以是並行的P0、P1口等,也可使工作在串行方式下,比如串口 IIC等方式。
除了以上講到的基本部件以外,還有像時鐘電路等部分組成。
早期的C51單片機都需要外置晶振來驅動單片機內部的時鐘電路工作,現在常見的單片機一般都內置RC振蕩器,在沒有外部晶振時也能實現時鐘電路的正常工作,但是在需要比較高的主頻或比較精確的時鐘時,還是需要依靠外部的晶振來實現。
早期C51系列單片機內部結構框圖
B、以經典的STM32F103系列單片機為代表的Cortex-M3系列單片:
Cortex‐M3是一個32位處理器內核。內部的數據路徑是32位的,寄存器是32位的,存儲器接口也是32位的。CM3採用了哈佛結構,擁有獨立的指令總線和數據總線。
與經典的C51單片機相比,他的優點表現在(簡單的講就是更高的性能、更多更快的IO、更先進的指令)
1、高性能
·很多指令包括乘法都是單周期的。(早期的C51,12個時鐘周期為一個機器周期,後期也出現了但周期的C51)。
·獨立的數據總線和指令總線,使得數據訪問和指令訪問並行不悖。
·指令周期和程序大小都減小了。簡化了軟體開發,使得產品更快面市,代碼更易維護。
·更高代碼密度並減少內存需求。
·32位取址。同一周期可以取指兩條指令,如此有更多可用帶寬給數據傳輸。
·很高的時鐘頻率(超過100MHz)。
2、先進的中斷處理功能
·高達240個外部中斷輸入。
·中斷處理程序可以是標準的C語言函數(不需要額外的彙編語言代碼了)。
·中斷管理極其靈活,因為NVIC可為每一中斷提供可編程的中斷優先級控制。
3、低功耗
·適合於低功耗的設計。
·支持節能模式(SLEEPING和SLEEPDEEP)。
Cortex-M3內部結構圖