




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 電控學院課程設計(論文) 課程名稱: ARM課程設計 題 目: 基于ARM的頻率計系統設計 院 (系): 電xxxxxxxxxxxxxxx 專業班級: 測控技術與與儀器xxxx班 姓 名: xxxxxxxxxxxx 學 號: xxxxxxxxxxxxxxxxxxxxxxxxx 指導教師: xxxxxxxxxxxxxxxxxxxxxxx 2017 年 1 月 6 日摘 要隨著移動設備的流行和發展,嵌入式系統已經成為一個熱點。它并不是最近出現的新技術,只是隨著微電子技術和計算機技術的發展,微控制芯片功能越來越大,而嵌入微控制芯片的設備和系統越來越多,從而使得這種技術越來越引人注目。它對軟硬件的體
2、積大小、成本、功耗和可靠性都提出了嚴格的要求。嵌入式系統的功能越來越強大,實現也越來越復雜,隨之出現的就是可靠性大大降低。最近的一種趨勢是一個功能強大的嵌入式系統通常需要一種操作系統來給予支持,這種操作系統是已經成熟并且穩定的,可以是嵌入式的Linux,WINCE等等。本文所要研究的就是基于ARM嵌入式系統的頻率計系統的設計與實現。本設計采用了32位ARM微處理器STM32F103作為核心處理器和ARM Linux作為嵌入式操作系統。實現了單位周期的頻率計數,采用串口與基于Labview的上位機實現通信,將實時結果顯示在上位機的界面。關鍵詞:嵌入式系統,ARM ,STM32F103 ,嵌入式l
3、inux , Labview前 言在電子技術各參數中,頻率測量的精確度是最高的,因而人們常利用某種確定的函數關系把其他電參數的精確測量轉換為頻率的測量。目前,測量頻率方法主要有低頻測周期、高頻測頻率、多周期同步測量法以及多周期完全同步測頻法。采用低頻端測周、高頻端測頻時,存在中界頻率測量誤差大即測量死區問題,因此頻率的測量準確度很難提高到較高的數量級;采用多周期完全同步測頻法,則閘門控制時間必須是被測信號與時標信號周期個數的最大公約數,因此進行一次完全同步測量需要很長的時間,不適于對實時性要求較高的場合,多周期同步測頻法,其最大優點就是與被測信號頻率大小無關,測量速度快,精度高。但多周期同步測
4、量法存在同步電路結構復雜,易造成誤觸發,可靠性不高,且此方法雖在原理上消除了±1量化誤差,但在實際應用中,經過同步電路之后,只消除了-1量化誤差,仍不能保證完全消除+1量化誤差,因此測量精度會間歇性的出現較大偏差等問題。集成數字頻率計由于所用元件少、投資少,體積小,功耗低,且可靠性高,功能強,易于設計和研發,使得它具有技術上的實用性和應用的廣泛性。不論從我們用的彩色電視機、電冰箱,DVD,還有我們現在家庭常用到的數字電壓表數字萬用表等等都包含有頻率計。現在頻率計已是向數字智能方向發展,即可以很精確的讀數也精巧易于控制。數字頻率計已是現在頻率計發展的方向,它不僅可以很方便的讀數,而且還
5、可以使頻率的測量范圍和測量準確度上都比模擬先進.而且頻率計的使用已是很多的方面,數字衛星、數字通訊等高科技的領域都有應用。所以頻率計的發展是一個整體的趨勢。一、系統概述1、STM32F103簡介ARM 公司是專門從事基于RISC 技術芯片設計開發的公司,作為知識產權供應商,本身不直接從事芯片生產,靠轉讓設計許可由合作公司生產各具特色的芯片,世界各大半導體生產商從ARM公司購買其設計的ARM 微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的ARM 微處理器芯片進入市場。目前,全世界有幾十家大的半導體公司都使用ARM 公司的授權,因此既使得ARM 技術獲得更多的第三方工具、制
6、造、軟件的支持,又使整個系統成本降低,使產品更容易進入市場被消費者所接受,更具有競爭力。STM32F103xx增強型系列由意法半導體集團設計,使用高性能的ARM Cortex-M3 32位的RISC內核,工作頻率為72MHz,內置高速存儲器(高達128K字節的閃存和20K字節的SRAM),豐富的增強I/O端口和聯接到兩條APB總線的外設。所有型號的器件都包含2個12位的ADC、4個通用16位定時器和2個高級定時器,還包含標準和先進的通信接口:多達2個I2C和SPI、3個USART、一個USB和一個CAN。2、總體方案設計本次頻率計系統設計采用以STM32F103xx系列芯片為核心,由于F103
7、系列芯片的內部資源較多,本次設計充分利用芯片內部資源,設計出高精度的頻率計系統。STM32F103待測信號發生模塊定時器上位機顯示結果圖:系統整體框圖系統的主體功能是充分利用定時器,用32內部的通用定時器3的復用功能-輸入捕獲。通過輸入捕獲對外部輸入STM32芯片內部的脈沖上升沿計數,輸入捕獲功能可以實現每一次外部脈沖輸入的上升沿引發一次中斷,再通過通用定時器4定時一秒,通過定時一秒鐘計算輸入捕獲中斷次數來判斷鐘外部脈沖輸入的頻率,最后將這個數據傳送給上位機通過虛擬儀器LABVIEW來顯示出頻率。設計中考慮到采用STM32F103開發板作為硬件基礎,板子承受的最大電壓為3.3V,而且程序調試中
8、如果接入外部脈沖輸入,不能夠立即查詢出問題所在,所以通過芯片內部資源通用定時器5的復用功能輸出PWM波來模擬外部脈沖輸入,這樣也可以更加簡化硬件設計,所以本次系統充分利用32芯片內部定時器資源來設計系統。圖:系統設計流程圖二、整體功能設計1、STM32 通用定時器簡介STM32 的通用定時器是一個通過可編程預分頻器( PSC)驅動的 16 位自動裝載計數器( CNT)構成。 STM32 的通用定時器可以被用于:測量輸入信號的脈沖長度(輸入捕獲)或者產生輸出波形(輸出比較和 PWM)等。 使用定時器預分頻器和 RCC 時鐘控制器預分頻器,脈沖長度和波形周期可以在幾個微秒到幾個毫秒間調整。 STM
9、32 的每個通用定時器都是完全獨立的,沒有互相共享的任何資源。STM3 的通用 TIMx (TIM2、 TIM3、 TIM4 和 TIM5)定時器功能包括: 1)16 位向上、向下、向上/向下自動裝載計數器( TIMx_CNT)。 2)16 位可編程(可以實時修改)預分頻器(TIMx_PSC),計數器時鐘頻率的分頻系數為 165535 之間的任意數值。 3) 4 個獨立通道( TIMx_CH14),這些通道可以用來作為: A輸入捕獲 B輸出比較 C PWM 生成(邊緣或中間對齊模式) D單脈沖模式輸出 4)可使用外部信號( TIMx_ETR)控制定時器和定時器互連(可以用 1 個定時器控制另外
10、一個定時器)的同步電路。 5)如下事件發生時產生中斷/DMA: A更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發) B觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數) C輸入捕獲 D輸出比較 E支持針對定位的增量(正交)編碼器和霍爾傳感器電路 F觸發輸入作為外部時鐘或者按周期的電流管理 2、定時器功能簡介本次設計系統中需要利用通用定時器產生一秒定時。STM32F103中的通用定時器可以由向上計數、向下計數、向上向下雙向計數多種計數模式。向上計數模式中,計數器從0計數到自動加載值(TIMx_ARR計數器內容),然后重新從0開始計數并且產生一個計數器溢出事件。
11、在向下模式中,計數器從自動裝入的值(TIMx_ARR)開始向下計數到0,然后從自動裝入的值重新開始,并產生一個計數器向下溢出事件。而中央對齊模式(向上/向下計數)是計數器從0開始計數到自動裝入的值-1,產生一個計數器溢出事件,然后向下計數到1并且產生一個計數器溢出事件;然后再從0開始重新計數。系統中采用向上計數模式,并打開定時中斷功能,當定時一秒進入中斷后后,讀取輸入捕獲進入中斷的次數并將數據通過串行口發送到上位機顯示。圖:系統整體硬件3、PWM簡介 PWM 是 Pulse Width Modulation 的縮寫,中文意思就是脈沖寬度調制,簡稱脈寬調制。它是利用微處理器的數字輸出來對模擬電路
12、進行控制的一種非常有效的技術,其控制簡單、靈活和動態響應好等優點而成為電力電子技術最廣泛應用的控制方式,其應用領域包括測量,通信,功率控制與變換,電動機控制、伺服控制、調光、開關電源,甚至某些音頻放大器,因此研究基于 PWM 技術的正負脈寬數控調制信號發生器具有十分重要的現實意義。PWM 是一種對模擬信號電平進行數字編碼的方法。通過高分辨率計數器的使用,方波的占空比被調制用來對一個具體模擬信號的電平進行編碼。PWM 信號仍然是數字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通
13、的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用 PWM 進行編碼。本次設計系統中利用通用定時器的復用功能輸出比較輸出PWM波,系統中通過調節PWM波的輸出周期來改變模擬輸出的脈沖頻率。4、輸入捕獲簡介輸入捕獲模式可以用來測量脈沖寬度或者測量頻率。STM32 的定時器,除了 TIM6 和 TIM7,其他定時器都有輸入捕獲功能。 STM32 的輸入捕獲,簡單的說就是通過檢測 TIMx_CHx 上的邊沿信號,在邊沿信號發生跳變(比如上升沿/下降沿)的時候,將當前定時器的值( TIMx_CNT)存放到對應的通道的捕獲/比較寄存器( TIMx_CC
14、Rx)里面,完成一次捕獲。同時還可以配置捕獲時是否觸發中斷/DMA 等。接下來,我們介紹我們需要用到的一些寄存器配置,需要用到的寄存器有: TIMx_ARR、TIMx_PSC、 TIMx_CCMR1、 TIMx_CCER、 TIMx_DIER、 TIMx_CR1、 TIMx_CCR1 這些寄存器在前面全部都有提到(這里的 x=5),我們這里就不再全部羅列了,我們這里針對性的介紹這幾個寄存器的配置。首先 TIMx_ARR 和 TIMx_PSC,這兩個寄存器用來設自動重裝載值和 TIMx 的時鐘分頻,再來看看捕獲/比較模式寄存器 1: TIMx_CCMR1,這個寄存器在輸入捕獲的時候,非常有用,有
15、必要重新介紹,該寄存器的各位描述如圖所示:當在輸入捕獲模式下使用的時候,對應圖的第二行描述,從圖中可以看出,TIMx_CCMR1 明顯是針對 2 個通道的配置,低八位7: 0用于捕獲/比較通道 1 的控制,而高八位15: 8則用于捕獲/比較通道 2 的控制,因為 TIMx 還有 CCMR2 這個寄存器,所以可以知道CCMR2 是用來控制通道 3 和通道 4。本次頻率計設計系統中采用TIM5_CH1 來捕獲上升沿脈沖信號,也就是要先設置輸入捕獲為上升沿檢測,記錄發生上升沿的時候 TIM5_CNT 的值。當上升沿到來時,發生捕獲,并記錄得到一次脈沖信號值。這樣,定時一秒鐘捕獲到上升沿的次數,就是每
16、秒測量到的脈沖次數,即捕獲的脈沖頻率,這就是我們所需要的結果,然后通過串口連接到上位機,將數據發送到上位機labview顯示結果。5、串口通信設計通用同步異步收發器(USART)提供了一種靈活的方法與使用工業標準NRZ異步串行數據格式的外部設備之間進行全雙工數據交換。USART利用分數波特率發生器提供寬范圍的波特率選擇。它支持同步單向通信和半雙工單線通信,也支持LIN(局部互連網),智能卡協議和IrDA(紅外數據組織)SIR ENDEC規范,以及調制解調器(CTS/RTS)操作。它還允許多處理器通信。接口通過三個引腳與其他設備連接在一起。任何USART雙向通信至少需要兩個腳:接收數據輸入(RX
17、)和發送數據輸出(TX)。 RX:接收數據串行輸入。通過采樣技術來區別數據和噪音,從而恢復數據。 TX :發送數據輸出。當發送器被禁止時,輸出引腳恢復到它的I/O端口配置。當發送器被激活,并且不發送數據時,TX引腳處于高電平。在單線和智能卡模式里,此I/O 口被同時用于數據的發送和接收。串口做為ARM的重要外部接口,同時也是軟件開發的重要調試手段。對于 單片機學習來說,非常重要。而我們開發板使用的 STM32F103 最多可以提 供 5 路串口。那么 STM32 的串口操作步驟是怎么樣的呢? 1) 打開 GPIO 的時鐘使能和 USART 的時鐘使能。 2) 設置串口 IO 的 IO 口模式。
18、 (一般輸入是模擬輸入, 輸出是復用推挽輸出) 3) 初始化 USART。 (包括設置波特率、數據長度、停止位、效驗位等) 4) 如果使用中斷接收的話,那么還要設置 NVIC 并打開中斷使能。串口總線在發送或接收前應處于空閑狀態,發送的一幀數據包括一個起始位、一個數據字(8或9位)、校驗位和1或2個的停止位。由此表明數據幀的完整和數據準確行。圖:串口發送配置流程圖6、上位機顯示界面設計上位機的顯示界面通過labview軟件設計。上位機Labview的設計主要是串口配置設計和結果顯示,其整體設計后的界面如下圖所示:圖:上位機顯示界面三、系統總體調試本次設計系統中的主要軟件設計就是對STM32F1
19、03芯片內部定時器的充分利用并綜合調用,由于32芯片的設計采用庫函數開發方式編寫程序,大大簡化了程序的設計難度。本次設計系統中也遇到了一些問題,在老師和同學的幫助下最后都一一解決了,在此也謝謝幫助過我的老師和同學們。1.設計中的捕獲中斷在幾次調試中都沒有得到正確的數據,最后通過前前后后的軟件檢查發現了問題的所在,原來是在程序沒有對通用定時器的捕獲功能映射到相應的GPIO端口,因此IO口不能相應的識別上升沿,就不能產生中斷并返回正確的數據。改正方案:打開STM32的GPIO口配置,并使定時器輸入捕獲功能到相應的IO口,改正之后,通過串口助手調試可以得到正確的捕獲到的脈沖頻率。2. 下位機程序整體
20、設計之后檢查沒錯,并可以正確的在串口助手顯示正確的結果,后邊在上位機設置完成后串口通訊,但在labview界面中不能正確顯示結果,后來多次查詢,發現是STM32F103板子沒有232模塊,因此不能正確的進行串口通訊。改正方案:在硬件設計中重新設計硬件通信模塊,改正之后就可以正常的通信,上位機可以正確的顯示結果。當然,在調試中還遇到很多細節問題,這些錯誤相信只要能夠稍微認真一點就能夠避免的。四、設計心得這次的課程設計是基于 STM32F103的頻率計,實現的主要功能用ARM的定時器/計數器的定時和計數功能,外部擴展基于LABVIEW的上位機,實現實時顯示,求累計每秒進入ARM的外部脈沖個數用上位
21、機顯示。 在做數字頻率計的設計時,開始是遇到不少的問題,比如我們想如此微弱的信號是怎樣被數字頻率計檢測的呢,頻率計到底是什么設計原理呢,畢竟還沒有接觸過實際設計和開發,所以在考慮問題的時候往往是不全面的,也就是說這次設計還有不少的方面沒有考慮周全,也一定存在著這樣那樣的問題。在調試工作時,我們要注意認真檢查設備連接是否正確。采用單片機智能控制,結合外圍電子電路,得以高低頻率的精度測量,編程簡單,精度高。自己學習ARM已經有一段的時間了,這次我又一次利用它來完成課程設計,現在深深地感受ARM的適用性強、應用面廣、功能完善。ARM技術發展已經很成熟,在電子控制系統應用上仍然占有很重要的地位,作為一
22、名測控專業的學生,學習好ARM嵌入式就顯得很有必要。在學習ARM時,不能只滿足于課本以及軟件仿真,更為重要的是注重它在實際生活中的應用,多思考、多動手搭建電路,這樣我們才能將所學的東西內化,為今后在系統設計中打下一個堅實的基礎確保各個部件都在正常工作,再進行軟件調試工作。調試過程,按照步驟進行操作,切記自己隨意妄為。總之,這次課程設計還是學習到了很多東西,耐心,團隊合作等等。感謝我們組員的配合以及老師的耐心指導。實際的操作總是比理論的學習困難更多,有很多問題是我們沒有遇到過的,學習了一學期的ARM,無論理論知識學的如何,如果不動手操作,我們永遠不會解決這些問題,因為我們也不會碰到這些問題,發現
23、問題解決問題,這才是求學求知的途徑。ARM嵌入式的內容很豐富,我們現在知道的不過是鳳毛麟角,但是這一學期的學習加上這一周的課程設計,使我對ARM的興趣更加濃烈。實踐出真知,這句話用在學習ARM身上最適合不過,理論與實踐結合才能夠創新。我覺得做課程設計同時也是對課本知識的鞏固和加強,平時看課本時,有時問題老是弄不懂,做完課程設計,那些問題就迎刃而解了。 我次的課程設計是基于 STM32F103的頻率計,實現的主要功能用ARM的定時器/計數器的定時和計數功能,外部擴展基于LABVIEW的上位機,實現實時顯示,求累計每秒進入ARM的外部脈沖個數用上位機顯示。當老師在之前讓我們選題目時,我就開始在網上
24、、在圖書館找資料,當接觸到基于ARM的頻率計這個題目時,我很迷茫,不知從何下手,雖說這學期已經開ARM課了,但是自認為學的一點都不好。隨后我們去上網查找資料,去圖書館查文獻,但是都沒有找到類似的課題,最后經過我與組員的努力,勉強有些許思緒,雖說最后我們沒能很完善的做出課題,但這個過程是值得高興地。在模擬硬件電路部分,我們查了相關的資料,其中遇到了很多的繁瑣問題,但經過同學幫助都得以解決;在軟件方面,我們按照書上的資料,逐步學習,逐步推敲,最終寫出了部分程序,雖然功能沒有完全表現出來,但是我們都很認真的去動手做了。事實上,我們遇到的問題遠不止這些,但是,無論怎樣的挫折,無論怎樣的想要放棄,最后都
25、堅持了下來。有困難就查資料,有困難就請教同學,有困難就解決困難!本著這樣的信念和心態,我們解決了一個個的困難,雖說結果不能達到預期結果,但從中我們也學到了很多知識,從原來不太熟悉的STM32F103、ARM各個部件到最后的的每一部分都有所了解,我覺得這就是我們堅持到最后的最大成果,其實在很多事情來臨時,我們不僅僅關心的是最后的結果,更重要的是擁有其中的過程。在整個動手過程,既加深了我們對ARM的理論認識,又通過STM32F103這個很有意思的載體,實現了對ARM的應用。同時,對我而言,這次課程設計還有更重要的意義,那就是我開啟了對ARM制作的興趣,個人希望在以后的工作學習中,加強這方面的訓練,
26、多制作出自己感興趣的ARM作品。書本上的知識很多都是理想化后的結論,忽略了很多實際的因素,或者涉及的不全面,可在實際的應用時這些是不能被忽略的,我們不得不考慮這方的問題,這讓我們無法根據書上的理論就輕易得到預想中的結果,有時結果甚至很差別很大。通過這次實踐使我更深刻的體會到了理論聯系實際的重要性,我們在今后的學習工作中會更加的注重實際,避免成為只會紙上談兵的趙括。在做本次課程設計的過程中,我感觸最深的當屬查閱大量的設計資料了。為了讓自己的設計更加完善,查閱這方面的設計資料是十分必要的,同時也是必不可少的。我們是在做單片機課程設計,但我們不是藝術家,他們可以拋開實際盡情在幻想的世界里翱翔,而我們
27、一切都要有據可依,有理可尋,不切實際的構想永遠只能是構想,永遠無法升級。參考文獻1徐千洋.Linux C函數庫參考手冊.M中國青年出版社.2002 2陳堅,孫志月.MODEM通信編程技術M.西安電子科技大學出版社.1998 3李現勇.Visual C+串口通信技術與工程實踐M.人民郵電出版社.2004 4何小平.選擇適合ARM的嵌入式操作系統J.BMRfech Inc.2003 5馬忠梅,馬廣云,徐英慧,田譯.ARM嵌入式處理結構與應用基礎M.北京航空航天大學出版社.2002 6周立功,ARM嵌入式
28、系統基礎教程(第二版)M.北京:北京航空航天大學出版社.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 邵貝貝.單片機嵌入式應用的在線開發方法M.北京:機械工業出版社,2004.9 薛濤.單
29、片機與嵌入式系統開發方法M.北京:清華大學出版社,2009.10.附錄:附錄一:系統電路原理圖附錄二:主程序圖#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();key_init();
30、 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_InitStructure;RCC_A
31、PB1PeriphClockCmd(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_CounterMode = TI
32、M_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_ICPSC_DIV1
33、; 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_InitStruct
34、ure.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);GPIO_InitS
35、tructure.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_50MHz;GPIO
36、_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_TimeBaseInitStructure.TIM_P
37、eriod = 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 );NVIC_Prio
38、rityGroupConfig(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_initGPIO_
39、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_InitStructure.GPIO_Pi
40、n=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 = 0;TIM_T
41、imeBaseInitStructure.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.TIM_OCPolari
42、ty=TIM_OCPolarity_Low;TIM_OC2Init(TIM3,&TIM_OCInitStructure);TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);TIM_Cmd(TIM3,ENABLE);void TIM4_IRQHandler() /定時器4中斷函數static u8 i=0;TIM_ClearITPendingBit(TIM4,TIM_IT_Update);i+; if(i>=2)i=0;printf("一秒鐘出現上升沿次數為:%d rn",count);count=0;#include "printf.h"int fputc(int ch,FILE *p) USART_SendDat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年合肥瑤海科創集團社會招聘13人筆試參考題庫附帶答案詳解
- 2025至2031年中國大豆磷脂散行業投資前景及策略咨詢研究報告
- 小學生友情演講稿(5篇)
- 江蘇省鎮江市本年度(2025)小學一年級數學統編版期中考試((上下)學期)試卷及答案
- 2025國家團結出版社有限公司招聘2人筆試參考題庫附帶答案詳解
- 從全球視角看醫療創新實踐中的基因編輯技術倫理與法律問題
- 火鍋店的促銷活動方案(4篇)
- 屋頂防水工程承包合同
- 2025至2031年中國全墊升氣墊船行業投資前景及策略咨詢研究報告
- 混凝土管材購銷合同
- 2023年33號文附件繼電保護及安全自動裝置壓板及保護屏統一命名
- 機械制圖規范
- GB/Z 42217-2022醫療器械用于醫療器械質量體系軟件的確認
- GB/T 9799-1997金屬覆蓋層鋼鐵上的鋅電鍍層
- 醫師定期考核口腔題庫
- 尾礦庫基本知識課件
- 學生自我陳述興趣特長發展潛能生涯規劃500字
- 少年中國說五線譜樂譜
- 《酸堿中和反應》上課課件(省級優質課獲獎作品)
- 消防器材每月定期檢查記錄表
- 酒店員工服務禮儀規范培訓模板
評論
0/150
提交評論