




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 電控學(xué)院課程設(shè)計(論文) 課程名稱: ARM課程設(shè)計 題 目: 基于ARM的頻率計系統(tǒng)設(shè)計 院 (系): 電xxxxxxxxxxxxxxx 專業(yè)班級: 測控技術(shù)與與儀器xxxx班 姓 名: xxxxxxxxxxxx 學(xué) 號: xxxxxxxxxxxxxxxxxxxxxxxxx 指導(dǎo)教師: xxxxxxxxxxxxxxxxxxxxxxx 2017 年 1 月 6 日摘 要隨著移動設(shè)備的流行和發(fā)展,嵌入式系統(tǒng)已經(jīng)成為一個熱點。它并不是最近出現(xiàn)的新技術(shù),只是隨著微電子技術(shù)和計算機技術(shù)的發(fā)展,微控制芯片功能越來越大,而嵌入微控制芯片的設(shè)備和系統(tǒng)越來越多,從而使得這種技術(shù)越來
2、越引人注目。它對軟硬件的體積大小、成本、功耗和可靠性都提出了嚴格的要求。嵌入式系統(tǒng)的功能越來越強大,實現(xiàn)也越來越復(fù)雜,隨之出現(xiàn)的就是可靠性大大降低。最近的一種趨勢是一個功能強大的嵌入式系統(tǒng)通常需要一種操作系統(tǒng)來給予支持,這種操作系統(tǒng)是已經(jīng)成熟并且穩(wěn)定的,可以是嵌入式的Linux,WINCE等等。本文所要研究的就是基于ARM嵌入式系統(tǒng)的頻率計系統(tǒng)的設(shè)計與實現(xiàn)。本設(shè)計采用了32位ARM微處理器STM32F103作為核心處理器和ARM Linux作為嵌入式操作系統(tǒng)。實現(xiàn)了單位周期的頻率計數(shù),采用串口與基于Labview的上位機實現(xiàn)通信,將實時結(jié)果顯示在上位機的界面。關(guān)鍵詞:嵌入式系統(tǒng),ARM ,ST
3、M32F103 ,嵌入式linux , Labview前 言在電子技術(shù)各參數(shù)中,頻率測量的精確度是最高的,因而人們常利用某種確定的函數(shù)關(guān)系把其他電參數(shù)的精確測量轉(zhuǎn)換為頻率的測量。目前,測量頻率方法主要有低頻測周期、高頻測頻率、多周期同步測量法以及多周期完全同步測頻法。采用低頻端測周、高頻端測頻時,存在中界頻率測量誤差大即測量死區(qū)問題,因此頻率的測量準確度很難提高到較高的數(shù)量級;采用多周期完全同步測頻法,則閘門控制時間必須是被測信號與時標信號周期個數(shù)的最大公約數(shù),因此進行一次完全同步測量需要很長的時間,不適于對實時性要求較高的場合,多周期同步測頻法,其最大優(yōu)點就是與被測信號頻率大小無關(guān),測量速度
4、快,精度高。但多周期同步測量法存在同步電路結(jié)構(gòu)復(fù)雜,易造成誤觸發(fā),可靠性不高,且此方法雖在原理上消除了±1量化誤差,但在實際應(yīng)用中,經(jīng)過同步電路之后,只消除了-1量化誤差,仍不能保證完全消除+1量化誤差,因此測量精度會間歇性的出現(xiàn)較大偏差等問題。集成數(shù)字頻率計由于所用元件少、投資少,體積小,功耗低,且可靠性高,功能強,易于設(shè)計和研發(fā),使得它具有技術(shù)上的實用性和應(yīng)用的廣泛性。不論從我們用的彩色電視機、電冰箱,DVD,還有我們現(xiàn)在家庭常用到的數(shù)字電壓表數(shù)字萬用表等等都包含有頻率計?,F(xiàn)在頻率計已是向數(shù)字智能方向發(fā)展,即可以很精確的讀數(shù)也精巧易于控制。數(shù)字頻率計已是現(xiàn)在頻率計發(fā)展的方向,它不
5、僅可以很方便的讀數(shù),而且還可以使頻率的測量范圍和測量準確度上都比模擬先進.而且頻率計的使用已是很多的方面,數(shù)字衛(wèi)星、數(shù)字通訊等高科技的領(lǐng)域都有應(yīng)用。所以頻率計的發(fā)展是一個整體的趨勢。一、系統(tǒng)概述1、STM32F103簡介ARM 公司是專門從事基于RISC 技術(shù)芯片設(shè)計開發(fā)的公司,作為知識產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM公司購買其設(shè)計的ARM 微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的ARM 微處理器芯片進入市場。目前,全世界有幾十家大的半導(dǎo)體公司都使用ARM 公司的授權(quán),因此既使得ARM 技
6、術(shù)獲得更多的工具、制造、軟件的支持,又使整個系統(tǒng)成本降低,使產(chǎn)品更容易進入市場被消費者所接受,更具有競爭力。STM32F103xx增強型系列由意法半導(dǎo)體集團設(shè)計,使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲器(高達128K字節(jié)的閃存和20K字節(jié)的SRAM),豐富的增強I/O端口和聯(lián)接到兩條APB總線的外設(shè)。所有型號的器件都包含2個12位的ADC、4個通用16位定時器和2個高級定時器,還包含標準和先進的通信接口:多達2個I2C和SPI、3個USART、一個USB和一個CAN。2、總體方案設(shè)計本次頻率計系統(tǒng)設(shè)計采用以STM32F103xx系列芯片
7、為核心,由于F103系列芯片的內(nèi)部資源較多,本次設(shè)計充分利用芯片內(nèi)部資源,設(shè)計出高精度的頻率計系統(tǒng)。STM32F103待測信號發(fā)生模塊定時器上位機顯示結(jié)果圖:系統(tǒng)整體框圖系統(tǒng)的主體功能是充分利用定時器,用32內(nèi)部的通用定時器3的復(fù)用功能-輸入捕獲。通過輸入捕獲對外部輸入STM32芯片內(nèi)部的脈沖上升沿計數(shù),輸入捕獲功能可以實現(xiàn)每一次外部脈沖輸入的上升沿引發(fā)一次中斷,再通過通用定時器4定時一秒,通過定時一秒鐘計算輸入捕獲中斷次數(shù)來判斷鐘外部脈沖輸入的頻率,最后將這個數(shù)據(jù)傳送給上位機通過虛擬儀器LABVIEW來顯示出頻率。設(shè)計中考慮到采用STM32F103開發(fā)板作為硬件基礎(chǔ),板子承受的最大電壓為3.
8、3V,而且程序調(diào)試中如果接入外部脈沖輸入,不能夠立即查詢出問題所在,所以通過芯片內(nèi)部資源通用定時器5的復(fù)用功能輸出PWM波來模擬外部脈沖輸入,這樣也可以更加簡化硬件設(shè)計,所以本次系統(tǒng)充分利用32芯片內(nèi)部定時器資源來設(shè)計系統(tǒng)。圖:系統(tǒng)設(shè)計流程圖二、整體功能設(shè)計1、STM32 通用定時器簡介STM32 的通用定時器是一個通過可編程預(yù)分頻器( PSC)驅(qū)動的 16 位自動裝載計數(shù)器( CNT)構(gòu)成。 STM32 的通用定時器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產(chǎn)生輸出波形(輸出比較和 PWM)等。 使用定時器預(yù)分頻器和 RCC 時鐘控制器預(yù)分頻器,脈沖長度和波形周期可以在幾個微秒到幾個
9、毫秒間調(diào)整。 STM32 的每個通用定時器都是完全獨立的,沒有互相共享的任何資源。STM3 的通用 TIMx (TIM2、 TIM3、 TIM4 和 TIM5)定時器功能包括: 1)16 位向上、向下、向上/向下自動裝載計數(shù)器( TIMx_CNT)。 2)16 位可編程(可以實時修改)預(yù)分頻器(TIMx_PSC),計數(shù)器時鐘頻率的分頻系數(shù)為 165535 之間的任意數(shù)值。 3) 4 個獨立通道( TIMx_CH14),這些通道可以用來作為: A輸入捕獲 B輸出比較 C PWM 生成(邊緣或中間對齊模式) D單脈沖模式輸出 4)可使用外部信號( TIMx_ETR)控制定時器和定時器互連(可以用
10、1 個定時器控制另外一個定時器)的同步電路。 5)如下事件發(fā)生時產(chǎn)生中斷/DMA: A更新:計數(shù)器向上溢出/向下溢出,計數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā)) B觸發(fā)事件(計數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計數(shù)) C輸入捕獲 D輸出比較 E支持針對定位的增量(正交)編碼器和霍爾傳感器電路 F觸發(fā)輸入作為外部時鐘或者按周期的電流管理 2、定時器功能簡介本次設(shè)計系統(tǒng)中需要利用通用定時器產(chǎn)生一秒定時。STM32F103中的通用定時器可以由向上計數(shù)、向下計數(shù)、向上向下雙向計數(shù)多種計數(shù)模式。向上計數(shù)模式中,計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR計數(shù)器內(nèi)容),然后重新從0開始計數(shù)并且產(chǎn)生
11、一個計數(shù)器溢出事件。在向下模式中,計數(shù)器從自動裝入的值(TIMx_ARR)開始向下計數(shù)到0,然后從自動裝入的值重新開始,并產(chǎn)生一個計數(shù)器向下溢出事件。而中央對齊模式(向上/向下計數(shù))是計數(shù)器從0開始計數(shù)到自動裝入的值-1,產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到1并且產(chǎn)生一個計數(shù)器溢出事件;然后再從0開始重新計數(shù)。系統(tǒng)中采用向上計數(shù)模式,并打開定時中斷功能,當(dāng)定時一秒進入中斷后后,讀取輸入捕獲進入中斷的次數(shù)并將數(shù)據(jù)通過串行口發(fā)送到上位機顯示。圖:系統(tǒng)整體硬件3、PWM簡介 PWM 是 Pulse Width Modulation 的縮寫,中文意思就是脈沖寬度調(diào)制,簡稱脈寬調(diào)制。它是利用微處理器的
12、數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù),其控制簡單、靈活和動態(tài)響應(yīng)好等優(yōu)點而成為電力電子技術(shù)最廣泛應(yīng)用的控制方式,其應(yīng)用領(lǐng)域包括測量,通信,功率控制與變換,電動機控制、伺服控制、調(diào)光、開關(guān)電源,甚至某些音頻放大器,因此研究基于 PWM 技術(shù)的正負脈寬數(shù)控調(diào)制信號發(fā)生器具有十分重要的現(xiàn)實意義。PWM 是一種對模擬信號電平進行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼。PWM 信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加
13、到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用 PWM 進行編碼。本次設(shè)計系統(tǒng)中利用通用定時器的復(fù)用功能輸出比較輸出PWM波,系統(tǒng)中通過調(diào)節(jié)PWM波的輸出周期來改變模擬輸出的脈沖頻率。4、輸入捕獲簡介輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32 的定時器,除了 TIM6 和 TIM7,其他定時器都有輸入捕獲功能。 STM32 的輸入捕獲,簡單的說就是通過檢測 TIMx_CHx 上的邊沿信號,在邊沿信號發(fā)生跳變(比如上升沿/下降沿)的時候,將當(dāng)前定時器的值( TIMx_CNT)存放到對應(yīng)的通道的捕獲/比較寄存
14、器( TIMx_CCRx)里面,完成一次捕獲。同時還可以配置捕獲時是否觸發(fā)中斷/DMA 等。接下來,我們介紹我們需要用到的一些寄存器配置,需要用到的寄存器有: TIMx_ARR、TIMx_PSC、 TIMx_CCMR1、 TIMx_CCER、 TIMx_DIER、 TIMx_CR1、 TIMx_CCR1 這些寄存器在前面全部都有提到(這里的 x=5),我們這里就不再全部羅列了,我們這里針對性的介紹這幾個寄存器的配置。首先 TIMx_ARR 和 TIMx_PSC,這兩個寄存器用來設(shè)自動重裝載值和 TIMx 的時鐘分頻,再來看看捕獲/比較模式寄存器 1: TIMx_CCMR1,這個寄存器在輸入捕獲
15、的時候,非常有用,有必要重新介紹,該寄存器的各位描述如圖所示:當(dāng)在輸入捕獲模式下使用的時候,對應(yīng)圖的第二行描述,從圖中可以看出,TIMx_CCMR1 明顯是針對 2 個通道的配置,低八位7: 0用于捕獲/比較通道 1 的控制,而高八位15: 8則用于捕獲/比較通道 2 的控制,因為 TIMx 還有 CCMR2 這個寄存器,所以可以知道CCMR2 是用來控制通道 3 和通道 4。本次頻率計設(shè)計系統(tǒng)中采用TIM5_CH1 來捕獲上升沿脈沖信號,也就是要先設(shè)置輸入捕獲為上升沿檢測,記錄發(fā)生上升沿的時候 TIM5_CNT 的值。當(dāng)上升沿到來時,發(fā)生捕獲,并記錄得到一次脈沖信號值。這樣,定時一秒鐘捕獲到
16、上升沿的次數(shù),就是每秒測量到的脈沖次數(shù),即捕獲的脈沖頻率,這就是我們所需要的結(jié)果,然后通過串口連接到上位機,將數(shù)據(jù)發(fā)送到上位機labview顯示結(jié)果。5、串口通信設(shè)計通用同步異步收發(fā)器(USART)提供了一種靈活的方法與使用工業(yè)標準NRZ異步串行數(shù)據(jù)格式的外部設(shè)備之間進行全雙工數(shù)據(jù)交換。USART利用分數(shù)波特率發(fā)生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網(wǎng)),智能卡協(xié)議和IrDA(紅外數(shù)據(jù)組織)SIR ENDEC規(guī)范,以及調(diào)制解調(diào)器(CTS/RTS)操作。它還允許多處理器通信。接口通過三個引腳與其他設(shè)備連接在一起。任何USART雙向通信至少需要兩個腳
17、:接收數(shù)據(jù)輸入(RX)和發(fā)送數(shù)據(jù)輸出(TX)。 RX:接收數(shù)據(jù)串行輸入。通過采樣技術(shù)來區(qū)別數(shù)據(jù)和噪音,從而恢復(fù)數(shù)據(jù)。 TX :發(fā)送數(shù)據(jù)輸出。當(dāng)發(fā)送器被禁止時,輸出引腳恢復(fù)到它的I/O端口配置。當(dāng)發(fā)送器被激活,并且不發(fā)送數(shù)據(jù)時,TX引腳處于高電平。在單線和智能卡模式里,此I/O 口被同時用于數(shù)據(jù)的發(fā)送和接收。串口做為ARM的重要外部接口,同時也是軟件開發(fā)的重要調(diào)試手段。對于 單片機學(xué)習(xí)來說,非常重要。而我們開發(fā)板使用的 STM32F103 最多可以提 供 5 路串口。那么 STM32 的串口操作步驟是怎么樣的呢? 1) 打開 GPIO 的時鐘使能和 USART 的時鐘使能。 2) 設(shè)置串口 IO
18、 的 IO 口模式。 (一般輸入是模擬輸入, 輸出是復(fù)用推挽輸出) 3) 初始化 USART。 (包括設(shè)置波特率、數(shù)據(jù)長度、停止位、效驗位等) 4) 如果使用中斷接收的話,那么還要設(shè)置 NVIC 并打開中斷使能。串口總線在發(fā)送或接收前應(yīng)處于空閑狀態(tài),發(fā)送的一幀數(shù)據(jù)包括一個起始位、一個數(shù)據(jù)字(8或9位)、校驗位和1或2個的停止位。由此表明數(shù)據(jù)幀的完整和數(shù)據(jù)準確行。圖:串口發(fā)送配置流程圖6、上位機顯示界面設(shè)計上位機的顯示界面通過labview軟件設(shè)計。上位機Labview的設(shè)計主要是串口配置設(shè)計和結(jié)果顯示,其整體設(shè)計后的界面如下圖所示:圖:上位機顯示界面三、系統(tǒng)總體調(diào)試本次設(shè)計系統(tǒng)中的主要軟件設(shè)計
19、就是對STM32F103芯片內(nèi)部定時器的充分利用并綜合調(diào)用,由于32芯片的設(shè)計采用庫函數(shù)開發(fā)方式編寫程序,大大簡化了程序的設(shè)計難度。本次設(shè)計系統(tǒng)中也遇到了一些問題,在老師和同學(xué)的幫助下最后都一一解決了,在此也謝謝幫助過我的老師和同學(xué)們。1.設(shè)計中的捕獲中斷在幾次調(diào)試中都沒有得到正確的數(shù)據(jù),最后通過前前后后的軟件檢查發(fā)現(xiàn)了問題的所在,原來是在程序沒有對通用定時器的捕獲功能映射到相應(yīng)的GPIO端口,因此IO口不能相應(yīng)的識別上升沿,就不能產(chǎn)生中斷并返回正確的數(shù)據(jù)。改正方案:打開STM32的GPIO口配置,并使定時器輸入捕獲功能到相應(yīng)的IO口,改正之后,通過串口助手調(diào)試可以得到正確的捕獲到的脈沖頻率。
20、2. 下位機程序整體設(shè)計之后檢查沒錯,并可以正確的在串口助手顯示正確的結(jié)果,后邊在上位機設(shè)置完成后串口通訊,但在labview界面中不能正確顯示結(jié)果,后來多次查詢,發(fā)現(xiàn)是STM32F103板子沒有232模塊,因此不能正確的進行串口通訊。改正方案:在硬件設(shè)計中重新設(shè)計硬件通信模塊,改正之后就可以正常的通信,上位機可以正確的顯示結(jié)果。當(dāng)然,在調(diào)試中還遇到很多細節(jié)問題,這些錯誤相信只要能夠稍微認真一點就能夠避免的。四、設(shè)計心得這次的課程設(shè)計是基于 STM32F103的頻率計,實現(xiàn)的主要功能用ARM的定時器/計數(shù)器的定時和計數(shù)功能,外部擴展基于LABVIEW的上位機,實現(xiàn)實時顯示,求累計每秒進入ARM
21、的外部脈沖個數(shù)用上位機顯示。 在做數(shù)字頻率計的設(shè)計時,開始是遇到不少的問題,比如我們想如此微弱的信號是怎樣被數(shù)字頻率計檢測的呢,頻率計到底是什么設(shè)計原理呢,畢竟還沒有接觸過實際設(shè)計和開發(fā),所以在考慮問題的時候往往是不全面的,也就是說這次設(shè)計還有不少的方面沒有考慮周全,也一定存在著這樣那樣的問題。在調(diào)試工作時,我們要注意認真檢查設(shè)備連接是否正確。采用單片機智能控制,結(jié)合外圍電子電路,得以高低頻率的精度測量,編程簡單,精度高。自己學(xué)習(xí)ARM已經(jīng)有一段的時間了,這次我又一次利用它來完成課程設(shè)計,現(xiàn)在深深地感受ARM的適用性強、應(yīng)用面廣、功能完善。ARM技術(shù)發(fā)展已經(jīng)很成熟,在電子控制系統(tǒng)應(yīng)用上仍然占有
22、很重要的地位,作為一名測控專業(yè)的學(xué)生,學(xué)習(xí)好ARM嵌入式就顯得很有必要。在學(xué)習(xí)ARM時,不能只滿足于課本以及軟件仿真,更為重要的是注重它在實際生活中的應(yīng)用,多思考、多動手搭建電路,這樣我們才能將所學(xué)的東西內(nèi)化,為今后在系統(tǒng)設(shè)計中打下一個堅實的基礎(chǔ)確保各個部件都在正常工作,再進行軟件調(diào)試工作。調(diào)試過程,按照步驟進行操作,切記自己隨意妄為。總之,這次課程設(shè)計還是學(xué)習(xí)到了很多東西,耐心,團隊合作等等。感謝我們組員的配合以及老師的耐心指導(dǎo)。實際的操作總是比理論的學(xué)習(xí)困難更多,有很多問題是我們沒有遇到過的,學(xué)習(xí)了一學(xué)期的ARM,無論理論知識學(xué)的如何,如果不動手操作,我們永遠不會解決這些問題,因為我們也不
23、會碰到這些問題,發(fā)現(xiàn)問題解決問題,這才是求學(xué)求知的途徑。ARM嵌入式的內(nèi)容很豐富,我們現(xiàn)在知道的不過是鳳毛麟角,但是這一學(xué)期的學(xué)習(xí)加上這一周的課程設(shè)計,使我對ARM的興趣更加濃烈。實踐出真知,這句話用在學(xué)習(xí)ARM身上最適合不過,理論與實踐結(jié)合才能夠創(chuàng)新。我覺得做課程設(shè)計同時也是對課本知識的鞏固和加強,平時看課本時,有時問題老是弄不懂,做完課程設(shè)計,那些問題就迎刃而解了。 我次的課程設(shè)計是基于 STM32F103的頻率計,實現(xiàn)的主要功能用ARM的定時器/計數(shù)器的定時和計數(shù)功能,外部擴展基于LABVIEW的上位機,實現(xiàn)實時顯示,求累計每秒進入ARM的外部脈沖個數(shù)用上位機顯示。當(dāng)老師在之前讓我們選題
24、目時,我就開始在網(wǎng)上、在圖書館找資料,當(dāng)接觸到基于ARM的頻率計這個題目時,我很迷茫,不知從何下手,雖說這學(xué)期已經(jīng)開ARM課了,但是自認為學(xué)的一點都不好。隨后我們?nèi)ド暇W(wǎng)查找資料,去圖書館查文獻,但是都沒有找到類似的課題,最后經(jīng)過我與組員的努力,勉強有些許思緒,雖說最后我們沒能很完善的做出課題,但這個過程是值得高興地。在模擬硬件電路部分,我們查了相關(guān)的資料,其中遇到了很多的繁瑣問題,但經(jīng)過同學(xué)幫助都得以解決;在軟件方面,我們按照書上的資料,逐步學(xué)習(xí),逐步推敲,最終寫出了部分程序,雖然功能沒有完全表現(xiàn)出來,但是我們都很認真的去動手做了。事實上,我們遇到的問題遠不止這些,但是,無論怎樣的挫折,無論怎
25、樣的想要放棄,最后都堅持了下來。有困難就查資料,有困難就請教同學(xué),有困難就解決困難!本著這樣的信念和心態(tài),我們解決了一個個的困難,雖說結(jié)果不能達到預(yù)期結(jié)果,但從中我們也學(xué)到了很多知識,從原來不太熟悉的STM32F103、ARM各個部件到最后的的每一部分都有所了解,我覺得這就是我們堅持到最后的最大成果,其實在很多事情來臨時,我們不僅僅關(guān)心的是最后的結(jié)果,更重要的是擁有其中的過程。在整個動手過程,既加深了我們對ARM的理論認識,又通過STM32F103這個很有意思的載體,實現(xiàn)了對ARM的應(yīng)用。同時,對我而言,這次課程設(shè)計還有更重要的意義,那就是我開啟了對ARM制作的興趣,個人希望在以后的工作學(xué)習(xí)中
26、,加強這方面的訓(xùn)練,多制作出自己感興趣的ARM作品。書本上的知識很多都是理想化后的結(jié)論,忽略了很多實際的因素,或者涉及的不全面,可在實際的應(yīng)用時這些是不能被忽略的,我們不得不考慮這方的問題,這讓我們無法根據(jù)書上的理論就輕易得到預(yù)想中的結(jié)果,有時結(jié)果甚至很差別很大。通過這次實踐使我更深刻的體會到了理論聯(lián)系實際的重要性,我們在今后的學(xué)習(xí)工作中會更加的注重實際,避免成為只會紙上談兵的趙括。在做本次課程設(shè)計的過程中,我感觸最深的當(dāng)屬查閱大量的設(shè)計資料了。為了讓自己的設(shè)計更加完善,查閱這方面的設(shè)計資料是十分必要的,同時也是必不可少的。我們是在做單片機課程設(shè)計,但我們不是藝術(shù)家,他們可以拋開實際盡情在幻想
27、的世界里翱翔,而我們一切都要有據(jù)可依,有理可尋,不切實際的構(gòu)想永遠只能是構(gòu)想,永遠無法升級。參考文獻1徐千洋.Linux C函數(shù)庫參考手冊.M中國青年出版社.2002 2陳堅,孫志月.MODEM通信編程技術(shù)M.西安電子科技大學(xué)出版社.1998 3李現(xiàn)勇.Visual C+串口通信技術(shù)與工程實踐M.人民郵電出版社.2004 4何小平.選擇適合ARM的嵌入式操作系統(tǒng)J.BMRfech Inc.2003 5馬忠梅,馬廣云,徐英慧,田譯.ARM嵌入式處理結(jié)構(gòu)與應(yīng)用基礎(chǔ)M.北京航空航天大學(xué)出版社.2002 6
28、周立功,ARM嵌入式系統(tǒng)基礎(chǔ)教程(第二版)M.北京:北京航空航天大學(xué)出版社.2008.97 Ren Yafie,Ke Xizheng,Liu Yijie.MEMS Gyroscope Performance Estimate Based on Allan VarianceA.InProceedings of 2007 8th International Conference on Electronic Measurement & InstrumentsC. Xi'anChina.Vol.1, 260-263.8 邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法M.北京:機械工業(yè)出版社,2
29、004.9 薛濤.單片機與嵌入式系統(tǒng)開發(fā)方法M.北京:清華大學(xué)出版社,2009.10.附錄:附錄一:系統(tǒng)電路原理圖附錄二:主程序圖#include "public.h"#include "printf.h"#include "systick.h"#include "input.h"#include "key.h"#include "time.h"#include "pwm.h"int main()u8 fx=1;u32 ti=0;time_init();k
30、ey_init(); input_init(); printf_init(); pwm_init(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);while(1)delay_ms(345);TIM_SetCompare2(TIM3, 400);void input_init()/input_initTIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_ICInitTypeDef TIM5_ICInitStructure;NVIC_InitTypeDef NVIC_InitStruc
31、ture;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE); TIM_ClearITPendingBit(TIM5,TIM_IT_Update|TIM_IT_CC1); TIM_TimeBaseInitStructure.TIM_Period = 0xffff; TIM_TimeBaseInitStructure.TIM_Prescaler = 71; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_Counte
32、rMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM5,&TIM_TimeBaseInitStructure);TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM5_ICInitStructure.TIM_ICPrescaler = TIM_
33、ICPSC_DIV1; TIM5_ICInitStructure.TIM_ICFilter = 0x00; TIM_ICInit(TIM5, &TIM5_ICInitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=TIM5_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; NVIC_
34、InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM5,ENABLE); TIM_ITConfig(TIM5, TIM_IT_Update|TIM_IT_CC1, ENABLE );void key_init() /key_initGPIO_InitTypeDef GPIO_InitStructure;SystemInit();RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);
35、GPIO_InitStructure.GPIO_Pin=K_UP; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=K_DOWN|K_LEFT|K_RIGHT;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_
36、50MHz;GPIO_Init(GPIOE,&GPIO_InitStructure);GPIO_ResetBits(GPIOA,K_UP);void time_init()/time_initTIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);TIM_ClearITPendingBit(TIM4,TIM_IT_Update);TIM_TimeBaseInitStruc
37、ture.TIM_Period = 999;TIM_TimeBaseInitStructure.TIM_Prescaler = 35999;TIM_TimeBaseInitStructure.TIM_ClockDivision = 0; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);TIM_Cmd(TIM4,ENABLE); TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE )
38、;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);void pwm_init()/ pwm
39、_initGPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_OCInitTypeDef TIM_OCInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructu
40、re.GPIO_Pin=GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);/TIM3定時器初始化TIM_TimeBaseInitStructure.TIM_Period = 1000; TIM_TimeBaseInitStructure.TIM_Prescaler = 71;TIM_TimeBaseInitStructure.TIM_ClockDivision
41、 = 0;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, & TIM_TimeBaseInitStructure);GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OCInitStructure.TI
42、M_OCPolarity=TIM_OCPolarity_Low;TIM_OC2Init(TIM3,&TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_Cmd(TIM3,ENABLE);void TIM4_IRQHandler() /定時器4中斷函數(shù)static u8 i=0;TIM_ClearITPendingBit(TIM4,TIM_IT_Update);i+; if(i>=2)i=0;printf("一秒鐘出現(xiàn)上升沿次數(shù)為:%d rn",count);count=0;#include "printf.h"int fputc(int ch,FILE *p) USART_SendData(USAR
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度雙方承諾協(xié)議書:網(wǎng)絡(luò)安全與信息保護合作協(xié)議范文
- 2025年度快遞物流運輸網(wǎng)絡(luò)優(yōu)化合作協(xié)議
- 2025年度打架雙方和解協(xié)議書模板(含環(huán)境修復(fù)責(zé)任)
- 2025年四氫苯酐項目合作計劃書
- 玻璃雕銑機項目績效評估報告
- 電子用高純氣體項目績效評估報告
- 基于生物力學(xué)的老年人坐立轉(zhuǎn)換行為研究及輔助站立座椅設(shè)計
- 蒙古族地區(qū)中老年人CT冠脈狹窄程度與冠周脂肪衰減(FAI)及TC、TG等實驗室檢查的相關(guān)性探究
- 基于碟簧的豎向隔振支座力學(xué)性能研究及隔振效果分析
- 初中數(shù)學(xué)教師DM-TPACK能力發(fā)展研究
- 2025年中國配音行業(yè)市場現(xiàn)狀、發(fā)展概況、未來前景分析報告
- 北京版(一起)英語二年級下冊單詞默寫表
- 2025-2025學(xué)年牛津譯林英語七年級下冊(7B)教學(xué)計劃
- 中建抹灰工程專項施工方案
- 地方融資平臺債務(wù)和政府中長期支出事項監(jiān)測平臺操作手冊-單位
- 心得體會 2025教師暑假政治學(xué)習(xí)心得體會
- 2020高職院校教學(xué)能力比賽大學(xué)語文課程實施報告(定)
- 洗刷書包(課件)三年級上冊勞動
- 中建建筑工程竣工驗收指南
- 2020年同等學(xué)力申碩《計算機科學(xué)與技術(shù)學(xué)科綜合水平考試》歷年真題及答案
- 智慧能源島解決方案
評論
0/150
提交評論