微控制器在諸多行業(yè)中都所有使用,尤其是工科專業(yè)。對于微控制器,小編在往期文章中有所介紹,如微控制器工作原理、微控制器特點(diǎn)等。為增進(jìn)大家對微控制器的認(rèn)識(shí),本文將對MSP430微控制器標(biāo)準(zhǔn)軟件設(shè)計(jì)流程加以介紹。如果你對本文內(nèi)容具有興趣,不妨繼續(xù)往下閱讀哦。
MSP430微控制器軟件設(shè)計(jì)的標(biāo)準(zhǔn)流程均可參考下圖。該標(biāo)準(zhǔn)的軟件流程可將系統(tǒng)整體功耗降至最低。
上圖所描述的軟件流程代碼是基于中斷程序的,平時(shí)MCU處于睡眠狀態(tài),直到有中斷產(chǎn)生時(shí)MCU被喚醒,最大程度降低系統(tǒng)功耗,優(yōu)化電源效率。
理解上圖所示的中斷服務(wù)子程序(1SRs)流程,能更好的掌握MSP430微控制器處理低功耗的模式。MSP430微控制器的低功耗模式由狀態(tài)寄存器SR的控制位控制,在執(zhí)行中斷服務(wù)子程序之前,狀態(tài)寄存器SR的低功耗模式控制位可以被優(yōu)先壓棧。當(dāng)中斷服務(wù)子程序返回時(shí),主程序調(diào)用中斷之前的低功耗模式控制位,從而進(jìn)入中斷之前的低功耗模式狀態(tài)。當(dāng)然,如果我們在ISR中斷服務(wù)子程序返回前修改了保存在SR中的低功耗模式控制位,那么ISR中斷子程序執(zhí)行完之后,主程序流程可以轉(zhuǎn)到另一個(gè)不同的低功耗工作模式。
中斷喚醒機(jī)制作為MSP430微控制器內(nèi)部低功耗模式的一部分,允許系統(tǒng)快速喚醒,響應(yīng)中斷事件。例如,當(dāng)一中斷事件發(fā)生之前MSP430微控制器處于低功耗LPM0模式,MCU在執(zhí)行中斷服務(wù)子程序之前首先向堆棧保存SR中的低功耗模式控制位值然后清除SR值,清除SR值使MCU從LPMO模式進(jìn)入到執(zhí)行中斷活動(dòng)模式狀態(tài)。在ISR中斷服務(wù)子程序中,軟件設(shè)計(jì)者可以寫一條語句清除SR中的低功耗模式控制位,當(dāng)中斷程序完成后,MCU從堆棧中重新裝載調(diào)用各自寄存器的狀態(tài)值。如果沒有修改SR的低功耗模式控制位,退出中斷后系統(tǒng)仍然返回進(jìn)入LPM0低功耗模式,若此時(shí)已修改SR控制位,當(dāng)從ISR中斷程序退出后,系統(tǒng)會(huì)工作于活動(dòng)模式時(shí),并且按進(jìn)入中斷之前的PC指針?biāo)傅牡刂防^續(xù)執(zhí)行程序。
由于可以在fSR中斷服務(wù)子程序中改變低功耗模式,所以設(shè)計(jì)者可以選擇在ISR程序中執(zhí)行全部任務(wù),也可以選擇在ISR喚醒MCU后在主程序中處理任務(wù)。
在ISR程序中處理時(shí)確保能立即響應(yīng)中斷事件,中斷事件發(fā)生時(shí)即能立刻處理中斷任務(wù),但是,在處理一個(gè)中斷事件時(shí),其它中斷將不能被載入,直到該中斷任務(wù)完成,而這樣長時(shí)間的中斷將會(huì)降低系統(tǒng)的響應(yīng)靈敏,所以設(shè)計(jì)者須根據(jù)不同系統(tǒng)要求選擇最佳處理方式。
上圖所示的流程圖中主程序需處理兩個(gè)中斷事件,這兩個(gè)中斷事件所要處理的任務(wù)是在主循環(huán)中處理的。ISRs執(zhí)行兩個(gè)不同的事件任務(wù)。第一個(gè)中斷,ISRs改變了保存在堆棧中SR的值,可以使系統(tǒng)退出中斷后進(jìn)入活動(dòng)工作模式,中斷事件是在主程序中被執(zhí)行,中斷事件可以是一任意應(yīng)用事件,例如定時(shí)器、按鍵處理、AD轉(zhuǎn)換等。第二個(gè)中斷,在ISR中斷服務(wù)子程序設(shè)置一標(biāo)志位,在主程序檢測該標(biāo)志位來判斷是否執(zhí)行相應(yīng)的任務(wù)。如果需處理的中斷事件能在較短的時(shí)間內(nèi)迅速完成,這樣就能夠在中斷服務(wù)子程序中直接執(zhí)行,無需進(jìn)入主程序處理,此時(shí)ISR中斷服務(wù)子程序沒必要設(shè)置標(biāo)志位或改變SR低功耗控制位退出睡眠模式,退出ISR中斷服務(wù)子程序后MCU仍然返回到睡眠模式。該流程可以根據(jù)系統(tǒng)應(yīng)用的復(fù)雜性來定,例如,只有一個(gè)中斷事一件可喚醒主程序時(shí),則無需設(shè)置系統(tǒng)標(biāo)志位,此時(shí),通過中斷喚醒主程序,然后主程序進(jìn)行相應(yīng)的任務(wù)操作,最后MCU重新進(jìn)入睡眠模式。
上圖中所提到的睡眠模式LPMn是系統(tǒng)所要用到的睡眠低功耗模式,每種應(yīng)用所涉及的模式可能會(huì)有所不同,實(shí)際的睡眠模式由整個(gè)系統(tǒng)所用到的模塊(如定時(shí)器、AD、串口等)決定,取決于系統(tǒng)模塊在相應(yīng)的睡眠模式下可否被中斷喚醒。例如由MCU的定時(shí)器負(fù)責(zé)喚醒CPU,且該定時(shí)器時(shí)鐘為ACLK時(shí),則ACLK必須保持活動(dòng)模式,則MCU可以工作在LPM3模式;但是如果定時(shí)器時(shí)鐘為DCO時(shí),則MCU必須工作在LPMO。
以上便是此次小編帶來的“微控制器”相關(guān)內(nèi)容,通過本文,希望大家對MSP430微控制器標(biāo)準(zhǔn)軟件設(shè)計(jì)流程具備一定的認(rèn)知。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!