版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式實訓(xùn)24維信科技一、實訓(xùn)目的 學(xué)習(xí)系統(tǒng)時間相關(guān)API函數(shù)和使用信號量解決uCOS-II任務(wù)之間的互斥問題,把系統(tǒng)時間顯示在一個文本框中,并可以通過鍵盤設(shè)置修改。二、實訓(xùn)內(nèi)容(維信科技,太原最好的IT培訓(xùn)) 本次實驗在用戶的Main_Task任務(wù)中創(chuàng)建一個新任務(wù),來實現(xiàn)系統(tǒng)時鐘的顯示和更新。同時,通過在Main_Task任務(wù)中響應(yīng)鍵盤消息,可以對系統(tǒng)的時鐘進行更改。使用uCOS-II多任務(wù)系統(tǒng)中的信號量保證多個任務(wù)對系統(tǒng)的同一個控件訪問而不產(chǎn)生沖突。三、預(yù)備知識1、用ARM SDT 2.5或ADS1.2集成開發(fā)環(huán)境,編寫和調(diào)試程序的基本過程。2、基于uCOS-II操作系統(tǒng)應(yīng)用程序的框架結(jié)構(gòu)
2、。3、會使用消息循環(huán)響應(yīng)鍵盤消息。4、會使用文本框控件。四、設(shè)備及工具(包括軟件調(diào)試工具) 硬件:ARM嵌入式開發(fā)平臺、用于ARM7TDMI的JTAG仿真器、PC機Pentium100以上。 軟件:PC機操作系統(tǒng)win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成開發(fā)環(huán)境、仿真器驅(qū)動程序、超級終端通訊程序、UltraEdit。五、原理及說明 當系統(tǒng)掉電后RTC (Real Time Clock)電路可以依靠后備電池工作。RTC電路能夠以BCD碼的形式向CPU提供時間信息,這些信息包括年、月、日、星期和時、分、秒。RTC的運行依賴于一個外部32.768KHz晶振,并
3、具有鬧鐘功能。該RTC電路還具有閏年發(fā)生器、鬧鐘中斷或掉電喚醒、解決Y2K問題、獨立電源引腳、秒鐘舍入復(fù)位功能、用于RTOS核的毫秒級時鐘節(jié)拍中斷等特性。1、RTC電路單元說明RTC電路的框圖如圖4-9所示。1)閏年發(fā)生器 該模塊可以根據(jù)BCDDAY、BCDMON、BCDYEAR等寄存器的數(shù)據(jù)決定每個月的最后一天是28、29、30還是31,在決定最后日期時考慮了閏年。因為8位計數(shù)器只能保存兩位BCD碼,所以無法判斷00年是閏年與否。例如無法區(qū)分1900年和2000年。為此,44B0的RTC單元用硬件來支持閏年2000年,注意這里1900不是閏年而2000年是閏年。因而00年代表2000年而非1
4、900年。圖4-9 RTC電路圖框圖 需要注意,RTC的合法時間范圍是100年,比如19012000或20002099,也可以是19492048等。否則程序中無法判斷某一年是哪個世紀的,由于00年應(yīng)該認為是2000年,這個范圍在實際應(yīng)用中已經(jīng)足夠了。2)讀寫寄存器 RTCCON寄存器的Bit0位必須置1后才能讀寫RTC單元的寄存器。為了顯示秒、分、時、星期、日期、月和年,CPU應(yīng)該分別讀取BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON、BCDYEAR等寄存器的內(nèi)容。然而,由于讀多個寄存器,一秒的偏差是可能存在的。例如,用戶從BCDYEAR到BCDMIN讀
5、取寄存器(維信科技,太原最好的IT培訓(xùn)),結(jié)果正好為59年12月31日23時59分;當用戶讀取BCDSEC寄存器并且結(jié)果在1到59秒時,這沒有問題,但是當結(jié)果為0秒時,由于上述的一秒偏差,年、月、日、時和分可能已經(jīng)變?yōu)?0年1月1日0時0分了。在這種情況下,如果BCDSEC為0的話,用戶應(yīng)該從BCDYEAY到BCDMIN重新讀取。3)鬧鐘功能 RTC可以在掉電模式或正常工作模式中在指定時刻產(chǎn)生鬧鐘信號;在正常工作模式下鬧鐘中斷ALMINT被激活,而在掉電模式下,電源管理喚醒PMWKUP信號與ALMINT同時被激活。RTC鬧鐘寄存器RTCALM決定鬧鐘的使能和時刻設(shè)置。4)時鐘節(jié)拍中斷 RTC的
6、時鐘節(jié)拍用于中斷請求,TICNT寄存器包含中斷使能位和用于中斷的計數(shù)值,當計數(shù)值減少到0則產(chǎn)生時鐘節(jié)拍中斷。那么中斷周期就是:Period = ( n+1 ) / 128 second 其中n : Tick time count value (1-127)RTC的時鐘節(jié)拍可以用于RTOS(實時操作系統(tǒng))內(nèi)核的時鐘節(jié)拍。如果時鐘節(jié)拍由RTC產(chǎn)生,RTOS的時間相關(guān)功能將一直與實時鐘同步。5)舍入復(fù)位功能 舍入復(fù)位功能由RTC的舍入復(fù)位寄存器RTCRST完成,秒進位發(fā)生器的舍入邊界(30、40或50秒)是可選的,在舍入復(fù)位時秒值被舍入為0。例如當前時間是23:37:47,(維信科技,太原最好的IT
7、培訓(xùn))并且舍入邊界選擇為40秒,那么舍入復(fù)位將當前時間改為23:38:00。2、RTC相關(guān)寄存器實時時鐘控制寄存器 (RTCCON)的設(shè)置和位描述如下表4-21和表4-22所示:表4-21 實時時鐘控制寄存器 (RTCCON)的設(shè)置寄存器地址R/W描述復(fù)位值RTCCON 0x01D70040(L) 0x01D70043(B) R/W (by byte) RTC控制寄存器0x0 表4-22 實時時鐘控制寄存器 (RTCCON)的位描述RTCCON 位描述初始化狀態(tài)CLKRST 3 RTC時鐘計數(shù)復(fù)位0=無復(fù)位,1=復(fù)位0 CNTSEL 2 BCD計數(shù)選擇0=合并BCD計數(shù)器1=保留(分離BCD計
8、數(shù)器)0 CLKSEL 1 BCD時鐘選擇0=晶振XTAL 1/215分頻時鐘1=保留(XTAL時鐘只為檢測)0 RTCEN 0 RTC讀/寫 使能0=禁止,1=使能如果RTC讀/寫特征使能,靜態(tài)電流將大量消耗。為了減少STOP電流,在不訪問RTC時該位應(yīng)該為0。即使該位為0,RTC時鐘仍然運行。0 RTC 鬧鐘控制寄存器 (RTCALM)的設(shè)置和位描述如下表4-23和表4-24所示:表4-23 RTC 鬧鐘控制寄存器 (RTCALM)的設(shè)置寄存器地址R/W 描述復(fù)位值RTCALM 0x01D70050(L) 0x01D70053(B) R/W (by byte) RTC鬧鐘控制寄存器0x00
9、 表4-24 RTC 鬧鐘控制寄存器 (RTCALM)的位描述RTCALM位描述初始化狀態(tài)Reserved7 0 ALMEN6 鬧鐘全局使能0 = 禁止, 1 = 使能0 YEAREN5 年鬧鐘使能0 = 禁止, 1 = 使能0 MONREN4 月鬧鐘使能0 = 禁止, 1 = 使能0 DAYEN3天鬧鐘使能0 = 禁止, 1 = 使能0 HOUREN2 小時鬧鐘使能0 = 禁止, 1 = 使能0 MINEN1 分鐘鬧鐘使能0 = 禁止, 1 = 使能0 SECEN0 秒鬧鐘使能0 = 禁止, 1 = 使能0 鬧鐘第二數(shù)據(jù)寄存器(ALMSEC)的設(shè)置和位描述如表4-25和表4-26所示:表4-
10、25 鬧鐘第二數(shù)據(jù)寄存器(ALMSEC)的設(shè)置寄存器地址R/W 描述復(fù)位值A(chǔ)LMSEC 0x01D70054(L) 0x01D70057(B) R/W (by byte) 鬧鐘第二數(shù)據(jù)寄存器0x00 表4-26 鬧鐘第二數(shù)據(jù)寄存器(ALMSEC)的位描述ALMSEC 位描述初始化狀態(tài)Reserved7 0 SECDATA6:4 鬧鐘秒的BCD值,從0-5。000 3:0 0 到 9 0000 鬧鐘分鐘數(shù)據(jù)寄存器 (ALMMIN)的設(shè)置和位描述如下表4-27和表4-28所示:表4-27 鬧鐘分鐘數(shù)據(jù)寄存器 (ALMMIN)的設(shè)置寄存器地址R/W 描述復(fù)位值A(chǔ)LMMIN0x01D70058(L)
11、0x01D7005B(B) R/W (bybyte)鬧鐘分鐘數(shù)據(jù)寄存器 0x00表4-28 鬧鐘分鐘數(shù)據(jù)寄存器 (ALMMIN)的位描述ALMMIN 位描述初始化狀態(tài)Reserved 7 0 MINDATA 6:4 鬧鐘分鐘的BCD值,從0到5。000 3:0 0 到 9 0000 鬧鐘小時數(shù)據(jù)寄存器(ALMHOUR)的設(shè)置和位描述如下表4-29和表4-30所示:表4-29 鬧鐘小時數(shù)據(jù)寄存器(ALMHOUR)的設(shè)置寄存器地址R/W 描述復(fù)位值A(chǔ)LMHOUR0x01D7005C(L) 0x01D7005F(B) R/W (by byte) 鬧鐘時間數(shù)據(jù)寄存器0x00 表4-30 鬧鐘小時數(shù)據(jù)寄
12、存器(ALMHOUR)的位描述ALMHOUR 位描述初始化狀態(tài)Reserved7:6 0 HOURDATA5:4 鬧鐘時間的BCD值,從0到2。00 3:0 0 到 9 0000 鬧鐘天數(shù)據(jù)寄存器 (ALMDAY)的設(shè)置和位描述如下表4-31和表4-32所示:表4-31 鬧鐘天數(shù)據(jù)寄存器 (ALMDAY)的設(shè)置寄存器地址R/W 描述復(fù)位值A(chǔ)LMDAY0x01D70060(L) 0x01D70063(B) R/W (by byte) 鬧鐘天數(shù)據(jù)寄存器 0x01表4-32 鬧鐘天數(shù)據(jù)寄存器 (ALMDAY)的位描述ALMDAY 位描述初始化狀態(tài)Reserved7:6 0 DAYDATA5:4 鬧鐘
13、天的BCD值,從0到28, 29, 30, 31 0 到 3 00 3:0 0 到 9 0001 鬧鐘月數(shù)據(jù)寄存器(ALMMON)的設(shè)置和位描述如下表4-33和表4-34所示:表4-33 鬧鐘月數(shù)據(jù)寄存器(ALMMON)的設(shè)置寄存器地址R/W描述復(fù)位值A(chǔ)LMMON0x01D70064(L) 0x01D70067(B) R/W (by byte) 鬧鐘月數(shù)據(jù)寄存器 0x01 表4-34 鬧鐘月數(shù)據(jù)寄存器(ALMMON)的位設(shè)置ALMMON 位描述初始化狀態(tài)Reserved7:5 0 MONDATA4 鬧鐘月的BCD值,從0到1。0 3:0 0 到 9 0001 鬧鐘年數(shù)據(jù)寄存器 (ALMYEAR
14、)的設(shè)置和位描述如下表4-35和表4-36所示:表4-35 鬧鐘年數(shù)據(jù)寄存器 (ALMYEAR)的設(shè)置寄存器地址R/W描述復(fù)位值A(chǔ)LMYEAR0x01D70068(L) 0x01D7006B(B) R/W (by byte) 鬧鐘年數(shù)據(jù)寄存器 0x00 表4-36 鬧鐘年數(shù)據(jù)寄存器 (ALMYEAR)的設(shè)置的位描述ALMYEAR 位描述初始化狀態(tài)YEARDATA7:0 年的BCD值,從00-99 0x00 RTC復(fù)位寄存器 (RTCRST)的設(shè)置和位描述如下表4-37和表4-38所示:表4-37 RTC復(fù)位寄存器 (RTCRST)的設(shè)置寄存器地址R/W 描述復(fù)位值RTCRST 0x01D700
15、6C(L) 0x01D7006F(B) R/W (by byte) RTC 舍入復(fù)位寄存器 0x0. 表4-38 RTC復(fù)位寄存器 (RTCRST)的位描述RTCRST 位描述初始化狀態(tài)SRSTEN 3 舍入秒復(fù)位使能0 = 禁止, 1 = 使能0 SECCR 2:0 秒進位產(chǎn)生的舍入邊界011 = 超出30秒100 = 超出40秒101 = 超出50秒00 BCD秒寄存器 (BCDSEC)的設(shè)置和位描述如下表4-39和4-40所示:表4-39 BCD秒寄存器 (BCDSEC)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDSEC 0x01D70070(L) 0x01D70073(B) R/W(by
16、byte) BCD秒寄存器Undef.表4-40 BCD秒寄存器 (BCDSEC)的位描述BCDSEC 位描述初始化狀態(tài)Reserved 7 SECDATA 6:4 秒的BCD值從0到5 3:0 0 到 9 BCD 分鐘寄存器 (BCDMIN)的設(shè)置和位描述如下表4-41和表4-42所示:表4-41 BCD 分鐘寄存器 (BCDMIN)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDMIN0x01D70074(L) 0x01D70077(B) R/W(by byte) BCD分鐘寄存器Undef. 表4-42 BCD 分鐘寄存器 (BCDMIN)的位設(shè)置BCDMIN 位描述初始化狀態(tài)Reserved7
17、 MINDATA6:4 分鐘的BCD值從0到5 3:0 0 到 9 BCD小時寄存器 (BCDHOUR)的設(shè)置和位描述如下表4-43和表4-44所示:表4-43 BCD小時寄存器 (BCDHOUR)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDHOUR0x01D70078(L) 0x01D7007B(B) R/W(by byte) BCD小時寄存器Undef. 表4-44 BCD小時寄存器 (BCDHOUR)的位描述BCDHOUR 位描述初始化狀態(tài)Reserved7:6 HOURDATA5:4 小時的BCD值從0到2 3:0 0 到 9 BCD天數(shù)寄存器(BCDDAY)的設(shè)置和位描述如下表4-45和
18、表4-46所示:表4-45 BCD天數(shù)寄存器(BCDDAY)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDDAY0x01D7007C(L) 0x01D7007F(B) R/W(by byte) BCD天數(shù)寄存器Undef 表4-46 BCD天數(shù)寄存器(BCDDAY)的位描述BCDDAY 位描述初始化狀態(tài)Reserved7:6 DAYDATA5:4 天數(shù)的BCD值從0到3 3:0 0 到 9 BCD日期寄存器(BCDDATE)的設(shè)置和位描述如下表4-47和表4-48所示:表4-47 BCD日期寄存器(BCDDATE)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDDATE 0x01D70080(L) 0x01
19、D70083(B) R/W(by byte) BCD日期寄存器Undef. 表4-48 BCD日期寄存器(BCDDATE)的位描述BCDDATE 位描述初始化狀態(tài)Reserved7:3 DATEDATA2:0 日期的BCD值從1到7 BCD月寄存器(BCDMON)的設(shè)置和位描述如下表4-49和表4-50所示:表4-49 BCD月寄存器(BCDMON)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDMON0x01D70084(L) 0x01D70087(B) R/W(by byte) BCD月寄存器Undef. 表4-50 BCD月寄存器(BCDMON)的位描述BCDMON 位描述初始化狀態(tài)Reserv
20、ed7:5 MONDATA4 月的BCD值從0到1 3:0 0 到 9 BCD年寄存器 (BCDYEAR)的設(shè)置和位描述如表4-51和4-52所示:表4-51 BCD年寄存器 (BCDYEAR)的設(shè)置寄存器地址R/W 描述復(fù)位值BCDYEAR0x01D70088(L) 0x01D7008B(B) R/W(by byte) BCD年寄存器Undef. 表4-52 BCD年寄存器 (BCDYEAR)的位描述BCDYEAR 位描述初始化狀態(tài)YEARDATA 7:0 年的BCD值從00到99 3)系統(tǒng)時間相關(guān)的API函數(shù) 和系統(tǒng)時間相關(guān)的API函數(shù)請參考附錄,在RTC.H中定義。程序中定義了如下結(jié)構(gòu):
21、typedef structU32 year;U32 month;U32 day;U32 date;U32 hour;U32 minute;U32 second;structTime, *PstructTimetypedef structU32 year;U32 month;U32 day;structDate, *PstructDatetypedef structU32 hour;U32 minute;U32 second;structClock, *PstructClockInitRtc()函數(shù)用來初始化RTC,Get_Rtc()和Set_Rtc()函數(shù)分別用來獲取、設(shè)置當前完整的時間信息
22、。還有Set_Rtc_Clock()和Set_Rtc_Date()函數(shù)可以分別設(shè)置時間、日期(維信科技,太原最好的IT培訓(xùn))。在程序中可以用Rtc_IsTimeChange()函數(shù)來判斷某一個時間單位是否改變,據(jù)此決定是否讀取時間。在圖形模式下可以用Rtc_Format()函數(shù)來獲得包含時間信息的指定格式的Unicode編碼字符串。六、實訓(xùn)步驟1、新建工程,將“Exp19多任務(wù)和系統(tǒng)時鐘”中的源文件加入到該工程。2、打開Main.c文件,編輯Main_Task任務(wù)中的代碼,創(chuàng)建一個時間顯示文本框。在Main_Task任務(wù)中再創(chuàng)建一個新任務(wù)Rtc_Disp_Task,此任務(wù)負責更新顯示系統(tǒng)時間。
23、定義一個信號量Rtc_Updata_Sem,保證系統(tǒng)中多個任務(wù)訪問或更新時間文本框時不發(fā)生沖突。3、在Main_Task任務(wù)中啟動消息循環(huán),使用戶可以通過鍵盤在文本框中編輯系統(tǒng)時間。Main_Task任務(wù)具體的程序流程圖如圖4-10所示:圖4-10 Main_Task任務(wù)流程圖提示:1)需要編寫CreateText()函數(shù)完成時間顯示文本框的創(chuàng)建,并在Main_Task中調(diào)用該函數(shù)。編輯CreateText()函數(shù)內(nèi)容:定義鍵碼表TimeKeyTable,用CreateTextCtrl()函數(shù)創(chuàng)建文本框,然后用SetWndCtrlFocus()函數(shù)將焦點轉(zhuǎn)移到該文本框,并用DrawTextCt
24、rl()函數(shù)重畫。注意,CreateTextCtrl()函數(shù)可以根據(jù)用戶指定的鍵碼表來完成鍵盤任務(wù)發(fā)出的鍵碼到要顯示字符的轉(zhuǎn)換,由于本實驗需要顯示“:”,并指定鍵盤的“.”鍵用來輸入“:”,所以需要另行定義鍵碼表,并將TimeKeyTable作為參數(shù)傳給CreateTextCtrl()(維信科技,太原最好的IT培訓(xùn))。如果使用默認鍵碼表,對應(yīng)參數(shù)賦0即可。2)信號量是uCOS-II任務(wù)之間的通信和同步機制之一,由信號量的計數(shù)值、等待該信號量的任務(wù)構(gòu)成的等待任務(wù)表兩部分構(gòu)成。首先要調(diào)用OSSemCreate()函數(shù)建立信號量,對信號量的初始計數(shù)值賦值。因為這里信號量是用于對共享資源的訪問,其初值
25、應(yīng)該設(shè)為1。 使用OSSemPend()函數(shù)等待信號量,如果信號量當前是可用的(信號量計數(shù)值大于0),該函數(shù)將信號量的計數(shù)值減1,并返回“無錯”的錯誤代碼。如果信號量的計數(shù)值為0,則調(diào)用OSSemPend()函數(shù)的任務(wù)要進入休眠狀態(tài),等待其他任務(wù)釋放該信號量。OSSemPend()函數(shù)允許用戶定義一個最長等待時間作為它的參數(shù),這樣可以避免該任務(wù)無休止的等待。如果該參數(shù)非0,則該任務(wù)一直等到信號量有效或超時;否則將一直等待下去。 使用OSSemPost()函數(shù)發(fā)送一個信號量,它會檢查是否有任務(wù)在等待該信號量。如果該信號量的等待任務(wù)列表非空,就將最高優(yōu)先級的任務(wù)從等待任務(wù)列表中刪除并使它進入就緒狀態(tài);然后調(diào)用任務(wù)調(diào)度函數(shù)檢查該任務(wù)是否是系統(tǒng)中最高優(yōu)先級的就緒任務(wù),(維信科
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026新疆博州聯(lián)通小營盤營業(yè)廳招聘考試參考題庫及答案解析
- 2026浙江寧波市余姚市農(nóng)業(yè)農(nóng)村局招聘下屬單位編外人員2人考試參考題庫及答案解析
- 2026年濟寧鄒城市教體系統(tǒng)急需緊缺人才招聘(70名)筆試備考試題及答案解析
- 2026年福建泉州仰恩大學(xué)招聘6名工作人員筆試模擬試題及答案解析
- 2026廣西國土規(guī)劃集團團隊帶頭人招聘5人考試參考題庫及答案解析
- 2026四川巴中市巴州區(qū)公益性崗位安置5人考試參考題庫及答案解析
- 2026年徽商銀行客服代表(勞務(wù)派遣制)招聘筆試模擬試題及答案解析
- 天府三中小學(xué)部2026年教師招聘備考題庫及參考答案詳解一套
- 2026年永豐縣國豐資產(chǎn)營運有限公司面向社會公開招聘工作人員備考題庫及一套參考答案詳解
- 2026年河?xùn)|區(qū)婦幼保健計劃生育服務(wù)中心招聘派遣制工作人員備考題庫及一套答案詳解
- 骨科跟骨骨折課件
- 2026年美團商業(yè)分析師崗位筆試解析與面試問答技巧
- 某高校十五五教育大數(shù)據(jù)治理中心與智慧校園支撐平臺建設(shè)方案
- 2026年山西警官職業(yè)學(xué)院單招綜合素質(zhì)考試備考試題帶答案解析
- (2026春新版)人教版二年級數(shù)學(xué)下冊全冊教學(xué)設(shè)計
- 汽修廠文件檔案歸檔制度
- 高校科研項目立項及管理規(guī)范
- 鈑噴質(zhì)檢員考試題及答案
- 學(xué)生安全教育家長會課件
- 2026年云南省高二物理學(xué)業(yè)水平合格考試卷試題(含答案詳解)
- 《事故隱患排查治理資金使用專項制度》
評論
0/150
提交評論