基于單片機系統(tǒng)的事件處理方法、裝置和單片機系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種基于單片機系統(tǒng)的事件處理方法、裝置和單片機系統(tǒng),其中,基于單片機系統(tǒng)的事件處理方法,包括:檢測單片機系統(tǒng)是否有新事件觸發(fā);若檢測到所述單片機系統(tǒng)有新事件觸發(fā),則判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量;在判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中;基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。本發(fā)明的技術方案能夠保證在多任務同時產(chǎn)生時,單片機系統(tǒng)可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
【專利說明】
基于單片機系統(tǒng)的事件處理方法、裝置和單片機系統(tǒng)
技術領域
[0001]本發(fā)明涉及單片機技術領域,具體而言,涉及一種基于單片機系統(tǒng)的事件處理方法、一種基于單片機系統(tǒng)的事件處理裝置和一種單片機系統(tǒng)。
【背景技術】
[0002]現(xiàn)有家電的電控部分主要采用單片機系統(tǒng),但是由于用戶需求的多樣性,目前的單片機系統(tǒng)面臨了資源和速度的挑戰(zhàn)。
[0003]相關技術中是在家電的單片機系統(tǒng)中進行較為簡單的控制,具體如圖1所示:芯片內(nèi)部的CPU(Central Processing Unit,中央處理器)通過對其資源的設置來實現(xiàn)相應的操作,如定時器I?定時器m,以及中斷I?a,當定時器響應時,進行相關變量的計時,當變量計時到設定的值時,就賦值給相應的標志位11?In,當芯片識別到相應的標志位時,就去執(zhí)行相應的操作11?In。
[0004]雖然相關技術中的上述方案能夠滿足大部分正常的使用,但是也存在如下缺點:
[0005]由于每段程序代碼運行的時間針對不同的邏輯狀態(tài)會存在差異,因此當前沒有非常準確的方式去計算每段程序代碼的最長運行時間,只能夠估算其范圍。這樣就會存在以下問題:當幾個標志位重疊,即同時到達的時候,就會出現(xiàn)不同的程序代碼段先后運行的情況,當程序出現(xiàn)較為特殊的情況時,其運行時間會超過最短標志位所需時間的2倍,會造成最短標志位的操作沒有執(zhí)行。具體如圖2所示,橫軸表示時間,縱軸表示標志位,當一定時間后,出現(xiàn)脈沖信號,代表相應的標志位生效,脈沖信號的寬度代表相應操作的時間。圖2中以2ms、10ms和I s的標志位為例進行說明。當I s的標志位生效時,2ms和I Oms的標志位也生效;在普通情況下,三者操作時間的總和只要不超過最短標志位2ms的2倍即4ms,則不會影響;當在特殊情況時,若三者操作時間的總和超過最短標志位2ms的2倍即4ms,則當三者操作完,繼續(xù)進入2ms的操作時,發(fā)現(xiàn)過程中已經(jīng)少了一次2ms的操作。這種問題嚴重影響了實時性較高的操作執(zhí)行。而若要保證實時性,則需要設計另外的定時器,這樣就對芯片的資源提出更高的要求。
[0006]因此,如何確保單片機系統(tǒng)能夠滿足實時性任務的要求,確保即使多任務同時產(chǎn)生,依然可以及時處理事件,避免錯過未處理的事件成為亟待解決的技術問題。
【發(fā)明內(nèi)容】
[0007]本發(fā)明旨在至少解決現(xiàn)有技術或相關技術中存在的技術問題之一。
[0008]為此,本發(fā)明的一個目的在于提出了一種新的基于單片機系統(tǒng)的事件處理方案,可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0009]本發(fā)明的另一個目的在于提出了一種單片機系統(tǒng)。
[0010]為實現(xiàn)上述目的,根據(jù)本發(fā)明的第一方面的實施例,提出了一種基于單片機系統(tǒng)的事件處理方法,包括:檢測單片機系統(tǒng)是否有新事件觸發(fā);若檢測到所述單片機系統(tǒng)有新事件觸發(fā),則判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量;在判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中;基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。
[0011]根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理方法,不同于相關技術中檢測單片機的標志位來確定是否執(zhí)行相關操作的方案,本發(fā)明通過檢測單片機系統(tǒng)是否有新事件觸發(fā),并在檢測到有新事件觸發(fā)時,根據(jù)單片機系統(tǒng)中待處理事件的數(shù)量來確定是否將新事件加入到待處理隊列中,使得可以根據(jù)單片機系統(tǒng)的能力來確定同一時刻最多能夠處理的事件數(shù)量,進而可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0012]其中,預定數(shù)量可以是根據(jù)單片機系統(tǒng)的承受能力來進行設置。當單片機系統(tǒng)中待處理事件的數(shù)量超過預定數(shù)量時,即超過了單片機系統(tǒng)所能承受的最大值時,說明單片機系統(tǒng)出現(xiàn)異常。
[0013]根據(jù)本發(fā)明的上述實施例的基于單片機系統(tǒng)的事件處理方法,還可以具有以下技術特征:
[0014]根據(jù)本發(fā)明的一個實施例,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括:根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0015]在該實施例中,具體來說,若待處理隊列中的待處理事件的觸發(fā)時間越早,則越優(yōu)先處理。
[0016]根據(jù)本發(fā)明的一個實施例,在將所述新事件加入所述單片機系統(tǒng)的待處理隊列的步驟之前,還包括:根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。
[0017]具體來說,某些類型的事件可能具有優(yōu)先級要求,因此可以根據(jù)事件的事件類型,來確定其處理優(yōu)先級,以便于后續(xù)根據(jù)優(yōu)先級對事件進行處理。
[0018]根據(jù)本發(fā)明的一個實施例,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括:根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0019]具體來說,可以根據(jù)待處理隊列中的待處理事件的優(yōu)先級來進行執(zhí)行,若存在優(yōu)先級相同的多個待處理事件,則可以根據(jù)這多個待處理事件的觸發(fā)時間順序來進行執(zhí)行。
[0020]根據(jù)本發(fā)明的一個實施例,檢測單片機系統(tǒng)是否有新事件觸發(fā)的步驟,具體包括:若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。
[0021]在該實施例中,不同于相關技術中在檢測到單片機系統(tǒng)中的計時器變量達到預設值時產(chǎn)生標志位,進而執(zhí)行與標志位相對應的操作的技術方案,本發(fā)明是在檢測到單片機系統(tǒng)中的任一計時器變量達到預設值時,確定檢測到有新事件觸發(fā),進而將該新事件加入到待處理隊列中,以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免錯過未處理事件的問題。同時,本發(fā)明還可以通過檢測單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā),同樣可以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件。
[0022]根據(jù)本發(fā)明第二方面的實施例,還提出了一種基于單片機系統(tǒng)的事件處理裝置,包括:檢測單元,用于檢測單片機系統(tǒng)是否有新事件觸發(fā);判斷單元,用于在所述檢測單元檢測到所述單片機系統(tǒng)有新事件觸發(fā)時,判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量;控制單元,用于在所述判斷單元判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中;處理單元,用于基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。
[0023]根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理裝置,不同于相關技術中檢測單片機的標志位來確定是否執(zhí)行相關操作的方案,本發(fā)明通過檢測單片機系統(tǒng)是否有新事件觸發(fā),并在檢測到有新事件觸發(fā)時,根據(jù)單片機系統(tǒng)中待處理事件的數(shù)量來確定是否將新事件加入到待處理隊列中,使得可以根據(jù)單片機系統(tǒng)的能力來確定同一時刻最多能夠處理的事件數(shù)量,進而可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0024]其中,預定數(shù)量可以是根據(jù)單片機系統(tǒng)的承受能力來進行設置。當單片機系統(tǒng)中待處理事件的數(shù)量超過預定數(shù)量時,即超過了單片機系統(tǒng)所能承受的最大值時,說明單片機系統(tǒng)出現(xiàn)異常。
[0025]根據(jù)本發(fā)明的上述實施例的基于單片機系統(tǒng)的事件處理裝置,還可以具有以下技術特征:
[0026]根據(jù)本發(fā)明的一個實施例,所述處理單元具體用于:根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0027]在該實施例中,具體來說,若待處理隊列中的待處理事件的觸發(fā)時間越早,則越優(yōu)先處理。
[0028]根據(jù)本發(fā)明的一個實施例,還包括:確定單元,用于根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。
[0029]具體來說,某些類型的事件可能具有優(yōu)先級要求,因此可以根據(jù)事件的事件類型,來確定其處理優(yōu)先級,以便于后續(xù)根據(jù)優(yōu)先級對事件進行處理。
[0030]根據(jù)本發(fā)明的一個實施例,所述處理單元具體用于:根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0031]具體來說,可以根據(jù)待處理隊列中的待處理事件的優(yōu)先級來進行執(zhí)行,若存在優(yōu)先級相同的多個待處理事件,則可以根據(jù)這多個待處理事件的觸發(fā)時間順序來進行執(zhí)行。
[0032]根據(jù)本發(fā)明的一個實施例,所述檢測單元具體用于:若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。
[0033]在該實施例中,不同于相關技術中在檢測到單片機系統(tǒng)中的計時器變量達到預設值時產(chǎn)生標志位,進而執(zhí)行與標志位相對應的操作的技術方案,本發(fā)明是在檢測到單片機系統(tǒng)中的任一計時器變量達到預設值時,確定檢測到有新事件觸發(fā),進而將該新事件加入到待處理隊列中,以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免錯過未處理事件的問題。同時,本發(fā)明還可以通過檢測單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā),同樣可以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件。
[0034]根據(jù)本發(fā)明第三方面的實施例,還提出了一種單片機系統(tǒng),包括:如上述實施例中任一項所述的基于單片機系統(tǒng)的事件處理裝置。
[0035]根據(jù)本發(fā)明第四方面的實施例,還提出了一種家用電器,包括:如上述實施例中所述的單片機系統(tǒng)。
[0036]本發(fā)明的附加方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0037]本發(fā)明的上述和/或附加的方面和優(yōu)點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:
[0038]圖1示出了相關技術中提出的單片機系統(tǒng)的結構示意圖;
[0039]圖2示出了相關技術中的單片機系統(tǒng)根據(jù)標志位執(zhí)行相應操作的示意圖;
[0040]圖3示出了根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理方法的示意流程圖;
[0041]圖4示出了根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理裝置的示意框圖;
[0042]圖5示出了根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng)的示意框圖;
[0043]圖6示出了根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng)的結構示意圖;
[0044]圖7示出了根據(jù)本發(fā)明的實施例的單片機系統(tǒng)的整體處理過程示意圖;
[0045]圖8示出了根據(jù)本發(fā)明的實施例的通過定時器的計時模塊產(chǎn)生事件來源的流程示意圖;
[0046]圖9示出了根據(jù)本發(fā)明的實施例的通過中斷產(chǎn)生事件來源的流程示意圖;
[0047]圖10示出了根據(jù)本發(fā)明的實施例的事件生成流程示意圖;
[0048]圖11示出了根據(jù)本發(fā)明的實施例的按照事件優(yōu)先級進行有選擇性地獲取相應事件的流程示意圖;
[0049]圖12示出了根據(jù)本發(fā)明的實施例的按照事件觸發(fā)的先后順序進行獲取事件的流程不意圖。
【具體實施方式】
[0050]為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結合附圖和【具體實施方式】對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
[0051]在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。
[0052]圖3示出了根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理方法的示意流程圖。
[0053]如圖3所示,根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理方法,包括:
[0054]步驟302,檢測單片機系統(tǒng)是否有新事件觸發(fā);
[0055]步驟304,若檢測到所述單片機系統(tǒng)有新事件觸發(fā),則判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量;
[0050]步驟306,在判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中;
[0057]步驟308,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。
[0058]在該實施例中,不同于相關技術中檢測單片機的標志位來確定是否執(zhí)行相關操作的方案,本發(fā)明通過檢測單片機系統(tǒng)是否有新事件觸發(fā),并在檢測到有新事件觸發(fā)時,根據(jù)單片機系統(tǒng)中待處理事件的數(shù)量來確定是否將新事件加入到待處理隊列中,使得可以根據(jù)單片機系統(tǒng)的能力來確定同一時刻最多能夠處理的事件數(shù)量,進而可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0059]其中,預定數(shù)量可以是根據(jù)單片機系統(tǒng)的承受能力來進行設置。當單片機系統(tǒng)中待處理事件的數(shù)量超過預定數(shù)量時,即超過了單片機系統(tǒng)所能承受的最大值時,說明單片機系統(tǒng)出現(xiàn)異常。
[0060]根據(jù)本發(fā)明的上述實施例的基于單片機系統(tǒng)的事件處理方法,還可以具有以下技術特征:
[0061]根據(jù)本發(fā)明的一個實施例,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括:根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0062]在該實施例中,具體來說,若待處理隊列中的待處理事件的觸發(fā)時間越早,則越優(yōu)先處理。
[0063]根據(jù)本發(fā)明的一個實施例,在將所述新事件加入所述單片機系統(tǒng)的待處理隊列的步驟之前,還包括:根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。
[0064]具體來說,某些類型的事件可能具有優(yōu)先級要求,因此可以根據(jù)事件的事件類型,來確定其處理優(yōu)先級,以便于后續(xù)根據(jù)優(yōu)先級對事件進行處理。
[0065]根據(jù)本發(fā)明的一個實施例,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括:根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0066]具體來說,可以根據(jù)待處理隊列中的待處理事件的優(yōu)先級來進行執(zhí)行,若存在優(yōu)先級相同的多個待處理事件,則可以根據(jù)這多個待處理事件的觸發(fā)時間順序來進行執(zhí)行。
[0067]根據(jù)本發(fā)明的一個實施例,檢測單片機系統(tǒng)是否有新事件觸發(fā)的步驟,具體包括:若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。
[0068]在該實施例中,不同于相關技術中在檢測到單片機系統(tǒng)中的計時器變量達到預設值時產(chǎn)生標志位,進而執(zhí)行與標志位相對應的操作的技術方案,本發(fā)明是在檢測到單片機系統(tǒng)中的任一計時器變量達到預設值時,確定檢測到有新事件觸發(fā),進而將該新事件加入到待處理隊列中,以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免錯過未處理事件的問題。同時,本發(fā)明還可以通過檢測單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā),同樣可以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件。
[0069]圖4示出了根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理裝置的示意框圖。
[0070]如圖4所示,根據(jù)本發(fā)明的實施例的基于單片機系統(tǒng)的事件處理裝置400,包括:檢測單元402、判斷單元404、控制單元406和處理單元408。
[0071 ]其中,檢測單元402,用于檢測單片機系統(tǒng)是否有新事件觸發(fā);判斷單元404,用于在所述檢測單元402檢測到所述單片機系統(tǒng)有新事件觸發(fā)時,判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量;控制單元406,用于在所述判斷單元404判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中;處理單元408,用于基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。
[0072]在該實施例中,不同于相關技術中檢測單片機的標志位來確定是否執(zhí)行相關操作的方案,本發(fā)明通過檢測單片機系統(tǒng)是否有新事件觸發(fā),并在檢測到有新事件觸發(fā)時,根據(jù)單片機系統(tǒng)中待處理事件的數(shù)量來確定是否將新事件加入到待處理隊列中,使得可以根據(jù)單片機系統(tǒng)的能力來確定同一時刻最多能夠處理的事件數(shù)量,進而可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0073]其中,預定數(shù)量可以是根據(jù)單片機系統(tǒng)的承受能力來進行設置。當單片機系統(tǒng)中待處理事件的數(shù)量超過預定數(shù)量時,即超過了單片機系統(tǒng)所能承受的最大值時,說明單片機系統(tǒng)出現(xiàn)異常。
[0074]根據(jù)本發(fā)明的上述實施例的基于單片機系統(tǒng)的事件處理裝置400,還可以具有以下技術特征:
[0075]根據(jù)本發(fā)明的一個實施例,所述處理單元408具體用于:根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0076]在該實施例中,具體來說,若待處理隊列中的待處理事件的觸發(fā)時間越早,則越優(yōu)先處理。
[0077]根據(jù)本發(fā)明的一個實施例,還包括:確定單元410,用于根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。
[0078]具體來說,某些類型的事件可能具有優(yōu)先級要求,因此可以根據(jù)事件的事件類型,來確定其處理優(yōu)先級,以便于后續(xù)根據(jù)優(yōu)先級對事件進行處理。
[0079]根據(jù)本發(fā)明的一個實施例,所述處理單元408具體用于:根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。
[0080]具體來說,可以根據(jù)待處理隊列中的待處理事件的優(yōu)先級來進行執(zhí)行,若存在優(yōu)先級相同的多個待處理事件,則可以根據(jù)這多個待處理事件的觸發(fā)時間順序來進行執(zhí)行。
[0081]根據(jù)本發(fā)明的一個實施例,所述檢測單元402具體用于:若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。
[0082]在該實施例中,不同于相關技術中在檢測到單片機系統(tǒng)中的計時器變量達到預設值時產(chǎn)生標志位,進而執(zhí)行與標志位相對應的操作的技術方案,本發(fā)明是在檢測到單片機系統(tǒng)中的任一計時器變量達到預設值時,確定檢測到有新事件觸發(fā),進而將該新事件加入到待處理隊列中,以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免錯過未處理事件的問題。同時,本發(fā)明還可以通過檢測單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā),同樣可以保證基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件。
[0083]圖5示出了根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng)的示意框圖。
[0084]如圖5所示,根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng)500,包括:如圖4中所示的基于單片機系統(tǒng)的事件處理裝置400。
[0085]圖6示出了根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng)的結構示意圖。
[0086]如圖6所示,根據(jù)本發(fā)明的一個實施例的單片機系統(tǒng),包括:CPU、1個定時器(優(yōu)選可以是I個)、1?a個中斷(根據(jù)實際情況選擇個數(shù))、變量計時模塊、事件生成部、事件查詢部和事件執(zhí)行部。
[0087]其中,CPU可以通過定時器的資源,結合變量計時模塊,產(chǎn)生相應的事件;其次CPU也可以通過中斷I?a產(chǎn)生相應的事件。產(chǎn)生的事件通過事件生成部進行相應規(guī)則的處理,并保存;然后CPU通過事件查詢部根據(jù)事件的優(yōu)先級高低、生成的先后順序等進行綜合判斷,以確定當前優(yōu)先執(zhí)行的事件,最后通過事件執(zhí)行部進行相應的操作。
[0088]如圖7所示,根據(jù)本發(fā)明的實施例的單片機系統(tǒng)的處理主流程,包括:
[0089]步驟702,單片機系統(tǒng)上電。
[0090]步驟704,系統(tǒng)初始化,包括:延遲一段時間如100?500ms,進行機型判斷和市電類型判斷,1 口設置,定時器和中斷設置并且使能,及系統(tǒng)初始狀態(tài)設置。
[0091 ]步驟706,判斷是否有事件觸發(fā),即判斷事件數(shù)量EvtCnt是否大于O,若是,則執(zhí)行步驟708;否則,繼續(xù)判斷。
[0092]步驟708,當有事件觸發(fā)時,即事件數(shù)量EvtCntX^f,啟動事件獲取流程,之后根據(jù)具體的事件,執(zhí)行相應的操作。當執(zhí)行完當前事件后,若事件數(shù)量EvtCnt仍然大于O,則繼續(xù)獲取事件并執(zhí)行事件,直到事件數(shù)量EvtCnt等于O,則系統(tǒng)進入等待。
[0093]本發(fā)明提出的事件生成主要有兩種:一種是定時器的計時模塊產(chǎn)生的,另一種則是中斷產(chǎn)生的。以下分別進行說明:
[0094]如圖8所示是由定時器的計時模塊產(chǎn)生事件來源的流程,具體包括:
[0095]步驟802,定時器設置并且使能。
[0096]步驟804,判斷定時器的定時時間是否達到,若是,則執(zhí)行步驟806;否則,繼續(xù)判斷。定時器的定時時間可以是0.5ms。
[0097]步驟806,系統(tǒng)計時變量開始計時。
[0098]步驟808,判斷系統(tǒng)計時變量是否達到預設值,若是,則執(zhí)行步驟810;否則,返回步驟804。預設值可以是2ms、100ms、I s等。
[0099 ] 步驟810,將事件類型賦值給變量EvtNew。
[0100]步驟812,執(zhí)行事件生成流程。
[0101]圖9示出了通過中斷產(chǎn)生事件來源的流程,主要是通過按鍵或者其他適合用外部中斷來檢測的事件,具體包括:
[0102]步驟902,中斷設置并且使能。
[0103]步驟904,判斷是否檢測到按鍵按下、觸發(fā)中斷,若是,則執(zhí)行步驟906;否則,繼續(xù)判斷。
[0104]步驟906,保護現(xiàn)場,進入中斷。
[0105]步驟908,判斷按鍵掃描函數(shù)是否確認有按鍵觸發(fā),若是,則執(zhí)行步驟910;否則,返回步驟904。
[0106]步驟910,將按鍵鍵值賦值給變量EvtNew。
[0107]步驟912,執(zhí)行事件生成流程。
[0?08] 步驟914,還原現(xiàn)場,退出中斷。
[0109]其中,當定時器或者中斷產(chǎn)生的事件觸發(fā)時,會進入事件生成流程,具體如圖10所示,包括:
[0110]步驟1002,關中斷。
[0?11 ]步驟1004,判斷事件數(shù)量EvtCnt是否小于N,若是,則執(zhí)行步驟1006;否則,執(zhí)行步驟1010。其中,N代表單片機系統(tǒng)同一時刻觸發(fā)事件的最大數(shù)量,正常的取8即可,任務多的可以適當取大些。若事件數(shù)量EvtCnt大于N,則說明系統(tǒng)出現(xiàn)異常,超過系統(tǒng)所能承受的最大值。
[0112]步驟1006,將事件類型變量EvtNew存入事件緩存數(shù)組ucArrayEvtQueue[(ucEvtPtr+ucEvtCnt )&(N-1)];事件數(shù)量EvtCnt加I。其中,進行對(N-1)的位與操作,也是為了保證事件數(shù)量不能超過最大值N;變量UcEvtPtr代表事件指針,該變量在事件獲取流程會進行相應的操作。接下來,若系統(tǒng)有要求進行事件優(yōu)先級的設定,則可執(zhí)行步驟1008。
[0113]步驟1008,根據(jù)變量EvtNew確定事件優(yōu)先級,并保存到數(shù)組ucArrayEvtPriQueue[(ucEvtPtr+ucEvtCnt)&(N-1)]。
[0114]步驟1010,開中斷。
[0115]本發(fā)明提出的事件獲取流程可以分為兩種:一種是按照事件優(yōu)先級進行有選擇性地獲取相應事件的流程;另一種是按照事件觸發(fā)的先后順序進行獲取事件的流程。前者較后者更加適用于實時性要求高的場合,但后者操作較為簡單。
[0116]圖11示出了根據(jù)本發(fā)明的實施例的按照事件優(yōu)先級進行有選擇性地獲取相應事件的流程,包括:
[0117]步驟1102,關中斷。
[0?18] 步驟1104,根據(jù)數(shù)組ucArrayEvtPriQueue [O]?[N-1 ],獲取高優(yōu)先級事件,將序號賦值給UcEvtPtr ο
[0119]步驟1106,將數(shù)組ucArrayEvtQueue[ucEvtPtr]的值賦給事件真實變量EvtReal ;事件數(shù)量EvtCnt減I。
[0120]步驟1108,開中斷,完成事件獲取操作。
[0121]圖12示出了根據(jù)本發(fā)明的實施例的按照事件觸發(fā)的先后順序進行獲取事件的流程,包括:
[0122]步驟1202,關中斷。
[0123]步驟1204,將數(shù)組ucArrayEvtQueue[ucEvtPtr]的值賦給事件真實變量EvtReal ;事件數(shù)量EvtCnt減I。
[0124]步驟1206,事件指針變量UCEvtPtr加I。
[0125]步驟1208,開中斷,完成事件獲取操作。
[0126]本發(fā)明上述實施例提出的單片機系統(tǒng)能夠利用較少的資源,滿足實時性的任務的要求,使得即使多任務同時產(chǎn)生,仍然可以及時處理事件,不會錯過事件。當本發(fā)明提出的單片機系統(tǒng)應用于家電領域時,可以提升家電產(chǎn)品的競爭力。
[0127]以上結合附圖詳細說明了本發(fā)明的技術方案,本發(fā)明提出了一種新的基于單片機系統(tǒng)的事件處理方案,可以保證在多任務同時產(chǎn)生時,依然可以基于待處理隊列及時處理單片機系統(tǒng)中的待處理事件,避免了錯過未處理事件的問題。
[0128]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【主權項】
1.一種基于單片機系統(tǒng)的事件處理方法,其特征在于,包括: 檢測單片機系統(tǒng)是否有新事件觸發(fā); 若檢測到所述單片機系統(tǒng)有新事件觸發(fā),則判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量; 在判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中; 基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。2.根據(jù)權利要求1所述的基于單片機系統(tǒng)的事件處理方法,其特征在于,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括: 根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。3.根據(jù)權利要求1所述的基于單片機系統(tǒng)的事件處理方法,其特征在于,在將所述新事件加入所述單片機系統(tǒng)的待處理隊列的步驟之前,還包括: 根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。4.根據(jù)權利要求3所述的基于單片機系統(tǒng)的事件處理方法,其特征在于,基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理的步驟,具體包括: 根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。5.根據(jù)權利要求1至4中任一項所述的基于單片機系統(tǒng)的事件處理方法,其特征在于,檢測單片機系統(tǒng)是否有新事件觸發(fā)的步驟,具體包括: 若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或 通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。6.一種基于單片機系統(tǒng)的事件處理裝置,其特征在于,包括: 檢測單元,用于檢測單片機系統(tǒng)是否有新事件觸發(fā); 判斷單元,用于在所述檢測單元檢測到所述單片機系統(tǒng)有新事件觸發(fā)時,判斷所述單片機系統(tǒng)中待處理事件的數(shù)量是否達到預定數(shù)量; 控制單元,用于在所述判斷單元判定所述待處理事件的數(shù)量未達到所述預定數(shù)量時,將所述新事件加入所述單片機系統(tǒng)的待處理隊列中; 處理單元,用于基于所述待處理隊列,對所述單片機系統(tǒng)中的待處理事件進行處理。7.根據(jù)權利要求6所述的基于單片機系統(tǒng)的事件處理裝置,其特征在于,所述處理單元具體用于: 根據(jù)事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。8.根據(jù)權利要求6所述的基于單片機系統(tǒng)的事件處理裝置,其特征在于,還包括: 確定單元,用于根據(jù)所述新事件的事件類型,確定所述新事件的處理優(yōu)先級。9.根據(jù)權利要求8所述的基于單片機系統(tǒng)的事件處理裝置,其特征在于,所述處理單元具體用于: 根據(jù)事件的處理優(yōu)先級的高低和/或事件的觸發(fā)順序,依次獲取所述待處理隊列中的待處理事件進行執(zhí)行。10.根據(jù)權利要求6至9中任一項所述的基于單片機系統(tǒng)的事件處理裝置,其特征在于,所述檢測單元具體用于: 若檢測到所述單片機系統(tǒng)中的任一計時器變量達到預設值,則確定檢測到有新事件觸發(fā);和/或 通過檢測所述單片機系統(tǒng)中的中斷服務程序來檢測是否有新事件觸發(fā)。11.一種單片機系統(tǒng),其特征在于,包括:如權利要求6至10中任一項所述的基于單片機系統(tǒng)的事件處理裝置。
【文檔編號】G06F9/46GK105893119SQ201610201378
【公開日】2016年8月24日
【申請日】2016年3月31日
【發(fā)明人】林躍躍
【申請人】廣東美的廚房電器制造有限公司, 美的集團股份有限公司