學(xué)號(hào):14020520011 姓名:孟天玉
【嵌牛導(dǎo)讀】:基于STM32的單片機(jī)部分基礎(chǔ)學(xué)習(xí)
【嵌牛鼻子】:學(xué)習(xí)筆記、單片機(jī)、STM32
【嵌牛提問】:STM32有哪些基礎(chǔ)模塊?能實(shí)現(xiàn)什么功能?
【嵌牛正文】:
Cortex-M3作為STM32的內(nèi)核,采用ARM7構(gòu)架,不僅支持Thumb-2指令集,而且擁有許多新特性。與ARM7相比,Cortex-M性能更強(qiáng)勁,代碼密度更高,有位帶操作,可嵌套中斷,低成本,帝功耗的優(yōu)勢(shì)。目前Cortex-M3市場(chǎng)以ST(意法半導(dǎo)體)的STM32和Luminary(流明諾瑞)的LM3S最為著名。
一.Cortex-M3編程模式
Cortex-M3處理器采用ARMv7-M架構(gòu),它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架構(gòu),Cortex-M3處理器不能執(zhí)行ARM指令集。
Thumb-2在Thumb指令集架構(gòu)(ISA)上進(jìn)行了大量的改進(jìn),它與Thumb相比,具有更高的代碼密度并提供16/32位指令的更高性能。
1.工作模式:
Cortex-M3處理器支持2種工作模式:線程模式和處理模式。在復(fù)位時(shí)處理器進(jìn)入“線程模式”,異常返回時(shí)也會(huì)進(jìn)入該模式,特權(quán)和用戶(非特權(quán))模式代碼能夠在“線程模式”下運(yùn)行。
出現(xiàn)異常模式時(shí)處理器進(jìn)入“處理模式”,在處理模式下,所有代碼都是特權(quán)訪問的。
2.工作狀態(tài):
Cortex-M3處理器有2種工作狀態(tài)。
Thumb狀態(tài):這是16位和32位“半字對(duì)齊”的Thumb和Thumb-2指令的執(zhí)行狀態(tài)。
3.調(diào)試狀態(tài):
處理器停止并進(jìn)行調(diào)試,進(jìn)入該狀態(tài)。
二.Cortex-M3特點(diǎn)
1.高性能
? 許多指令都是單周期的——包括乘法相關(guān)指令。并且從整體性能上,Cortex-M3比得過絕大多數(shù)其它的架構(gòu)。
? 指令總線和數(shù)據(jù)總線被分開,取值和訪內(nèi)可以并行不悖
? Thumb-2的到來告別了狀態(tài)切換的舊世代,再也不需要花時(shí)間來切換于32位ARM狀態(tài)和16位Thumb狀態(tài)之間了。這簡(jiǎn)化了軟件開發(fā)和代碼維護(hù),使產(chǎn)品面市更快。
? Thumb-2指令集為編程帶來了更多的靈活性。許多數(shù)據(jù)操作現(xiàn)在能用更短的代碼搞定,這意味著Cortex-M3的代碼密度更高,也就對(duì)存儲(chǔ)器的需求更少。
? 取指都按32位處理。同一周期最多可以取出兩條指令,留下了更多的帶寬給數(shù)據(jù)傳輸。
? Cortex-M3的設(shè)計(jì)允許單片機(jī)高頻運(yùn)行(現(xiàn)代半導(dǎo)體制造技術(shù)能保證100MHz以上的速度)。即使在相同的速度下運(yùn)行,CM3的每指令周期數(shù)(CPI)也更低,于是同樣的MHz下可以做更多的工作;另一方面,也使同一個(gè)應(yīng)用在CM3上需要更低的主頻。
2.先進(jìn)的中斷處理功能
? 內(nèi)建的嵌套向量中斷控制器支持多達(dá)240條外部中斷輸入。向量化的中斷功能劇烈地縮短了中斷延遲,因?yàn)椴辉傩枰浖ヅ袛嘀袛嘣础V袛嗟那短滓彩窃谟布缴蠈?shí)現(xiàn)的,不需要軟件代碼來實(shí)現(xiàn)。
? Cortex-M3在進(jìn)入異常服務(wù)例程時(shí),自動(dòng)壓棧了R0-R3, R12, LR, PSR和PC,并且在返回時(shí)自動(dòng)彈出它們,這多清爽!既加速了中斷的響應(yīng),也再不需要匯編語言代碼了(第8章有詳述)。
? NVIC支持對(duì)每一路中斷設(shè)置不同的優(yōu)先級(jí),使得中斷管理極富彈性。最粗線條的實(shí)現(xiàn)也至少要支持8級(jí)優(yōu)先級(jí),而且還能動(dòng)態(tài)地被修改。
? 優(yōu)化中斷響應(yīng)還有兩招,它們分別是“咬尾中斷機(jī)制”和“晚到中斷機(jī)制”。
? 有些需要較多周期才能執(zhí)行完的指令,是可以被中斷-繼續(xù)的——就好比它們是一串指令一樣。這些指令包括加載多個(gè)寄存器(LDM),存儲(chǔ)多個(gè)寄存器(STM),多個(gè)寄存器參與的PUSH,以及多個(gè)寄存器參與的POP。
? 除非系統(tǒng)被徹底地鎖定,NMI(不可屏蔽中斷)會(huì)在收到請(qǐng)求的第一時(shí)間予以響應(yīng)。對(duì)于很多安全-關(guān)鍵(safety-critical)的應(yīng)用,NMI都是必不不可少的(如化學(xué)反應(yīng)即將失控時(shí)的緊急停機(jī))。
3.低功耗
? Cortex-M3需要的邏輯門數(shù)少,所以先天就適合低功耗要求的應(yīng)用(功率低于0.19mW/MHz)在內(nèi)核水平上支持節(jié)能模式(SLEEPING和SLEEPDEEP位)。通過使用“等待中斷指令(WFI)”和“等待事件指令(WFE)”,內(nèi)核可以進(jìn)入睡眠模式,并且以不同的方式喚醒。另外,模塊的時(shí)鐘是盡可能地分開供應(yīng)的,所以在睡眠時(shí)可以把CM3的大多數(shù)“官能團(tuán)”給停掉。
? CM3的設(shè)計(jì)是全靜態(tài)的、同步的、可綜合的。任何低功耗的或是標(biāo)準(zhǔn)的半導(dǎo)體工藝均可放心飲用。
4.系統(tǒng)特性
? 系統(tǒng)支持“位尋址帶”操作(8051位尋址機(jī)制的“威力大幅加強(qiáng)版”),字節(jié)不變的大端模式,并且支持非對(duì)齊的數(shù)據(jù)訪問。
? 擁有先進(jìn)的fault處理機(jī)制,支持多種類型的異常和faults,使故障診斷更容易。
? 通過引入banked堆棧指針機(jī)制,把系統(tǒng)程序使用的堆棧和用戶程序使用的堆棧劃清界線。如果再配上可選的MPU,處理器就能徹底滿足對(duì)軟件健壯性和可靠性有嚴(yán)格要求的應(yīng)用。
5.調(diào)試支持
? 在支持傳統(tǒng)的JTAG基礎(chǔ)上,還支持更新更好的串行線調(diào)試接口。
? 基于CoreSight調(diào)試解決方案,使得處理器哪怕是在運(yùn)行時(shí),也能訪問處理器狀態(tài)和存儲(chǔ)器內(nèi)容。
? 內(nèi)建了對(duì)多達(dá)6個(gè)斷點(diǎn)和4個(gè)數(shù)據(jù)觀察點(diǎn)的支持。
? 可以選配一個(gè)ETM,用于指令跟蹤。數(shù)據(jù)的跟蹤可以使用DWT
? 在調(diào)試方面還加入了以下的新特性,包括fault狀態(tài)寄存器,新的fault異常,以及閃存修補(bǔ) (patch)操作,使得調(diào)試大幅簡(jiǎn)化。
? 可選ITM模塊,測(cè)試代碼可以通過它輸出調(diào)試信息,而且“拎包即可入住”般地方便使用。