<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32學(xué)前班教程之一:為什么選擇STM32?

STM32學(xué)前班教程之一:為什么選擇STM32?

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
為什么是它——我選擇STM32的原因。

--------首先聲明一下:該教程由思蛻盟論壇原創(chuàng ),本人一是為了自己學(xué)習,自我感覺(jué)此對stm32入門(mén)很有幫助,二是為了給更多的初學(xué)者帶來(lái)方便,所以決定轉載。轉載中糾正其中的部分錯誤,盡量加入最新的信息,并增加本人的部分見(jiàn)解和學(xué)習的感受,希望對閱讀者帶來(lái)點(diǎn)點(diǎn)閱讀價(jià)值!真誠歡迎讀者提出疑問(wèn),而后共同交流,共同進(jìn)步!

本文引用地址:http://dyxdggzs.com/article/201611/322408.htm

我對未來(lái)的規劃是以功能性為主的,在功能和面積之間做以平衡是我的首要選擇,而把運算放在第二位,這根我的專(zhuān)業(yè)有關(guān)系。里面的運算其實(shí)并不復雜,在入門(mén)階段想盡量減少所接觸的東西。

不過(guò)說(shuō)實(shí)話(huà),對DSP的外設并和開(kāi)發(fā)環(huán)境不滿(mǎn)意,這是為什么STM32一出就轉向的原因。下面是我自己做過(guò)的兩塊DSP28的全功能最小系統板,在做這兩塊板子的過(guò)程中發(fā)現要想盡力縮小DSP的面積實(shí)在不容易(目前只能達到50mm×45mm,這還是沒(méi)有其他器件的情況下),尤其是雙電源的供電方式和1.9V的電源讓人很頭疼。

后來(lái)因為一個(gè)項目,接觸了LPC2148并做了一塊板子,發(fā)現小型的ARM7在外設夠用的情況下其實(shí)很不錯,于是開(kāi)始搜集相關(guān)芯片資料,也同時(shí)對小面積的AVR和51都進(jìn)行了大致的比較,這個(gè)時(shí)候發(fā)現了CortexM3的STM32,比2148擁有更豐富和靈活的外設,性能幾乎是2148兩倍(按照MIPS值計算)。正好2148我還沒(méi)上手,就直接轉了這款STM32F103。

與2811相比較(核心1.8V供電情況下),135MHz×1MIPS?,F在用STM32F103,72MHz×1.25MIPS,性能是DSP的66%,STM32F103R型(64管腳)芯片面積只有2811的51%,STM32F103C型(48管腳)面積是2811的25%,最大功耗是DSP的20%,單片價(jià)格是DSP的30%。且有更多的串口,CAP和PWM,這是有用的。高端型號有SDIO,理論上比SPI速度快。

由以上比較,準備將未來(lái)的擁有操作系統的高端應用交給DSP的新型浮點(diǎn)型單片機28335,而將所有緊湊型小型、微型應用交給STM32。

ARM Cortex-M3相比于A(yíng)RM其他系列微控制器,具有以下優(yōu)勢或特點(diǎn):
1.三級流水線(xiàn)+分支預測
ARM Cortex-M3與ARM7內核一樣,采用適合于微控制器應用的三級流水線(xiàn),但增加了分支預測功能。

現代處理器大多采用指令預取和流水線(xiàn)技術(shù),以提高處理器的指令執行速度。流水線(xiàn)處理器在正常執行指令時(shí),如果碰到分支(跳轉)指令,由于指令執行的順序可能會(huì )發(fā)生變化,指令預取隊列和流水線(xiàn)中的部分指令就可能作廢,而需要從新的地址重新取指、執行,這樣就會(huì )使流水線(xiàn)“斷流”,處理器性能因此而受到影響。特別是現代C語(yǔ)言程序,經(jīng)編譯器優(yōu)化生成的目標代碼中,分支指令所占的比例可達10-20%,對流水線(xiàn)處理器的影響會(huì )的更大。為此,現代高性能流水線(xiàn)處理器中一般都加入了分支預測部件,就是在處理器從存儲器預取指令時(shí),當遇到分支(跳轉)指令時(shí),能自動(dòng)預測跳轉是否會(huì )發(fā)生,再從預測的方向進(jìn)行取指,從而提供給流水線(xiàn)連續的指令流,流水線(xiàn)就可以不斷地執行有效指令,保證了其性能的發(fā)揮。
ARM Cortex-M3內核的預取部件具有分支預測功能,可以預取分支目標地址的指令,使分支延遲減少到一個(gè)時(shí)鐘周期。

