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