STM32初學者必知
編程
STM32初學者必知
STM32
STM32的核心Cortex-M3處理器是一個標準化的微控制器結構,但願思考一下,何爲標準化?簡言之,Cortex-M3處理器擁有32位CPU,並行總線結構,嵌套中斷向量控制單元,調試系統以及標準的存儲映射。
嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡稱NVIC)是Cortex-M3處理器中一個比較關鍵的組件,它爲基於Cortex-M3的微控制器提供了標準的中斷架構和優秀的中斷響應能力,爲超過240箇中斷源提供專門的中斷入口,並且能夠賦予每一箇中斷源單獨的優先級。利用NVIC從能夠達到極快的中斷響應速度,從收到中斷請求到執行中斷服務的第一條指令僅需12個週期。這種極快的響應速度一方面得益於Cortex-M3內核對堆棧的自動處理機制,這種機制是經過固化在CPU內部的微代碼實現的。另外一方面,在中斷請求連續出現的狀況下,NVIC使用一種稱爲「尾鏈」的技術,使連續而來的中斷能夠在6個時鐘週期內獲得服務。在中斷的壓棧階段,更高優先級的中斷能夠不耗費任何額外的CPU週期就能完成嵌入低優先級中斷的動做。具體的細節後面我會繼續總結的。用戶能夠經過設置CPU自動進入低功耗狀態,而使用中斷來將其喚醒,CPU在中斷時間來臨以前會一直保持睡眠狀態。這個後面我也會再總結。
Cortex-M3的CPU支持兩種運行模式:線程模式(Thread Mode)與處理模式(Handler Mode)而且須要注意的是,這兩種模式都擁有各自獨立的堆棧。這種設計使得開發人員能夠進行更爲精密的程序設計,對實時操做系統的支持也就更好了。
Cortex-M3處理器還包含了一個24位可自動重裝載定的定時器,能夠爲內核(RTOS)提供一個週期中斷。
在指令集方面,ARM7和ARM9都有兩種指令集(32位指令集和16位指令集),而Cortex-M3系列處理器支持Thumb-2指令集。因爲Thumb-2指令集融合了Thumb指令集和ARM指令集,使得32位指令集的性能和16位指令集的代碼密度之間取得了平衡
並且,ARM Thumb-2 專門爲C/C++編譯器設計,這就意味着Cortex-M3系列處理器的開發應用能夠所有在C語言環境中完成。
STM32微控制器的推出標誌着ST公司在兩條產品主線(低價位主線和高性能主線)上邁出了重大一步。STM32最初發布時有14個不一樣型號,分爲兩個版本:最高CPU時鐘爲72MHZ的「加強型」和最高CPU時鐘爲36MHZ的「基本型」。這些不一樣STM32型號裏內置的Flash最大可達128KB,SRAM最大爲20KB,在STM32發佈之初,配置更大Flash,RAM和更復雜外設的版本就已經在規劃之中了。不論是什麼版本,什麼型號的STM32器件,它們在引腳功能和應用軟件上是兼容的。這就使得開發人員在使用STM32系列微控制器時,沒必要改動PCB就能夠根據須要隨意更換器件型號。
乍一看STM32的設備配備,與往日熟悉的51單片機倒有幾分類似。通常,STM32都會配備常見外設,諸如多通道ADC,通用定時器,I2C總線接口,SPI總線接口,CAN總線接口,USB控制器,實時時鐘RTC等。可是,它的每個外部設備都具備獨特之處。例如,12位精度的ADC具有多種轉換模式,並帶有一個內部溫度傳感器,帶有雙ADC的STM32器件,還可使兩個ADC同時工做,從而衍生出了更爲高級的9種轉換模式;STM32的每個定時器都具有4個捕獲比較單元,並且每一個定時器均可以和另外的定時器聯合工做以生成更爲精密的時序;STM32有專門爲電機控制而設的高級定時器,帶有6個死區時間可編程的PWM輸出通道,同時其帶有的緊急制動通道能夠在異常狀況出現時,強迫PWM信號輸出保持在一個預訂好的安全狀態;SPI接口含有一個硬件CRC單元,支持8位字節和16位半字數據的CRC計算。在對SD或MMC等存儲介質進行數據存取時至關有用。
並且,STM32還包含了7個DMA通道。沒惡搞通道均可以用來在設備與內存之間進行8位,16位,32位數據的傳輸。每一個設備均可以向DMA控制器請求發送或者接收數據。STM32內部總線仲裁器和總線矩陣將CPU數據接口和DMA通道之間的鏈接大大的簡化了,這就意味着DMA通道單元是很靈活的其使用方法簡單,足以應付微控制器應用中常見的數據傳輸要求。
咱們前面說過了,STM32是低功耗,高性能的微控制器。在低功耗方面,STM32表現也是不錯的。它能夠在2V供電的狀況下運行,在全部設備同時打開且運行在滿速72MHZ主頻的狀況下,也僅消耗36mA的電流,在與Cortex-M3內核的低功耗模式結合以後,只有2uA的電流消耗。即使外部振盪器處在待啓動狀態,STM32使用內部8MHZ的RC振盪器也可迅速退出低功耗模式。這種快速進出低功耗模式的特性,也進一步下降了微控制器總體的功率消耗,同時使微控制器仍然能夠保持器件的總體高性能。
在電子領域,對器件的要求精度高是一方面,另外一方面,還要求器件穩定性要好,處於可靠性的考慮,STM32配備了一系列硬件來支持對可靠性的高度要求。這些硬件有:一個低電壓檢測器,一個時鐘安全管理系統和兩個看門狗定時器。時鐘管理系統能夠檢測到外部主振盪器的失效,並隨即安全的將STM32內部8MHZ的RC振盪器切換爲主時鐘源。兩個看門狗定時器中的一個稱爲窗口看門狗。窗口看門狗必須在事先定義好的時間上下限到達以前刷新,若是過早或過晚的刷新它,將會觸發窗口看門狗復位。第二個看門狗稱爲獨立看門狗。獨立看門狗使用外部振盪器驅動,該振盪器與主系統時鐘是相互獨立的,這樣即使STM32的主系統時鐘崩潰,獨立看門狗也能「力挽狂瀾」。
在現代電子設計行業中,有一個問題是沒法逃避的,那就是你不得不千方百計提升代碼的安全性以防止被破解人員盜用。聽師傅說,在極可貴電子市場,複製一個芯片只須要幾分鐘。STM32能夠鎖住其內部Flash使破解人員沒法經過調試端口讀取其內容。當Flash的讀保護功能開啓後,其寫保護功能也隨之開啓。寫保護功能經常使用於防止一些來歷不明的代碼寫入中斷向量表。可是,寫保護不只能夠保護中斷向量表,還能夠進一步將其保護範圍延伸到整個Flash中的未被使用區域。另外,STM32還有一小塊電池備份RAM區,這個RAM區域對應於一個入侵檢測引腳應用,當這個引腳上產生電平變化時,STM32會認爲遭遇了入侵事件,隨即自動將電池備份RAM區的內容所有清除。 專業嵌入式、單片機技術實訓。諮詢QQ1187729241
目前好多開發工具都開始支持Thumb-2指令集和STM32系列,即便不支持也沒有關係,咱們只須要將軟件升級一下便可。同時,ST公司還提供了一個設備驅動固件庫和一個USB開發應用庫,以方便調用。對於STM32來講,一些早期微控制器好比早期的STR7和STR9發佈的ANSI C庫和源代碼都是可移植的。這些程序的接口已經在許多流行的編譯工具上獲得了整合。類似的,許多開源的或者商用的RTOS,還有一些中間件(好比TCP/IP棧,文件系統)對以STM32系列微控制器來講也是可用的。
Cortex-M3還帶有一個全新調試系統CoreSight。用戶可使用標準的JTAG接口或者雙線串行接口經過調試端口(Debug Access Port)實現和CoreSight系統的對接。除了提供調試運行控制服務以外,STM32上的CoreSight還提供斷點數據查看功能以及一個指令跟蹤器。指令跟蹤器能夠將用戶選擇的應用信息上傳到調試工具裏。從而能夠爲用戶提供額外的調試信息,而且它在軟件運行期間一樣可使用!
更多交流請詳情郭老師QQ1962426343 電話:15737137972安全