<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 的核心Cortex-M3 處理器

STM32 的核心Cortex-M3 處理器

作者: 時(shí)間:2018-08-23 來(lái)源:網(wǎng)絡(luò ) 收藏

的核心

本文引用地址:http://dyxdggzs.com/article/201808/387593.htm

的核心 是一個(gè)標準化的微控制器結構,希望思考一下,何為標準化?

簡(jiǎn)言之, 擁有32 位CPU,并行總線(xiàn)結構,嵌套中斷向量控制單元,調試系

統以及標準的存儲映射。

嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡(jiǎn)稱(chēng)NVIC)是Cortex-M3 處理器中一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3 的微控制器提供了標準的中斷架構和優(yōu)秀的中斷響應能力,為超過(guò)240 個(gè)中斷源提供專(zhuān)門(mén)的中斷入口,而且可以賦予每個(gè)中斷源單獨的優(yōu)先級。利用NVIC 從可以達到極快的中斷響應速度,從收到中斷請求到執行中斷服務(wù)的第一條指令僅需12 個(gè)周期。這種極快的響應速度一方面得益于Cortex-M3 內核對堆棧的自動(dòng)處理機制,這種機制是通過(guò)固化在CPU 內部的微代碼實(shí)現的。另一方面,在中斷請求連續出現的情況下,NVIC 使用一種稱(chēng)為“尾鏈”的技術(shù),使連續而來(lái)的中斷可以在6 個(gè)時(shí)鐘周期內得到服務(wù)。在中斷的壓棧階段,更高優(yōu)先級的中斷可以不耗費任何額外的CPU 周期就能完成嵌入低優(yōu)先級中斷的動(dòng)作。具體的細節后面我會(huì )繼續總結的。用戶(hù)可以通過(guò)設置CPU 自動(dòng)進(jìn)入低功耗狀態(tài),而使用中斷來(lái)將其喚醒,CPU 在中斷時(shí)間來(lái)臨之前會(huì )一直保持睡眠狀態(tài)。

Cortex-M3 的CPU 支持兩種運行模式:線(xiàn)程模式(Thread Mode)與處理模式(Handler Mode)

并且需要注意的是,這兩種模式都擁有各自獨立的堆棧。這種設計使得開(kāi)發(fā)人員可以進(jìn)行更為精密的程序設計,對實(shí)時(shí)操作系統的支持也就更好了。Cortex-M3 處理器還包含了一個(gè)24 位可自動(dòng)重裝載定的定時(shí)器,可以為內核(RTOS)提供一個(gè)周期中斷。

在指令集方面,ARM7 和ARM9 都有兩種指令集(32 位指令集和16 位指令集),而Cortex-M3系列處理器支持Thumb-2 指令集。由于Thumb-2 指令集融合了Thumb 指令集和ARM 指令集,使得32 位指令集的性能和16 位指令集的代碼密度之間取得了平衡。而且,ARM Thumb-2 專(zhuān)門(mén)為C/C++編譯器設計,這就意味著(zhù)Cortex-M3 系列處理器的開(kāi)發(fā)應用可以全部在C 語(yǔ)言環(huán)境中完成。

微控制器的推出標志著(zhù)ST 公司在兩條產(chǎn)品主線(xiàn)(低價(jià)位主線(xiàn)和高性能主線(xiàn))上邁出了重大一步。STM32 最初發(fā)布時(shí)有14 個(gè)不同型號,分為兩個(gè)版本:最高CPU 時(shí)鐘為72MHZ的“增強型”和最高CPU 時(shí)鐘為36MHZ 的“基本型”。這些不同STM32 型號里內置的Flash 最大可達128KB,SRAM 最大為20KB,在STM32 發(fā)布之初,配置更大Flash,RAM 和更復雜外設的版本就已經(jīng)在規劃之中了。不管是什么版本,什么型號的STM32 器件,它們在引腳功能和應用軟件上是兼容的。這就使得開(kāi)發(fā)人員在使用STM32 系列微控制器時(shí),不必改動(dòng)PCB就可以根據需要隨意更換器件型號。

乍一看STM32 的設備配備,與往日熟悉的51 單片機倒有幾分相似。一般,STM32 都會(huì )配備常見(jiàn)外設,諸如多通道ADC,通用定時(shí)器,I2C 總線(xiàn)接口,SPI 總線(xiàn)接口,CAN 總線(xiàn)接口,USB控制器,實(shí)時(shí)時(shí)鐘RTC 等。但是,它的每一個(gè)外部設備都具有獨特之處。例如,12 位精度的ADC 具備多種轉換模式,并帶有一個(gè)內部溫度傳感器,帶有雙ADC 的STM32 器件,還可以使兩個(gè)ADC 同時(shí)工作,從而衍生出了更為高級的9 種轉換模式;STM32 的每一個(gè)定時(shí)器都具備4 個(gè)捕獲比較單元,而且每個(gè)定時(shí)器都可以和另外的定時(shí)器聯(lián)合工作以生成更為精密的時(shí)序;STM32 有專(zhuān)門(mén)為電機控制而設的高級定時(shí)器,帶有6 個(gè)死區時(shí)間可編程的PWM 輸出通道,同時(shí)其帶有的緊急制動(dòng)通道可以在異常情況出現時(shí),強迫PWM 信號輸出保持在一個(gè)預訂好的安全狀態(tài);SPI 接口含有一個(gè)硬件CRC 單元,支持8 位字節和16 位半字數據的CRC 計算。在對SD 或MMC 等存儲介質(zhì)進(jìn)行數據存取時(shí)相當有用。而且,STM32 還包含了7 個(gè)DMA 通道。沒(méi)惡搞通道都可以用來(lái)在設備與內存之間進(jìn)行8 位,16 位,32 位數據的傳輸。每個(gè)設備都可以向DMA 控制器請求發(fā)送或者接收數據。STM32內部總線(xiàn)仲裁器和總線(xiàn)矩陣將CPU 數據接口和DMA 通道之間的連接大大的簡(jiǎn)化了,這就意味著(zhù)DMA 通道單元是很靈活的其使用方法簡(jiǎn)單,足以應付微控制器應用中常見(jiàn)的數據傳輸要求。

