學(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)勢。目前Cortex-M3市場以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)之間了。這簡化了軟件開發(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)試大幅簡化现使。
? 可選ITM模塊低匙,測試代碼可以通過它輸出調(diào)試信息,而且“拎包即可入住”般地方便使用碳锈。