本發(fā)明涉及一種具有可移植性與低功耗的mcu裝置,涉及微控制器。
背景技術(shù):
1、伴隨著技術(shù)的進(jìn)步與社會(huì)的演進(jìn),社會(huì)在最近幾年里也正在以令人驚訝的方式經(jīng)歷著一場(chǎng)深刻變化。人類社會(huì)由最開始的機(jī)械電子工業(yè)、隨后的電子信息時(shí)代、現(xiàn)在的智能時(shí)代都經(jīng)歷著巨大的變革。伴隨著時(shí)代的不斷變化,電子產(chǎn)品發(fā)展表現(xiàn)出了越來越明顯的態(tài)勢(shì),在我們的日常生活當(dāng)中扮演者更加重要的角色。在一定程度上,電子產(chǎn)品已成為當(dāng)代人們生活必不可少的部分。在集成電路與互聯(lián)網(wǎng)技術(shù)高速發(fā)展的背景下,各類電子產(chǎn)品層出不窮,已經(jīng)成為了當(dāng)今社會(huì)中的一個(gè)重要產(chǎn)品。當(dāng)前世界各大企業(yè)紛紛開發(fā)本國(guó)微控制器產(chǎn)品來適應(yīng)市場(chǎng)需求。隨著物聯(lián)網(wǎng),汽車電子,工業(yè)控制等行業(yè)的發(fā)展,微控制器(mcu)的下游應(yīng)用需求將會(huì)不斷攀升,這為mcu產(chǎn)業(yè)市場(chǎng)拓展提供了廣闊空間。
2、mcu是一款集成了存儲(chǔ)器、輸入輸出端口、定時(shí)器、串行通信端口和數(shù)模轉(zhuǎn)換器(digital-to-analog?converter,dac)等外圍器件的系統(tǒng)計(jì)算機(jī),它的核心是中央處理器(central?process?unit,cpu)。mcu可以處理各種復(fù)雜而又龐大的指令,并具有強(qiáng)大的功能擴(kuò)展能力,可以按照處理器參與一次運(yùn)算的數(shù)據(jù)長(zhǎng)度,即位寬,對(duì)其進(jìn)行分類,包括4位、8位、16位、32位以及64位。據(jù)2020年在cisa上的公示信息表明,在國(guó)內(nèi)的mcu市場(chǎng)中,8位和32位的mcu分別占據(jù)了43%和54%的市場(chǎng)份額,這兩種mcu是使用度最高的。8位mcu因其安全、穩(wěn)定、結(jié)構(gòu)簡(jiǎn)單靈活、設(shè)計(jì)容易、成本低廉等優(yōu)點(diǎn)被廣泛應(yīng)用于中低端工控等基礎(chǔ)領(lǐng)域。和8位mcu相比,32位mcu展現(xiàn)出更加優(yōu)秀的運(yùn)算能力,能夠同時(shí)處理更多數(shù)量的外部設(shè)備。因此在智能家居、汽車電子等更為高端、更為復(fù)雜的場(chǎng)景中得到了廣泛的應(yīng)用。
3、國(guó)內(nèi)外對(duì)mcu的研究,最初由于受處理器核心的命令和數(shù)據(jù)約束,mcu計(jì)算速度和運(yùn)行效率較低。但隨著研究人員在系統(tǒng)結(jié)構(gòu)和芯片技術(shù)等方面的深入研究,mcu在性能和運(yùn)行速度上得到了極大地改善。盡管單片機(jī)技術(shù)發(fā)展迅速,mcu的低功耗和低成本特點(diǎn)使其備受關(guān)注,但從國(guó)內(nèi)外整體發(fā)展?fàn)顩r來看,國(guó)內(nèi)的研究還處在前期階段,缺乏深度和系統(tǒng)性的研究?,F(xiàn)有mcu裝置在可移植性方面也存在一定的局限性,限制了其廣泛應(yīng)用。
技術(shù)實(shí)現(xiàn)思路
1、發(fā)明目的:針對(duì)現(xiàn)有技術(shù)中存在的問題與不足,本發(fā)明提供一種具有可移植性與低功耗的mcu裝置,以彌補(bǔ)現(xiàn)有技術(shù)的不足,提高mcu的計(jì)算速度和運(yùn)行效率。
2、技術(shù)方案:一種具有可移植性與低功耗的mcu裝置,包括指令架構(gòu)、存儲(chǔ)架構(gòu)、流水線架構(gòu)、處理器內(nèi)核與外設(shè)ip、uart模塊、spi模塊、tmr0模塊、gpio模塊和wdt模塊。
3、所述指令架構(gòu)包括操作文件寄存器的字節(jié)操作類指令,操作文件寄存器的位操作類指令,立即數(shù)操作類指令以及固定編碼格式控制類指令;每個(gè)指令有對(duì)應(yīng)代碼塊或者字節(jié)表;在所有的操作類指令中,操作碼字段位于最高位段,操作碼字段包含指令類型和功能信息。
4、所述存儲(chǔ)架構(gòu)包括指令存儲(chǔ)區(qū)、核心(core)和數(shù)據(jù)存儲(chǔ)區(qū);首先,指令存儲(chǔ)區(qū)存儲(chǔ)mcu執(zhí)行的指令,包括閃存或rom實(shí)現(xiàn);其次,核心(core)從指令存儲(chǔ)區(qū)讀取指令并執(zhí)行,通過總線與指令存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行通信;數(shù)據(jù)存儲(chǔ)區(qū)用于存儲(chǔ)mcu運(yùn)行過程中產(chǎn)生的數(shù)據(jù)。
5、指令存儲(chǔ)區(qū)分配有不同大小和數(shù)量的區(qū)域,指令存儲(chǔ)區(qū)的分配過程涉及為不同類型的指令分配適當(dāng)?shù)拇鎯?chǔ)區(qū)域,以確保有效的指令訪問和執(zhí)行。首先,系統(tǒng)設(shè)計(jì)者根據(jù)指令的大小、數(shù)量及其特性,劃分指令存儲(chǔ)區(qū)為多個(gè)區(qū)域。這些區(qū)域的大小通?;谥噶畹木唧w需求,例如,字節(jié)操作指令、位操作指令和控制指令可能需要不同大小的存儲(chǔ)區(qū)域。接著,系統(tǒng)會(huì)為每種類型的指令分配一個(gè)或多個(gè)存儲(chǔ)區(qū)域,這些區(qū)域的大小和數(shù)量根據(jù)預(yù)期的指令集規(guī)模進(jìn)行調(diào)整。最后,系統(tǒng)確保每個(gè)指令在其分配的區(qū)域內(nèi)能夠高效地存儲(chǔ)和檢索,避免了存儲(chǔ)空間的浪費(fèi),并優(yōu)化了指令訪問的速度和效率。這一過程通常由編譯器和操作系統(tǒng)共同管理,通過動(dòng)態(tài)分配和靜態(tài)分配策略來實(shí)現(xiàn)指令存儲(chǔ)的高效利用。通過分區(qū)技術(shù)與地址轉(zhuǎn)換技術(shù),使得指令存儲(chǔ)具有更廣泛的適用性;所述地址轉(zhuǎn)換技術(shù),用于管理和訪問存儲(chǔ)器的方法,將邏輯地址映射到物理地址;需要訪問的指令或數(shù)據(jù)在內(nèi)存中的地址超出當(dāng)前內(nèi)存分頁的范圍時(shí),采用多種不同的尋址方式來實(shí)現(xiàn)直接跳轉(zhuǎn)到目標(biāo)地址;因指令存儲(chǔ)器與寄存器有某種映射關(guān)系,所以在程序運(yùn)行時(shí),若內(nèi)存無殘留,則需要對(duì)整個(gè)操作系統(tǒng)進(jìn)行重新初始化。
6、數(shù)據(jù)存儲(chǔ)區(qū),分成4個(gè)獨(dú)立分頁,分頁主要包括特殊功能寄存器區(qū),通用寄存器區(qū),以及公共映射區(qū)。特殊功能寄存器區(qū)為存放具有特殊功能的寄存器,在每一個(gè)分頁上安裝有低地址的單位,包括內(nèi)核與外設(shè)這兩種類型的配置寄存器。在一個(gè)設(shè)定的時(shí)間里,特殊功能寄存器區(qū)按設(shè)定規(guī)則讀寫數(shù)據(jù)文件,在設(shè)定時(shí)間點(diǎn),通過定時(shí)器中斷或調(diào)度器觸發(fā),對(duì)映射到設(shè)定內(nèi)存地址的特殊功能寄存器進(jìn)行讀寫操作,依據(jù)預(yù)先定義的規(guī)則和條件,從而實(shí)現(xiàn)對(duì)硬件功能的控制和監(jiān)視。通用寄存器內(nèi)保存有軟件內(nèi)定義變量通用數(shù)據(jù)并保存于各分頁高地址單元。第一分頁70h至7fh映射全部分頁公共存儲(chǔ)區(qū)使數(shù)據(jù)在各分頁間存儲(chǔ)單元中任意分享,實(shí)現(xiàn)高效數(shù)據(jù)管理。
7、所述流水線架構(gòu)采用了雙層淺流水結(jié)構(gòu)。其中,第一流水線用于取指,第二流水線用于執(zhí)行。在第二流水線中,每個(gè)時(shí)鐘周期被分成四個(gè)階段,每個(gè)階段由時(shí)鐘的不同邊沿觸發(fā):第一個(gè)邊沿用于指令譯碼,第二個(gè)邊沿用于操作數(shù)提取,第三個(gè)邊沿用于指令執(zhí)行,第四個(gè)邊沿用于結(jié)果寫回。
8、所述處理器內(nèi)核與外設(shè)ip中,分為如下功能模塊,分別是專用寄存器堆模塊,程序計(jì)數(shù)器模塊,控制器模塊,中斷控制模塊,時(shí)鐘/復(fù)位管理模塊和堆棧模塊。
9、所述專用寄存器堆模塊的主要功能是為內(nèi)核和外圍設(shè)備設(shè)置工作信息,能實(shí)時(shí)地記錄程序在執(zhí)行時(shí)產(chǎn)生的各種重要標(biāo)志信號(hào)。該模塊由六個(gè)有特殊作用的寄存器組成:indf是間接尋址模式寄存器,pcl是程序計(jì)數(shù)器的低八位,status是狀態(tài)寄存器,fsr是文件選擇寄存器,pclath是程序計(jì)數(shù)器的高五位,而work是工作寄存器但沒有統(tǒng)一地址編碼。每個(gè)寄存器都有相應(yīng)的復(fù)位值。
10、所述程序計(jì)數(shù)器模塊的主要功能是分析當(dāng)前指令的解碼、運(yùn)算結(jié)果和外部中斷,從而確定下一條指令的地址,確保系統(tǒng)的正常運(yùn)行。
11、程序計(jì)數(shù)器包括三部分,分別是指令譯碼模塊、運(yùn)算單元模塊、寄存器。指令譯碼模塊負(fù)責(zé)將從存儲(chǔ)器中讀取到的指令信息通過串行方式傳送給運(yùn)算單元模塊,以便于計(jì)算出相應(yīng)的數(shù)據(jù)值并發(fā)送至寄存器中儲(chǔ)存,其中涵蓋了操作碼、操作數(shù)地址、立即數(shù)和目標(biāo)地址等重要的信息,以實(shí)現(xiàn)對(duì)其他模塊工作的高精度控制。
12、執(zhí)行控制代碼模塊可以實(shí)現(xiàn)從操作序列中提取關(guān)鍵位置,然后根據(jù)該關(guān)鍵位置產(chǎn)生新的操作序列,最后再與原操作序列合并形成一個(gè)完整的操作序列。通過對(duì)輸入的兩個(gè)源操作數(shù)和操作碼進(jìn)行16種運(yùn)算,運(yùn)算單元模塊能夠?qū)⑦\(yùn)算后獲得的運(yùn)算結(jié)果和重要的標(biāo)志位信息統(tǒng)一輸出,從而實(shí)現(xiàn)高效的數(shù)據(jù)處理。中間處理單元模塊用于處理由各個(gè)操作產(chǎn)生的數(shù)據(jù)以及從多個(gè)端口獲得的控制數(shù)據(jù)??刂破髂K基于互聯(lián)總線,負(fù)責(zé)控制特殊功能寄存器、通用寄存器和w寄存器的讀寫時(shí)序,并輸出相應(yīng)的讀寫使能信號(hào)。通信模塊用于傳輸控制數(shù)據(jù)和狀態(tài)報(bào)告,并與外部設(shè)備之間的通信協(xié)議進(jìn)行交互。中斷控制模塊具備同步和響應(yīng)來自多個(gè)中斷源的中斷請(qǐng)求信號(hào)的能力,從而能夠生成系統(tǒng)中斷信號(hào)。存儲(chǔ)單元模塊負(fù)責(zé)存儲(chǔ)數(shù)據(jù)以及與存儲(chǔ)器接口連接的器件狀態(tài)。時(shí)鐘/復(fù)位管理模塊接收與內(nèi)存接口相連的器件狀態(tài)和外部晶振的時(shí)鐘信息,產(chǎn)生多個(gè)時(shí)鐘信號(hào),如基準(zhǔn)時(shí)鐘、四相時(shí)鐘和指令周期時(shí)鐘,這些信號(hào)驅(qū)動(dòng)整個(gè)系統(tǒng)的正常工作,并管理復(fù)位源,生成整個(gè)系統(tǒng)的復(fù)位信號(hào)。數(shù)據(jù)存儲(chǔ)模塊主要用于保存應(yīng)用程序中所必須用到的數(shù)據(jù)格式及相關(guān)參數(shù)。盡管堆棧模塊具備保存調(diào)用子程序以及相應(yīng)中斷前的指令地址的能力,但需要注意的是,它不能被軟件直接進(jìn)行讀寫操作。
13、專用寄存器堆模塊提供了對(duì)系統(tǒng)中關(guān)鍵寄存器的訪問和操作;程序計(jì)數(shù)器模塊通過分析指令的解碼結(jié)果,通過指令譯碼模塊、運(yùn)算單元模塊和寄存器,確保指令的正確執(zhí)行;控制器模塊管理寄存器的讀寫時(shí)序,協(xié)調(diào)各模塊的操作;中間處理單元模塊處理數(shù)據(jù)和控制信號(hào),并與通信模塊進(jìn)行數(shù)據(jù)交換;通信模塊負(fù)責(zé)與外部設(shè)備的通信;存儲(chǔ)單元模塊存儲(chǔ)數(shù)據(jù),并與時(shí)鐘/復(fù)位管理模塊緊密配合,確保系統(tǒng)的時(shí)鐘信號(hào)和復(fù)位功能;堆棧模塊則提供了數(shù)據(jù)保存的能力,但受限于不被軟件直接操作。
14、所述uart模塊作為一種異步傳輸器,通過設(shè)定接收端和發(fā)射端的傳輸格式和速率,能夠確保數(shù)據(jù)在不需要使用時(shí)鐘線的情況下被正常傳輸。為了實(shí)現(xiàn)uart的收發(fā)功能,對(duì)兩種類型的寄存器進(jìn)行了配置:第一種是uart的外圍設(shè)備寄存器,通過配置它可以實(shí)現(xiàn)對(duì)uart工作模式的靈活配置,包括選擇通信模式(接收、發(fā)送或全雙工)、設(shè)置波特率、數(shù)據(jù)位數(shù)、停止位數(shù)以及校驗(yàn)方式,從而適應(yīng)不同的數(shù)據(jù)傳輸需求;另一種是核心的中斷類寄存器,當(dāng)內(nèi)核需要實(shí)時(shí)響應(yīng)外部設(shè)備的數(shù)據(jù)變化或事件時(shí),通過配置中斷類寄存器可以使系統(tǒng)以中斷的方式對(duì)外設(shè)寄存器進(jìn)行訪問。這種方式允許系統(tǒng)在需要時(shí)立即響應(yīng)外部事件,如uart接收到新數(shù)據(jù)或發(fā)送完成,從而實(shí)現(xiàn)高效的數(shù)據(jù)交換和處理,符合內(nèi)核調(diào)度上的實(shí)時(shí)性需求。
15、uart模塊支持8位和9位的數(shù)據(jù)發(fā)送模式,提供了可選的校驗(yàn)位和1位結(jié)束位。此模塊還能夠支持接收中斷功能。包括連接到sfr總線接口的多個(gè)寄存器(如rcsta、rcreg、spbrg、txreg和txsta),接收和發(fā)送的fifo緩沖區(qū)、比特率發(fā)生器、接收狀態(tài)機(jī)和發(fā)送狀態(tài)機(jī),這些組件通過內(nèi)部訪問和中斷信號(hào)相互連接,協(xié)調(diào)處理從rx接收到tx發(fā)送的并行數(shù)據(jù)流。在此基礎(chǔ)上還增加了自定義的協(xié)議接口,可以與其它設(shè)備進(jìn)行數(shù)據(jù)交換。此模塊的可擴(kuò)展性和靈活性都得到了顯著的提升,從而為系統(tǒng)的升級(jí)和更改提供了更加便利的條件。采用這種模塊化的設(shè)計(jì)方案,既充分節(jié)省了硬件資源,還降低了開發(fā)難度。uart模塊是由sfr總線控制邏輯和uart收發(fā)控制邏輯兩部分構(gòu)成的,是本發(fā)明中不可或缺的核心組成部分。sfr總線控制部分主要用于實(shí)現(xiàn)與cpu之間的數(shù)據(jù)傳輸。根據(jù)cpu的指令配置,可以對(duì)與uart模塊有關(guān)的工作寄存器進(jìn)行分配,對(duì)相應(yīng)的狀態(tài)寄存器進(jìn)行檢測(cè),對(duì)收發(fā)寄存器進(jìn)行讀寫操作。通過使用配置信息,uart收發(fā)控制邏輯能夠?qū)崿F(xiàn)對(duì)不同波特率數(shù)據(jù)信息的收發(fā)與緩存功能,并且能夠檢測(cè)傳輸?shù)臄?shù)據(jù)幀是否出現(xiàn)錯(cuò)誤,并且將結(jié)果以標(biāo)志位的方式進(jìn)行輸出,為數(shù)據(jù)傳輸提供了可靠的保障。
16、所述spi模塊支持主從兩種傳輸模式和四種通信模式,具備接收中斷功能。同時(shí)該模塊還具備與其它外圍設(shè)備進(jìn)行數(shù)據(jù)交換的能力。將該模塊的設(shè)計(jì)劃分為sfr總線控制邏輯和spi收發(fā)控制邏輯兩個(gè)部分。spi收發(fā)控制邏輯涵蓋了多個(gè)模塊,其中包括regcon發(fā)送信號(hào)控制模塊、trig觸發(fā)控制模塊、baudgen時(shí)鐘分頻模塊、rx數(shù)據(jù)接收模塊以及tx數(shù)據(jù)發(fā)送模塊。
17、所述tmr0模塊實(shí)現(xiàn)定時(shí)功能的途徑主要由以下兩種:定時(shí)和計(jì)數(shù)。定時(shí)利用分頻計(jì)數(shù)實(shí)現(xiàn)定時(shí)功能,計(jì)數(shù)基于來自外部輸入的脈沖信號(hào),當(dāng)這個(gè)脈沖信號(hào)周期性地變化時(shí)即可實(shí)現(xiàn)定時(shí)功能。
18、本發(fā)明中的定時(shí)計(jì)數(shù)器模塊有內(nèi)部時(shí)鐘和外部時(shí)鐘這兩種驅(qū)動(dòng)方式可供選擇。其中,利用外部時(shí)鐘驅(qū)動(dòng)可以自主選擇觸發(fā)邊沿。首先,配置定時(shí)器以接收外部時(shí)鐘源作為計(jì)時(shí)基準(zhǔn),并通過寄存器設(shè)置選擇觸發(fā)邊沿的類型,如上升沿、下降沿或雙邊沿。定時(shí)器內(nèi)部包含八位預(yù)分頻器和計(jì)數(shù)寄存器,八位預(yù)分頻器可由軟件編程設(shè)置其分頻系數(shù),確定每個(gè)時(shí)鐘脈沖對(duì)計(jì)數(shù)器的影響次數(shù),從而調(diào)節(jié)計(jì)時(shí)精度和溢出時(shí)間間隔。計(jì)數(shù)寄存器可通過cpu進(jìn)行讀寫操作,cpu可以讀取當(dāng)前計(jì)數(shù)值或?qū)懭胄碌某跏贾担刂贫〞r(shí)器的計(jì)數(shù)狀態(tài)。當(dāng)計(jì)數(shù)寄存器溢出時(shí),定時(shí)器生成中斷請(qǐng)求信號(hào),系統(tǒng)響應(yīng)中斷請(qǐng)求并執(zhí)行預(yù)定義的中斷服務(wù)程序(isr),以處理特定的中斷事件,如重置計(jì)數(shù)器、更新數(shù)據(jù)或執(zhí)行其他相關(guān)任務(wù),實(shí)現(xiàn)了定時(shí)器的精確計(jì)時(shí)功能及時(shí)中斷處理。
19、作為微處理器與外部進(jìn)行數(shù)據(jù)通信的一種接口,gpio模塊的引腳用作數(shù)據(jù)的輸入輸出,還可以和其他功能模塊進(jìn)行復(fù)用,實(shí)現(xiàn)不同工作模式中的中斷。
20、采用了兩組由8個(gè)引腳組成的gpio,每個(gè)引腳都使用tris寄存器上對(duì)應(yīng)的位進(jìn)行控制,輸入信號(hào)以高電平表示,而輸出信號(hào)則以低電平呈現(xiàn)。在設(shè)置中斷源時(shí),必須先將使能信號(hào)傳遞到intcon寄存器的rbie位,以確保中斷請(qǐng)求信號(hào)能夠被發(fā)送到intcon的rbif位。另外,如果需要對(duì)一個(gè)寄存器進(jìn)行操作的話,可以選擇不同的寄存器分別執(zhí)行。在具體的實(shí)現(xiàn)過程中,本發(fā)明采用了一種將兩個(gè)寄存器映射到同一物理地址的方法,以解決輸入和輸出方向之間的邏輯沖突問題。
21、wdt模塊中,使用看門狗定時(shí)的方法來檢測(cè)系統(tǒng),當(dāng)程序運(yùn)行異常時(shí),溢出信號(hào)送到分頻器中后會(huì)根據(jù)此分頻比生成一個(gè)看門狗溢出信號(hào),再把這個(gè)看門狗信號(hào)輸入至內(nèi)核的復(fù)位管理模塊,繼而引發(fā)全局復(fù)位。當(dāng)程序正常運(yùn)行時(shí),就不會(huì)引發(fā)復(fù)位。
22、低功耗設(shè)計(jì)與改進(jìn):
23、(1)操作數(shù)隔離設(shè)計(jì)
24、alu?是一個(gè)由?16?種運(yùn)算電路組成的計(jì)算單元,當(dāng)輸入信號(hào)發(fā)生反轉(zhuǎn)時(shí),不可避免地會(huì)產(chǎn)生相當(dāng)大的翻轉(zhuǎn)功率。為了降低這個(gè)翻轉(zhuǎn)功耗,需要對(duì)專用寄存器堆模塊中的每個(gè)寄存器地址都設(shè)置有相應(yīng)的操作標(biāo)識(shí),例如?indf、pcl、status、fsr、pclath?和?work?寄存器。當(dāng)alu類指令到達(dá)時(shí),每條指令所包含的操作碼、src1和src2操作數(shù)在計(jì)算完成后會(huì)傳送到alu單元之中,在輸入src1和src2操作數(shù)之前,引入了一個(gè)操作數(shù)隔離寄存器,alu的操作數(shù)隔離電路用于在執(zhí)行運(yùn)算時(shí),將不同的操作數(shù)有效地隔離和選擇,以確保正確的數(shù)據(jù)傳輸和處理。該電路通過使用多路復(fù)用器和控制信號(hào),根據(jù)指令需求從寄存器或立即數(shù)中選擇適當(dāng)?shù)牟僮鲾?shù),送入alu進(jìn)行運(yùn)算。
25、(2)休眠喚醒模式
26、一旦系統(tǒng)配置完成,mcu?可能會(huì)在剩余時(shí)間內(nèi)很有可能處于閑置狀態(tài)。只有在外圍設(shè)備的模塊發(fā)出中斷請(qǐng)求信號(hào)后,內(nèi)核才會(huì)對(duì)其做出響應(yīng)并執(zhí)行中斷程序,以確保系統(tǒng)的正常運(yùn)行。在?mcu?處于閑置狀態(tài)時(shí),可以采用一種省電的休眠模式,即待機(jī)模式或低功耗模式,以替代那些機(jī)械且缺乏實(shí)際意義的操作過程,從而使?mcu?在這段時(shí)間內(nèi)得到短暫的休息,并保持在較低的功耗水平。這種休眠模式通常包括關(guān)閉部分內(nèi)部電路或降低處理器頻率,以減少功耗,同時(shí)保留足夠的功能以響應(yīng)外部中斷信號(hào)。在這個(gè)過程中,如果有必要的話,會(huì)將當(dāng)前寄存器狀態(tài)、臨時(shí)變量以及任何中間計(jì)算結(jié)果等關(guān)鍵數(shù)據(jù)存儲(chǔ)起來,以備下次喚醒時(shí)能夠迅速恢復(fù)到休眠前的狀態(tài),繼續(xù)進(jìn)行未完成的任務(wù)或執(zhí)行新的操作。當(dāng)需要執(zhí)行控制任務(wù)時(shí),可以使用中斷請(qǐng)求或看門狗定時(shí)等方式喚醒mcu系統(tǒng)。在休眠模式下,如果要重新開始工作的話,則必須先激活休眠使能電路才能恢復(fù)工作。當(dāng)工作模式轉(zhuǎn)換為休眠模式時(shí),內(nèi)核需要執(zhí)行sleep指令,隨后mcu會(huì)對(duì)休眠狀態(tài)進(jìn)行譯碼,以拉高能信號(hào),并關(guān)閉clk_q1、clk_q2、clk_q3、clk_q4四相時(shí)鐘,而mcu中的各寄存器則會(huì)保持當(dāng)前狀態(tài)不變。在進(jìn)入休眠狀態(tài)后,本發(fā)明提出了兩種喚醒方法,其中一種是采用“看門狗”定時(shí),即使系統(tǒng)處于休眠狀態(tài),看門狗仍能繼續(xù)工作,但當(dāng)計(jì)數(shù)溢出時(shí),會(huì)觸發(fā)系統(tǒng)復(fù)位,實(shí)現(xiàn)定時(shí)喚醒;另一種就是在系統(tǒng)進(jìn)入睡眠之后,利用休眠使能信號(hào)進(jìn)行初始化,然后通過中斷方式啟動(dòng)休眠,這樣也能夠達(dá)到一定程度的喚醒效果。第二種方法是利用中斷請(qǐng)求來觸發(fā)晶振重新起振,從而實(shí)現(xiàn)喚醒。然而,由于從起振狀態(tài)轉(zhuǎn)變?yōu)榉€(wěn)定狀態(tài)需要一段時(shí)間,因此中斷請(qǐng)求信號(hào)必須在這段時(shí)間內(nèi)始終保持高電平,直到系統(tǒng)恢復(fù)正常執(zhí)行時(shí)才能逐漸降低,否則將導(dǎo)致喚醒失敗。如果此時(shí)晶振上有一個(gè)比較高的標(biāo)志位信號(hào),則說明這個(gè)晶振上沒有任何故障或者不存在錯(cuò)誤的信息,這時(shí)就不會(huì)產(chǎn)生中斷現(xiàn)象。只有在系統(tǒng)被喚醒并進(jìn)入中斷程序后,中斷請(qǐng)求標(biāo)志位信號(hào)才會(huì)出現(xiàn)拉低現(xiàn)象。