當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡(jiǎn)稱NVIC)是Cortex-M3 處理器中一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3 的微控制器提供了標(biāo)準(zhǔn)的中斷架構(gòu)和優(yōu)秀的中斷響應(yīng)能力

STM32 的核心Cortex-M3 處理器

STM32 的核心Cortex-M3 處理器是一個(gè)標(biāo)準(zhǔn)化的微控制器結(jié)構(gòu),希望思考一下,何為標(biāo)準(zhǔn)化?

簡(jiǎn)言之,Cortex-M3 處理器擁有32 位CPU,并行總線結(jié)構(gòu),嵌套中斷向量控制單元,調(diào)試系

統(tǒng)以及標(biāo)準(zhǔn)的存儲(chǔ)映射。

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

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

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

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

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

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

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

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

 

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