2.哈佛結構
從內核訪(fǎng)問(wèn)指令和數據的不同空間與總線(xiàn)結構,可以把處理器分為哈佛結構和普林斯頓結構(或馮.諾伊曼結構)。馮.諾伊曼結構的機器指令、數據和I/O共用一條總線(xiàn),這樣內核在取指時(shí)就不能進(jìn)行數據讀寫(xiě),反之亦然。這在傳統的非流水線(xiàn)處理器(如MCS51)上是沒(méi)有什么問(wèn)題的,它們取指、執行分時(shí)進(jìn)行,不會(huì )發(fā)生沖突。但在現代流水線(xiàn)處理器上,由于取指、譯碼和執行是同時(shí)進(jìn)行的(不是同一條指令),一條總線(xiàn)就會(huì )發(fā)生總線(xiàn)沖突,必須插入延遲等待,從而影響了系統性能。ARM7TDMI內核就是這種結構的。
而哈佛結構的處理器采用獨立的指令總線(xiàn)和數據總線(xiàn),可以同時(shí)進(jìn)行取指和數據讀寫(xiě)操作,從而提高了處理器的運行性能。ARM Cortex-M3、ARM966E、ARM926EJ、ARM1136JF等內核都采用了哈佛結構。

3.內置嵌套向量中斷控制器(NVIC)
針對業(yè)界對ARM處理器中斷響應的問(wèn)題,Cortex-M3首次在內核上集成了嵌套向量中斷控制器(NVIC)。Cortex-M3的中斷延遲只有12個(gè)時(shí)鐘周期(ARM7需要24-42個(gè)周期);Cortex-M3還使用尾鏈技術(shù),使得背靠背(back-to-back)中斷的響應只需要6個(gè)時(shí)鐘周期(ARM7需要大于30個(gè)周期)。以STM32運行在75MHz為例,中斷延遲只有80ns-160ns。另外,Cortex-M3采用了基于棧的異常模式,使得芯片初始化的封裝更為簡(jiǎn)單。
ARM7TDMI內核不帶中斷控制器,具體MCU的中斷控制器是各芯片廠(chǎng)商自己加入的,這使得各廠(chǎng)商的ARM7 MCU中斷控制部分都不一樣,給用戶(hù)使用及程序移植帶來(lái)了很大麻煩。Cortex-M3內核集成NVIC,各廠(chǎng)商生產(chǎn)的基于Cortex-M3內核的MCU都具有統一的中斷控制器,對用戶(hù)使用各種Cortex-M3 MCU,特別是中斷編程帶來(lái)了很大的便利。

4.支持位綁定操作
以前的ARM內核不支持位操作,當需要對一個(gè)變量或端口的某一位操作時(shí),先要用邏輯與/或指令屏蔽其他的位,使位操作需要較多的指令和時(shí)鐘周期。ARM
Cortex-M3采用了一種特殊的方法——位綁定:把一個(gè)地址單元的32位變量中的每一位,通過(guò)一個(gè)簡(jiǎn)單的地址轉換算法,映射到另一個(gè)地址空間,每一位占用一個(gè)地址,對此地址空間的操作,只有數據的最低一位是有效的,其余高31位的值被忽略。相當于把一個(gè)“橫”的32位字給“豎”起來(lái)。這樣對新的映射空間操作時(shí),就可以不用屏蔽操作,優(yōu)化了RAM和I/O寄存器的讀寫(xiě),提高了位操作的速度。
這種方法粗看起來(lái)好像損失了很多地址空間,其實(shí)對于32位的ARM處理器而言,總共可以尋址4GB的空間,而對于一個(gè)MCU來(lái)說(shuō),一般只用到幾百KB的空間。所以這種處理方法絲毫不會(huì )影響一個(gè)MCU的正常使用,又大大簡(jiǎn)化了處理器的設計,可以說(shuō)是一種良策。