我們前面說(shuō)過(guò)了,STM32 是低功耗,高性能的微控制器。在低功耗方面,STM32 表現也是不錯的。它可以在2V 供電的情況下運行,在所有設備同時(shí)打開(kāi)且運行在滿(mǎn)速72MHZ 主頻的情況下,也僅消耗36mA 的電流,在與Cortex-M3 內核的低功耗模式結合之后,只有2uA 的電流消耗。即便外部振蕩器處在待啟動(dòng)狀態(tài),STM32 使用內部8MHZ 的RC 振蕩器也可迅速退出低功耗模式。這種快速進(jìn)出低功耗模式的特性,也進(jìn)一步降低了微控制器整體的功率消耗,同時(shí)使微控制器仍然可以保持器件的整體高性能。在電子領(lǐng)域,對器件的要求精度高是一方面,另一方面,還要求器件穩定性要好,處于可靠性的考慮,STM32 配備了一系列硬件來(lái)支持對可靠性的高度要求。這些硬件有:一個(gè)低電壓檢測器,一個(gè)時(shí)鐘安全管理系統和兩個(gè)看門(mén)狗定時(shí)器。時(shí)鐘管理系統可以檢測到外部主振蕩器的失效,并隨即安全的將STM32 內部8MHZ 的RC 振蕩器切換為主時(shí)鐘源。兩個(gè)看門(mén)狗定時(shí)器中的一個(gè)稱(chēng)為窗口看門(mén)狗。窗口看門(mén)狗必須在事先定義好的時(shí)間上下限到達之前刷新,如果過(guò)早或過(guò)晚的刷新它,將會(huì )觸發(fā)窗口看門(mén)狗復位。第二個(gè)看門(mén)狗稱(chēng)為獨立看門(mén)狗。獨立看門(mén)狗使用外部振蕩器驅動(dòng),該振蕩器與主系統時(shí)鐘是相互獨立的,這樣即便STM32 的主系統時(shí)鐘崩潰,獨立看門(mén)狗也能“力挽狂瀾”。

在現代電子設計行業(yè)中,有一個(gè)問(wèn)題是無(wú)法逃避的,那就是你不得不想方設法提高代碼的安全性以防止被破解人員盜用。聽(tīng)師傅說(shuō),在極難得電子市場(chǎng),復制一個(gè)芯片只需要幾分鐘。STM32 可以鎖住其內部Flash 使破解人員無(wú)法通過(guò)調試端口讀取其內容。當Flash 的讀保護功能開(kāi)啟后,其寫(xiě)保護功能也隨之開(kāi)啟。寫(xiě)保護功能常用于防止一些來(lái)歷不明的代碼寫(xiě)入中斷向量表。但是,寫(xiě)保護不僅可以保護中斷向量表,還可以進(jìn)一步將其保護范圍延伸到整個(gè)Flash 中的未被使用區域。另外,STM32 還有一小塊電池備份RAM 區,這個(gè)RAM 區域對應于一個(gè)入侵檢測引腳應用,當這個(gè)引腳上產(chǎn)生電平變化時(shí),STM32 會(huì )認為遭遇了入侵事件,隨即自動(dòng)將電池備份RAM 區的內容全部清除。目前好多開(kāi)發(fā)工具都開(kāi)始支持Thumb-2 指令集和STM32 系列,即使不支持也沒(méi)有關(guān)系,我們只需要將軟件升級一下即可。同時(shí),ST 公司還提供了一個(gè)設備驅動(dòng)固件庫和一個(gè)USB 開(kāi)發(fā)應用庫,以方便調用。對于STM32 來(lái)說(shuō),一些早期微控制器比如早期的STR7 和STR9 發(fā)布的ANSI C 庫和源代碼都是可移植的。這些程序的接口已經(jīng)在許多流行的編譯工具上得到了整合。相似的,許多開(kāi)源的或者商用的RTOS,還有一些中間件(比如TCP/IP 棧,文件系統)對以STM32 系列微控制器來(lái)說(shuō)也是可用的。

Cortex-M3 還帶有一個(gè)全新調試系統CoreSight。用戶(hù)可以使用標準的JTAG 接口或者雙線(xiàn)串行接口通過(guò)調試端口(Debug Access Port)實(shí)現和CoreSight 系統的對接。除了提供調試運行控制服務(wù)之外,STM32 上的CoreSight 還提供斷點(diǎn)數據查看功能以及一個(gè)指令跟蹤器。指令跟蹤器可以將用戶(hù)選擇的應用信息上傳到調試工具里。從而可以為用戶(hù)提供額外的調試信息,并且它在軟件運行期間同樣可以使用。“入門(mén)既不難,深造也是辦得到的”,只要你有恒心、有決心,跟隨我們的“連載”一步步走下去,將來(lái)就一定能在魅力的電子世界里遨游。

  • STM32單片機中文官網(wǎng)
  • STM32單片機官方開(kāi)發(fā)工具
  • STM32單片機參考設計


關(guān)鍵詞: STM32 Cortex-M3 處理器

評論


相關(guān)推薦

技術(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>