版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗2——串口電子鐘卓越工程師培養(yǎng)系列本書獲深圳大學教材出版資助STM32F1開發(fā)標準教程01實驗內(nèi)容實驗內(nèi)容①將RunClock模塊添加至STM32工程,并在應用層調(diào)用RunClock模塊的API函數(shù),實現(xiàn)基于STM32口的電子鐘功能;②將時鐘的初始值設為23:59:50,通過計算機上的串口助手每秒輸出一次時間值,格式為Nowisxx:xx:xx;③將編譯生成的.hex或axf文件下載到STM32核心板;④打開口助手軟件,查看電子鐘運行是否正常。本實驗主要包括以下內(nèi)容02實驗原理1.RunClock模塊函數(shù)這兩個文件位于本書配套資料包的“04例程資料Material02串口電子鐘實驗AppRunClock”文件夾中。RunClock模塊有6個API函數(shù),分別是InitRunClock、RunClockPer2Ms、PauseClock、GetTimeVal、SetTimeVal和DispTime,下面對這6個API函數(shù)進行講解。RunClock模塊由RunClockh和RunClockc文件實現(xiàn)1.RunClock模塊函數(shù)InitRunClock函數(shù)的功能是初始化RunClock模塊,通過對sour、siMin和siSec共3個內(nèi)部變量賦值0來實現(xiàn)。該函數(shù)的描述如表3-1所示。1.initRunClock1.RunClock模塊函數(shù)RunClockPer2Ms函數(shù)的功能是以2ms為最小單位運行時鐘系統(tǒng),該函數(shù)每執(zhí)行500次,變量s_iSec遞增一次。該函數(shù)的描述如表3-2所示。2.RunClockPer2Ms1.RunClock模塊函數(shù)PauseClock函數(shù)的功能是啟動和暫停時鐘。該函數(shù)的描述如表3-3所示。3.PauseClock1.RunClock模塊函數(shù)GetTimeVal函數(shù)的功能是獲取當前時間值,時間值的類型由type決定該函數(shù)的描述如表3-4所示。4.GetTimeVal1.RunClock模塊函數(shù)SetTimeVal函數(shù)的功能是根據(jù)參數(shù)timeVal設置當前的時間值,時間值的類型由type決定。該函數(shù)的描述如表3-5所示。5.SetTimeVal1.RunClock模塊函數(shù)DispTime函數(shù)的功能是根據(jù)參數(shù)hourmin和sec顯示當前的時間,通過printf函數(shù)來實現(xiàn)。該函數(shù)的描述如表3-6所示。6.DispTime2.函數(shù)調(diào)用框架圖3-1為本實驗的函數(shù)調(diào)用框架,Timer模塊的TIM2用于產(chǎn)生2ms標志,TIM5用于產(chǎn)生1s標志Main模塊通過獲取和清除2s1s標志實現(xiàn)Proc2msTask函數(shù)中的核心語句塊每2ms執(zhí)行一次,Proc1SecTask函數(shù)中的核心語塊每1s執(zhí)行一次。Mai模塊調(diào)用RunClock模塊的PauseClock函數(shù)啟動時鐘運行,通過SetTimeVal函數(shù)設置初始時間值;Proc2msTask函數(shù)調(diào)用RunClock模塊的RunClockPer2Ms函數(shù),實現(xiàn)RunClock模塊內(nèi)部靜態(tài)變量s_iHour/s_iMin/s_iSec的計數(shù)功能,進而實現(xiàn)時鐘的運行;時間顯示是由RunClocl模塊的DispTime函數(shù)調(diào)用printf語句輸出實現(xiàn)的Prc1SecTask函數(shù)每秒調(diào)用一次DispTim函數(shù)。3.Proc2msTask與Proc1SecTaskProc2msTask和Proc1SecTask是本書經(jīng)常用到的函數(shù),它們的工作機制類似,下面以Proc2msTask函數(shù)為例說明。程序清單3-1是Proc2msTask函數(shù)的實現(xiàn),注意,需要每2m執(zhí)行一次的代碼一定要放在if語句中。3.Proc2msTask與Proc1SecTaskProc2msTask函數(shù)在main函數(shù)的while語句中被調(diào)用,每隔幾微秒執(zhí)行一次具體間限取決于各中斷服務函數(shù)及Proc1SecTask函數(shù)的執(zhí)行時間。如果Proc2msTask函數(shù)約每10us執(zhí)行一次,Get2msFlag函數(shù)用于讀取2ms標志位的值并判斷是否為1,該標志位在TIM2的中斷服務函數(shù)中被置為1,TIM2的中斷服務函數(shù)每2ms行一次因此2ms標志位也是每2ms被置為1一次。如果2s標志位為1,則執(zhí)行用戶代碼,執(zhí)行完畢,清除2ms標志位,然后執(zhí)行Proc1SecTask函數(shù),接著繼續(xù)判斷2ms標位;如果2ms標志位不為1,則執(zhí)行Proc1SecTask函數(shù)然后繼續(xù)判斷2ms標志位main函數(shù)的while語具體執(zhí)行過程如圖3-2所示。03實驗步驟步驟1:首先,將“D:STM32KeilTestMateria02串口電子鐘實驗”文件夾復制到“D:STM32KeilTestProduct”文件夾中。然后,雙擊運行“D:STM32KeilTestProduct02串口電子鐘實驗Project”文件夾中的STM32KeilPrjuvprojx,單擊工具欄中的西按鈕進行編譯。當BuildOutput欄中出現(xiàn)FromBLF:creatinghexfile...時,表示已經(jīng)成功生成hex文件,出現(xiàn)0Error(s),0Warning(s)表示編譯成功。最后,將axf文件下載到STM32的內(nèi)部Flash,觀察STM32核心板上的兩個LBD是否交替閃爍,同時打開串口助手,觀察是否秒輸出一次ThisisthefirstSTM32F103ProjectbyZhangsan。如果兩個LED交替閃爍口正常輸出字符串,表示原始工程正確,可以進入下一步操作。復制并編譯原始工程步驟2:首先,將“D:STM32KeilTestProductl02串口電子鐘實驗ApplRunClock”文件夾中的RunClockc添加到App分組,具體操作可參見2.3節(jié)步8。然后,將“D:STM32KeilTestProduct\02串口電子鐘實驗AppRunClock”路徑添加到IncudePaths欄,具體操作可參見2.3節(jié)步驟11。添加RunClock文件對步驟3:在Project面板中,雙擊打開Main.c文件,在Main.c文件的“包含頭文件”區(qū)的最后,添加代碼#include"RunClock.h",如程序清單3-2所示。這樣就可以在Mainc文件中調(diào)用RunClock模塊的枚舉定義和API函數(shù)等,實現(xiàn)對RunClock模塊的操作。完善串口電子鐘應用層步驟3:在Main.c文件的IitSoftware函數(shù)中,添加調(diào)用InitRunClock函數(shù)的代碼,如程序清單3-3所示,這樣就實現(xiàn)了對RunClock模塊的初始化。完善串口電子鐘應用層步驟3:在Main.c文件的IitSoftware函數(shù)中,添加調(diào)用InitRunClock函數(shù)的代碼,如程序清單3-3所示,這樣就實現(xiàn)了對RunClock模塊的初始化。完善串口電子鐘應用層步驟3:在Mainc文件的Proc2msTask函數(shù)中,添加調(diào)用RunClockPer2Ms函數(shù)的代碼,如程序清單3-4所示。再次強調(diào),一定要將調(diào)用RunClockPer2Ms函數(shù)的代碼放在if語句中,這樣才表示RunClockPer2Ms函數(shù)每2ms執(zhí)行一次。完善串口電子鐘應用層步驟3:實驗要求每秒輸出一次時間,因此,需要在Mainc文件的Proc1SecTask函數(shù)中添加調(diào)用DispTime函數(shù)的代碼。DispTime函數(shù)的參數(shù)包括小時、分鐘、秒,需要先定義hour、min和sec時間值變量,然后通過GetTimeVal函數(shù)獲取這3個時間值代碼如程序清單3-5所示。這樣即可實現(xiàn)每秒獲取一次時間值(包括小時、分鐘、秒),并通過STM32的口發(fā)送到計算機的串口助手顯示出來。由于DispTime函數(shù)是通過串口輸出時間的,因此,需要注釋掉if語句中的printf語句。完善串口電子鐘應用層步驟3:在Main.c函數(shù)的main函數(shù)中,添加調(diào)用PauseClock和SetTimeVal函數(shù)的代碼,如程序清單3-6所示。PauseClock函數(shù)用于啟動和暫停時鐘,SetTimeVal函數(shù)用于設置初始時間值。下面根據(jù)實驗要求,將初始時間設定為23:59:50,然后通過PauseClock函數(shù)啟動時鐘。完善串口電子鐘應用層步驟4:代碼編寫完成后,單擊
畫按鈕進行編譯。編譯結(jié)束后,BuildOutput欄中出現(xiàn)OError(s)0Warning(),表示編譯成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版外匯期貨市場會員交易結(jié)算合同3篇
- 2025年度車輛轉(zhuǎn)讓協(xié)議書編制指南8篇
- 2025羽毛球大賽冠名贊助合同范本
- 基于低維凸可行域映射的新能源電網(wǎng)輸-配協(xié)同恢復研究
- 轉(zhuǎn)錄因子FanHB2b.B1調(diào)控‘蒙特瑞’草莓果實低糖特性形成的機制研究
- REDD+生物多樣性增益歸屬研究
- 二零二五年度木質(zhì)裝飾材料批發(fā)與零售合同3篇
- 長沙縣安沙鎮(zhèn)鄉(xiāng)村教師職業(yè)滿意度影響因素的研究
- 2025年度光伏發(fā)電項目承建與運維服務合同4篇
- 二零二四年共享辦公室租賃合同附設備租賃與升級服務條款3篇
- 農(nóng)民工工資表格
- 【寒假預習】專題04 閱讀理解 20篇 集訓-2025年人教版(PEP)六年級英語下冊寒假提前學(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 幼兒園籃球課培訓
- 統(tǒng)編版(2024新版)七年級《道德與法治》上冊第一單元《少年有夢》單元測試卷(含答案)
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項訓練單選(部分答案)
- 護理查房高鉀血癥
- 項目監(jiān)理策劃方案匯報
- 《職業(yè)培訓師的培訓》課件
- 建筑企業(yè)新年開工儀式方案
評論
0/150
提交評論