5.支持串行調試(SWD)
ARM處理器一般都使用JTAG調試接口,使得仿真、調試工具統一而廉價(jià),方便了用戶(hù)開(kāi)發(fā)。但JTAG調試接口至少要占用芯片的5-6個(gè)引腳,這對于一些引腳較少的MCU來(lái)說(shuō),有時(shí)會(huì )對仿真調試和I/O使用帶來(lái)麻煩。
ARM
Cortex-M3在保持原來(lái)JTAG調試接口的基礎上,還支持串行調試(SWD)。使用SWD時(shí),只占用2個(gè)引腳,就可以進(jìn)行所有的仿真和調試,節省了調試用引腳,用戶(hù)就可以使用更多的引腳。
另外,Cortex-M3支持8個(gè)硬件斷點(diǎn)(ARM7、ARM9只支持2個(gè)硬件斷點(diǎn)),可以減少斷點(diǎn)調試時(shí)對代碼的影響,保證仿真、調試的時(shí)序準確性。

6.內核支持低功耗模式
ARM內核已經(jīng)是一個(gè)高性能、低功耗的內核,但ARM7、ARM9等內核本身只有運行/停止模式,沒(méi)有其他模式。各芯片廠(chǎng)商只能在內核基礎上,對各自加入的外設定義各種低功耗模式。Cortex-M3加入了類(lèi)似于8位處理器的內核低功耗模式,支持3種功耗管理模式:通過(guò)一條指令立即睡眠;異常/中斷退出時(shí)睡眠;深度睡眠。使整個(gè)芯片的功耗控制更為有效。以STM32為例,其RAM和寄存器狀態(tài)保持的停機模式耗電僅為14uA,從此狀態(tài)的啟動(dòng)時(shí)間僅為7us。
Cortex-M3的運行功耗(Active Mode)也很低。以STM32系列微控制器為例,其典型功耗約為500uA/MHz,也只是目前業(yè)界超低功耗單片機MSP430系列(約為250uA/MHz)的2倍。但MSP430是16位處理器,而STM32是32位處理器。

7.高效的Thumb2 16/32位混合指令集
ARM7、ARM9等內核使用不同的處理器狀態(tài)分別執行32位的ARM指令和16位的Thumb指令,使用狀態(tài)切換指令完成ARM狀態(tài)和Thumb狀態(tài)的切換。Cortex-M3使用更高效的Thumb2指令集,它是一種16/32位混合編碼指令,兼容Thumb指令。對于一個(gè)應用程序編譯生成的Thumb2代碼,以接近Thumb編碼的代碼尺寸,達到了接近ARM編碼的運行性能。Thumb2是一種緊湊、高效的新一代指令集。
Thumb2指令集是面向高級語(yǔ)言的指令集,適合于C語(yǔ)言編程,由編譯器生成目標代碼,不建議直接使用Thumb2匯編語(yǔ)言編程。

8. 32位硬件除法和單周期乘法
以往的ARM處理器沒(méi)有除法指令,在某些除法密集型應用中性能不盡如意。Cortex-M3加入了32位除法指令,彌補了這一缺陷,使Cortex-M3可以和其他通用處理器一樣,完成各種數學(xué)運算操作。
Cortex-M3還改進(jìn)了乘法運算部件,32結果的32位x32位乘法操作只要一個(gè)時(shí)鐘周期。這一性能使得使用Cortex-M3來(lái)進(jìn)行乘、乘加運算時(shí),已逼近DSP的性能,因此特別適合一些需要簡(jiǎn)單DSP的應用領(lǐng)域,如電機控制、數字濾波、FFT變換等。
需要指出的是,32位的乘/除運算,對于一個(gè)8位機而言,已經(jīng)是一段比較復雜的程序,而對于32位的Cortex-M3而言,只需一句指令。因此,即使二者工作主頻一樣,實(shí)際運行性能也不是一個(gè)數量級的。




關(guān)鍵詞: STM32學(xué)前班教

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>