基于STM32音樂MP3鬧鐘的設計與實現(xiàn)_第1頁
基于STM32音樂MP3鬧鐘的設計與實現(xiàn)_第2頁
基于STM32音樂MP3鬧鐘的設計與實現(xiàn)_第3頁
基于STM32音樂MP3鬧鐘的設計與實現(xiàn)_第4頁
基于STM32音樂MP3鬧鐘的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 題 目:基于STM32音樂MP3鬧鐘的設計與實現(xiàn) 學生姓名:學號:所在系院:專業(yè):入學時間:年月導師姓名:職稱/學位 :導師所在單位:完成時間:年月基于STM32音樂MP3鬧鐘的設計與實現(xiàn)摘要 :改革開放以來,中國迅速崛起,各種電子產(chǎn)品層出不窮,人們對電子產(chǎn)品的要求也越來越高。本設計采用ARM Cortex-M3內(nèi)核的STM32F103ZE作為微控器,選用開發(fā)板的SRAM&Flash模塊,SD卡,LCD液晶顯示屏模塊,Codec音頻模塊等,以及移植FATFS文件系統(tǒng),目的是存儲SD卡中的大數(shù)據(jù)文件和管理SD卡中的文件。本設計還移植了UCOSII操作系統(tǒng),任務的實時調(diào)度使得程序變得更加簡單,運

2、行環(huán)境也更加的穩(wěn)定。另外,加入MP3軟解碼,使得系統(tǒng)能夠識別MP3格式,正確播放出音樂。本系統(tǒng)設計并實現(xiàn)了集音樂播放,時間顯示,時間設置為一體的音樂鬧鐘,解決了鬧鐘鈴聲單調(diào),重復的苦惱。關鍵詞:STM32;MP3;鬧鐘,UCOSII;FATFS;SD卡Design and implementation of STM32 MP3 based on the alarm clock musicAbstract:Since the reform and opening up, Chinas rapid rise, all kinds of electronic products emerge in e

3、ndlessly, people also more and more high to the requirement of electronic products.This design USES the ARM architecture (M3 kernel STM32F103ZE as a micro control unit, choose development board SRAM&Flash module, SD card, LCD liquid crystal display module, audio Codec module, etc, and transplanted F

4、ATFS file system, the purpose is to store large data files in SD card, and manage the files of SD card.This design also transplant UCOSII operating system, the task of real-time scheduling makes the program more simple and running environment is also more stable.In addition, add soft decode MP3, ena

5、bles the system to identify MP3 format, right plays music.This system was designed and implemented the collection of music playback, time display, time setting for the integration of music alarm clock, solved the alarm sound monotonous, repetitive.Keywords :STM32,MP3,UCOSII,F(xiàn)ATFS ,SD card 目錄第一章 緒論11

6、.1 設計背景1第二章 硬件介紹22.1 STM32F103ZE22.2 按鍵模塊32.3 I/O 模塊32.4 存儲模塊設計42.5 LCD液晶屏模塊52.6 Codec音頻模塊72.7 USART串口模塊8第三章 系統(tǒng)軟件設計93.1 文件系統(tǒng)FAT93.2 SPI驅(qū)動103.2 SD卡的軟件設計113.2 MP3軟解碼123.2.1 方案選擇123.2.2 Helix MP3 解碼器123.3 時 鐘123.3.1 實現(xiàn)的基本功能123.4 固件庫的使用133.5 嵌入式操作系統(tǒng)UCOSII14第四章 系統(tǒng)測試與開發(fā)154.1 搭建開發(fā)環(huán)境154.1.1 安裝 JLINK 驅(qū)動154.1

7、.2 安裝 MDK154.2 硬件測試154.2.1 按鍵中斷測試154.2.3 LCD測試174.3 軟件測試174.3.1 FATFS文件系統(tǒng)移植測試174.3.2. UCOSII 操作系統(tǒng)移植194.4 系統(tǒng)總體測試與調(diào)試21致謝22參考文獻23第一章緒論1.1 設計背景自單片機出現(xiàn)至今,電子技術和計算機技術迅猛發(fā)展,其應用領域隨著人們的需求越來越大?,F(xiàn)今,單片機技術已經(jīng)遍滿人類生活的各個領域,定時控制是不可缺少的條件,未來的物聯(lián)網(wǎng)等對單片機的要求越來越高,智能化的道路定時必不可少。工業(yè)自動化中的數(shù)據(jù)處理以及實時控制,電子玩具,智能手機,游戲等等,定時的應用領域非常廣泛。在以后物聯(lián)網(wǎng)的發(fā)

8、展中定時也是發(fā)揮著很大的作用,智能家居,智能交通系統(tǒng),智能儀表等領域,或許這一刻的研究正是下一個難題的突破。因此對于定時器的學習是非常重要的。但僅僅只有單片機的只是遠遠不夠,針對實際生活,軟硬件結(jié)合。1964年,我們的前輩承擔著東京奧運會的計時工作,此后,電子鬧鐘給我們的生活帶來了意外的結(jié)果。隨著需求的增加,51單片機已經(jīng)不能滿足社會的發(fā)展,STM32系列專為低功耗、高性能、低成本的嵌入式設計的ARM Cortex-M內(nèi)核。本設計用的是STM32F103ZE是一款時鐘頻率能達到72MHz的增強型內(nèi)核。MP3是作為一種音樂文件的播放器。第一臺MP3播放器-MPMan F10是由Saehan公司于

9、1998年推出的,轟動一時。MP3全稱叫MPEG Audio Layer3,是一種音頻壓縮技術。MP3是利用 MPEG Audio Layer 3 的技術,將音樂以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的file,也就是說,在非常好的保持了原來的音質(zhì)的同時,把文件壓縮到非常小的程度在音質(zhì)丟失很小的情況下。由于MP3具有音質(zhì)高,體積小等優(yōu)點,使得其格式在網(wǎng)上非常流行,每首歌大概3,4M字節(jié)。使用MP3播放器對MP3文件進行實時的解壓縮(解碼),這樣,高品質(zhì)的MP3音樂就播放出來了。當前,MP3播放器不計其數(shù),在各種手機,電腦等各種電子產(chǎn)品中隨處可見,不少電子產(chǎn)品的MP3播放器音質(zhì)非常

10、好,手機,電腦上都可以免費下載播放器。 本次的設計音樂MP3鬧鐘,主要研究MP3播放和鬧鐘的實現(xiàn),MP3播放就是一個難點,但這次畢業(yè)論文的設計,不僅鞏固所學知識,還鍛煉了自我學習的能力。 第二章硬件介紹本設計所用硬件為STM32F103ZE開發(fā)板,自帶SRAM & Flash模塊,SD卡模塊,LCD液晶屏模塊,Codec音頻模塊,USART串口模塊等。圖 2-1 STM32F103ZE開發(fā)板2.1 STM32F103ZE STM32 STM32代表ARM Cortex-M內(nèi)核的32位微控制器 F F代表芯片子系列。 103103代表增強型系列。 RR這一項代表引腳數(shù),其中T代表36腳,C代表4

11、8腳,R代表64腳,V代表100腳,Z代表144腳,I代表176腳。 B B這一項代表內(nèi)嵌Flash容量,其中6代表32K字節(jié)Flash,8代表64K字節(jié)Flash,B代表128K字節(jié)Flash,C代表256K字節(jié)Flash,D代表384K字節(jié)Flash,E代表512K字節(jié)Flash,G代表1M字節(jié)Flash。 T T這一項代表封裝,其中H代表BGA封裝,T代表LQFP封裝,U代表VFQFPN封裝。 66這一項代表工作溫度范圍,其中6代表-4085,7代表-40105。圖2-2 STM32F103ZE字母表 STM32F103ZE 增強型系列使用ARM公司的Cortex-M3 32位的RISC

12、內(nèi)核,工作頻率為72MHz。其功能非常強大。選擇STM32F103ZE作為此次設計的微處理器,主要因為其外圍接口多種多樣,在實現(xiàn)其他功能的時候更加方便,還有一點就是其足夠大的閃存和內(nèi)存。Cortex-M3是一個32位處理器內(nèi)核。內(nèi)部的寄存器、數(shù)據(jù)路徑、存儲器接口都是32位的。CM3采用了哈佛結(jié)構,擁有獨立的數(shù)據(jù)總線和指令總線,可以讓取指與數(shù)據(jù)訪問并行不悖。這樣一來數(shù)據(jù)訪問不再占用指令總線,從而提升了性能。為實現(xiàn)這個特性,CM3內(nèi)部含有好幾條總線接口,每條都為自己的應用場合優(yōu)化過,并且它們可以并行工作。但是另一方面,指令總線和數(shù)據(jù)總線共享同一個存儲器空間(一個統(tǒng)一的存儲器系統(tǒng))。換句話說,不是因

13、為有兩條總線,可尋址空間就變成8GB了。2.2 按鍵模塊本次設計需要用按鍵對鬧鐘進行時間設置,共分為五個按鍵,上下左右中間,分別與STMF103ZE的PG15,PD3,PG14,PG13,PG7相連。在開始之前需要對按鍵,GPIO進行配置,直接調(diào)用庫函數(shù)。2.3 I/O 模塊I/O具有通用和復用功能(GPIO和AFIO)。GPIO的每個位可以由軟件分別配置成8種模式:輸入上拉,輸入下拉,輸入浮空,模擬輸入,開漏輸出,推挽式輸出,推挽式復用功能,開漏復用功能。下圖是端口位配置表和輸出模式位表。端口位配置表:圖2-3 STM32端口位配置表輸出模式位表:圖2-4 STM32端口位配置表2.4 存儲

14、模塊設計SD卡(Secure Digital Memory Card),譯為安全數(shù)碼卡,是一張只有2克,看起來像一張郵票的SD記憶卡。SD卡是這個信息化社會最為通用的數(shù)據(jù)存儲卡,在我們的生活中起著重要作用。SD卡優(yōu)點:存儲量大、價格低、安全性強、使用方便、安全性好。SD卡有6線制的SD方式和4線制的SPI方式,本設計采用SPI方式。在此過程中,以SD卡為存儲設備,必須對其內(nèi)容進行讀取。該系統(tǒng)使用STM32內(nèi)部接口SPI1與SD卡進行通信。在SPI模式下其命令由6個字節(jié)構成。SD卡以命令形式來控制SD卡的讀寫操作,可根據(jù)命令對多塊或單塊進行讀寫操作。 下圖是電路原理圖,SD卡有九個引腳,最特殊的

15、就是9號引腳。SD卡有兩種方式,如何進入兩種不同的模式呢?SD卡模式:SD卡從中喚醒的時候默認情況下是SD卡模式。當CS(1號引腳)保持高電平則依然是SD卡模式,當CS信號在復位命令被接收期間被拉低進入SPI模式。 圖2-5 SD卡電路原理圖2.5 LCD液晶屏模塊液體 :分子的方向不能找到規(guī)律的液體?!耙簯B(tài)晶體”簡稱“液晶”是指分子的方向能找到規(guī)律的液體。液晶產(chǎn)品在我們的生活中隨處可見,家里??吹碾娨暎F(xiàn)在幾乎人手一步的手機等等。LCD : Liquid Crystal Display翻譯為液晶顯示器,它一種是采用了液晶控制透光度技術來實現(xiàn)色彩的顯示器,倆片玻璃中有許多的細小的電線,有的垂直

16、有的水平,透過通電來控制水晶分子,從而達到改變分子方向的目的,并將光線折射出來產(chǎn)生畫面。在眾多LCD類型當中,STN、TFT最為常見。STN的英文為Super Twisted Nematic,是我們在平常生活中接觸最多的LCD了,還記得以前的老式手機嗎?它的屏幕就是STN的。相比于TFT,STN屬于被動矩陣式LCD器件,它的優(yōu)點是功耗小,因此特別省電。STN有傳統(tǒng)單色和彩色,彩色是在單色的基礎上加了一彩色濾光片,同時把單色顯示矩陣中每一個像素分成三個子像素,通過彩色濾光片顯示出三原色紅綠藍,因此顯示出彩色畫面。STN最多能顯示出65536中色彩,也因此亮度不高,色澤也不是特別好,因此在強光下,

17、圖像看起來有點吃力。TFT : Thin Film Transistor薄膜晶體管。也稱為主動矩陣,因其背部設置特殊光管,能夠“主動”對各個獨立像素進行控制,故得到此名。一般TFT的反應時間比較快,約為80ms,而STN為200ms,STN若要提高就會有閃爍現(xiàn)象發(fā)生。TFT則改善了STN閃爍現(xiàn)象,并且提高了播放播放動態(tài)畫面的能力。兩者相比,TFT具有更好的還原能力、更高的對比度,以及更好的色彩飽和度,它的色彩更加的細膩,層次感也更強,色彩也更加的逼真。TFT-LCD與無源TN-LCD、STN-LCD的簡單矩陣不同,它在液晶顯示屏的每一個像素上都有設置一個薄膜晶體管TFT,可以有效的克服非選通時

18、的串擾,使顯示液晶屏的靜態(tài)屬性與掃描線數(shù)無關,大大提高了圖像質(zhì)量。TFT-LCD 即薄膜晶體管液晶顯示器。電路原理圖如下: 圖2-6 LCD電路原理圖2.6 Codec音頻模塊Codec 是指在數(shù)字通信中具有編碼、譯碼功能的編譯碼器。支持視頻和音頻壓縮(CO)與解壓縮的編解碼器或軟件。Codec技術能有效減少數(shù)字存儲占用的空間,在計算機系統(tǒng)中,使用硬件完成CODEC可以節(jié)省CPU資源,提高系統(tǒng)的運行效率。在聲卡上往往可以找到一顆或者2顆甚至3顆4面有引腳的正方形芯片,面積一般為0.5-1.0平方厘米。這就是CODEC。CODEC就是多媒體數(shù)字信號編解碼器,主要負責數(shù)字-模擬信號轉(zhuǎn)換(DAC)和

19、模擬-數(shù)字信號的轉(zhuǎn)換(ADC)。不管是音頻加速器好,還是I/O控制器好,他們輸入輸出的都是純數(shù)字信號,我們要使用聲卡上的Line Out插孔輸出信號的話,信號就必須經(jīng)過聲卡上的CODEC的轉(zhuǎn)換處理??梢哉f,聲卡模擬輸入輸出的品質(zhì)和CODEC的轉(zhuǎn)換品質(zhì)有著重大的關系,音頻加速器或I/O控制器決定了聲卡內(nèi)部數(shù)字信號的質(zhì)量,而CODEC則決定了模擬輸入輸出的好壞。STM32F103VET微控制器內(nèi)置2個標準的I2S(IC-to-ICsound)接口(與SPI2和SPI3復用),可以工作于主或從模式,這2個接口可以配置為16位或32位傳輸,亦可配置為輸入或輸出支持音頻采樣頻率從8kHz到48kHz。當

20、任一個或兩個I2S接口配置為主模式,它的主時鐘可以以256倍采樣頻率輸出給外部的DAC(解碼器)或CODEC(編解碼器)。I2S是一種數(shù)字音頻設備之間的音頻數(shù)據(jù)傳輸總線標準,STM32芯片提供I2S這樣的接口,我們可以利用這個接口直接去接數(shù)模轉(zhuǎn)換的DAC芯片,這樣可以將數(shù)字音頻轉(zhuǎn)換成模擬音頻,最終將美麗的音樂傳入我們的耳朵。I2S有多種數(shù)據(jù)模式,右對齊音頻數(shù)據(jù)格式輸入(I2S Data Format),左對齊音頻數(shù)據(jù)格式輸入(left-justfied Data Format),I2S音頻數(shù)據(jù)格式輸入(I2S Data Format),還有就是標準數(shù)據(jù)格式輸入(Standard Data Fo

21、rmat)。下面是I2S Data Format的接口時序圖: 圖2-7 I2S 模式下PCM1770數(shù)字音頻接口時序2.7 USART串口模塊串口最基本的就是波特率的設置。在調(diào)用前要進行相應的設置 :第一步 :打開串口時鐘;第二步 :設置相應的IO口模式;第三步 :配置波特率、數(shù)據(jù)位長度、就校驗位每個串口都有一個自己獨立的波特率寄存器USART_BRR。Tx/Rx波特率=fPCLKx/(16*USARTDIV)在這里需要注意的是:USART、GPIO是兩個不同的模塊,USART是臨時“借用”了GPIO設備作為自己的輸出通道,因此在進行配置時,USART時鐘,GPIO的時鐘都要打開,還要將對應

22、GPIO引腳設置為第二功能模式。在嵌入式中串口一般都是用于調(diào)試,因為其傳送數(shù)據(jù)相對來說很慢,也不能進行大量數(shù)據(jù)傳輸。一般用DMA。圖2-8 串口調(diào)試電路圖第三章 系統(tǒng)軟件設計 本設計所用軟件為Keil uVsion4, Source Insight3.5, 串口調(diào)試助手。Keil uVsion4是美國Keil Software公司推出的兼容C語言軟件開發(fā)系統(tǒng),對比于傳統(tǒng)的匯編,C語言在結(jié)構上,可維護性上,結(jié)構和功能上都具有明顯的優(yōu)勢。Keil主要包含實時操作系統(tǒng)的核心(這也是嵌入式開發(fā)工程師選擇此軟件的重要原因)、C編譯器、庫管理器、宏匯編程序、連接器和調(diào)試器、固件。Keil uVsion4

23、相對于前面幾個版本,提供一個高效,整潔的環(huán)境來開發(fā)應用程序。同時能夠支持更多的ARM芯片。Source Insight3.5 實質(zhì)上是一個支持多種開發(fā)語言(java,c,c+等等)的編輯器。具有強大的查找、定位、彩色顯示等功能。是一個面向項目的源碼查看器,和編輯器。它能動態(tài)的分析你的代碼并自動維護它的符號信息數(shù)據(jù)庫,然后把有用的上下文相關的信息提示給你。串口調(diào)試助手是串口調(diào)試的相關工具,支持幾種常用波特率,如4800,9600,19200等,能設置數(shù)據(jù)位和停止位,校驗,還能自動識別串口,能以十六進制或ASCII發(fā)送或接收任何數(shù)據(jù)或字符,發(fā)送的文件大小不限制,發(fā)送周期也可以自己設置。3.1 文件

24、系統(tǒng)FAT所謂文件系統(tǒng)就是負責管理和存儲文件信息的軟件機構稱為文件管理系統(tǒng)。FAT文件系統(tǒng)(文件配置表 File Allocation Table)是由微軟開發(fā)的。目前有三種文件系統(tǒng):FAT121、FAT16、FAT32。在實際磁盤上FAT結(jié)構每一表項的大小,也就是所占的位數(shù)。FAT文件分配表每一項為12位,F(xiàn)AT16為16位,F(xiàn)AT32為32位。FatFs介紹 :當今社會大點信息量越來越大,文件系統(tǒng)成為今后單片機的一個方展方向。由于微軟Windows的廣泛應用,F(xiàn)AT文件系統(tǒng)最為常用。FatFs是小型嵌入式系統(tǒng)中,實現(xiàn)FAT文件系統(tǒng)的一個通用的文件系統(tǒng)模塊。且完全獨立與I/O層。FatFs為

25、單片機的使用而設計,具有很好的層次結(jié)果。從上到下依次為應用層,我們不需要了解其協(xié)議和內(nèi)部結(jié)構,調(diào)用基本點接口函數(shù)就行,非常簡單。中間層FatFs,實現(xiàn)FAT文件讀寫協(xié)議,一般不用修改,包含頭文件就行。需要編寫移植代碼的是FatFs提供的底層接口。圖 3-1 FATFS文件系統(tǒng)圖3.2 SPI驅(qū)動時鐘信號的相位和極性SPI_CR寄存器的時鐘極性(CPOL)和時鐘相位(CPHA),可以組合成四種可能的時序關系。CPOL位對主模式和從模式下的設備都有用,沒有數(shù)據(jù)傳輸時時鐘的空閑狀態(tài)電平由CPOL位控制。當CPOL位置一,SCK引腳保持高電平在空閑狀態(tài)下,當CPOL位清零,則SCK引腳則保持低電平。數(shù)

26、據(jù)在第一個時鐘邊沿被鎖存。若CPHA位為零,SCK時鐘的第一邊沿(CPOL位為一就是上升沿,為零時就是下降沿)進行數(shù)據(jù)位采樣。若CPHA位為一,SCK時鐘的第二邊沿(CPOL位為一就是上升沿,為零時就是下降沿)。CPOL和CPHA的組合選擇數(shù)據(jù)捕捉的時鐘邊沿。注意:1、主模式和從模式必須配置成相同的時序模式。 2、在必須將SPI禁止,必須清除SPE位,在改變CPOL/CPHA位之前。 3、數(shù)據(jù)幀格式?jīng)Q定發(fā)送或接受的數(shù)據(jù)長度,由SPI_CR1寄存器的DFF位選擇。 4、SCK的空閑狀態(tài)必須和SPI_CR1寄存器指定的極性一致(CPOL為零時,空閑時應下拉SCK為低電平,為一時,SCK為高電平)。

27、3.2 SD卡的軟件設計SD卡的寄存器,主要用于存儲SD卡自身的一些信息。向SD卡發(fā)送相應的命令就可以讀取SD卡的寄存器。SD卡指令,具有一定的格式在其發(fā)送的時候。有6字節(jié)組成。驅(qū)動設計 : 因為此設計中采用的是SD卡的SPI總線,所以SD卡的驅(qū)動是基于SPI的驅(qū)動是基礎上的。SPI最重要的函數(shù) : 寫函數(shù) void Spi_Write(uint8 chr) 和讀函數(shù) char Spi_Read()。下面是SD卡驅(qū)動最重要的幾個函數(shù)的實現(xiàn):1. 復位函數(shù):功能描述:復位SD卡,用到SD卡,用到CMD0,使用SD卡切到SPI模式。成功則返回0x00,失敗則返回INIT_CMD0_ERROR ui

28、nt8 SD_Reset(),此函數(shù)是SD卡最開始調(diào)用的函數(shù),通過發(fā)送CMD0將SD卡轉(zhuǎn)到正確的工作模式下。2. 初始化函數(shù):功能描述:初始化SD卡,使用CMD1,成功則返回0x00,失敗則返回0x01Char SD_Init(),此函數(shù)在SD卡執(zhí)行完復位函數(shù)后開始執(zhí)行。目的就是向SD卡發(fā)送CMD1,然后檢測SD卡是否進入工作狀態(tài)。3. 寫扇區(qū)函數(shù):功能描述:將buffer指向的512個字節(jié)的數(shù)據(jù)寫入到SD卡的addr扇區(qū)中,addr參數(shù)指扇區(qū)地址,buffer指向數(shù)據(jù)緩沖區(qū)的指針,成功則返回0x00,失敗返回0x01.4. 讀扇區(qū)函數(shù):功能描述:讀取addr扇區(qū)的512個字節(jié)到buffer指

29、向數(shù)據(jù)緩沖區(qū)。addr參數(shù)指扇區(qū)地址,buffer指向數(shù)據(jù)緩沖區(qū)的指針,成功則返回0x00,失敗返回0x01.3.2 MP3軟解碼3.2.1 方案選擇方案一: 此方案采用軟解MP3,直接用軟件解碼。節(jié)約了硬件成本,但代碼復雜,編程難度較高,工作量極大,而且對控制器的處理速度和資源要求都比較高。 方案二:此方案采用硬解MP3,直接用音頻解碼芯片解碼。它使用高性能的VS1003 MP3解碼芯片,功能強大而且價格便宜,VS1003支持MP3、WAV、WMA、MIDI等諸多音頻格式,音質(zhì)可與市場上中檔MP3播放器相媲美。由于PCM1770芯片僅僅只是進行D/A轉(zhuǎn)換,并不支持硬件解碼,且為了挑戰(zhàn)自己加強

30、對MP3文件格式的理解,所以選擇了方案一作為本次設計的MP3解碼方案。3.2.2 Helix MP3 解碼器Helix MP3 解碼器可浮點和定點實現(xiàn)。將該算法移植到PIC32MX 單片機時可考慮定點實現(xiàn)。該算法可運行在任意 32 位定點處理器上,并完全使用 C 語言編碼,可選擇用優(yōu)化的匯編指令替換某些代碼段。Helix MP3 解碼器提供對 MPEG-1 、 MPEG-2 和 MPEG-2.5的第 3 層 ( Layer 3)支持。它支持可變位速率、恒定位速率,以及立體聲和單聲道音頻格式。有關實現(xiàn)和特性的詳細信息,訪問 Helix MP3 解碼器網(wǎng)站:https:/datatype.heli

31、/Mp3dec。3.3 時 鐘3.3.1 實現(xiàn)的基本功能1. 閏年的判斷。如果年份不能被四整除就是平年。不能同時被四和一百整除,則是閏年。既能被四整除,也能被一百整除,還能被四百整除的也是閏年,否則是平年。2. 判斷日期是否合法,年月日時分秒小于零不合法,月日時分秒都不能超過最大值,合法之后在判斷是否是閏年,若為閏年,則判斷二月是否滿足要求。3. 對時間進行設置,可以很據(jù)自己的需求調(diào)節(jié)時間,鬧鐘的話就需要設置不同的時間,時間到了,就播放處一段音樂。下面是閏年算法的部分代碼:/*閏年算法*/if( (year_number % 4 = 0) &( year_numbe

32、r % 100 != 0) | (year_number % 400 = 0) )if(month_number = 1) | (month_number = 3) | (month_number = 5) | (month_number = 7) | (month_number = 8) | (month_number = 10) | (month_number = 12) ) if( month_number = 12) if( day_number 31 ) month_number = 1; /月份加一 day_number = 1; /天數(shù)為一 year_number+; 3.4 固

33、件庫的使用固件庫的使用很簡單,先初步熟悉一下固件,通過里面提供的函數(shù)來配置微控制器并實現(xiàn)一些簡單的分立功能。此函數(shù)庫包括了微控制器所有外設的性能特征,以及每個外設的應用實例和驅(qū)動描述,同時此函數(shù)庫是由程序、數(shù)據(jù)結(jié)構和宏組成的固件函數(shù)包。有了此固件庫后,用戶可以輕松應用每一個外設還不需要深入掌握許多細節(jié),在一定程度上給用戶帶來了很大的方便,節(jié)省了大量的程序編寫時間,也因此大大降低了開發(fā)成本。3.5 嵌入式操作系統(tǒng)UCOSIIUcosii 是Micrium公司提供的,不是一個完整的實時操作系統(tǒng),只是一個具有可移植、可裁剪、可固化、搶占式多任務的實時內(nèi)核。其源碼開放,非常適合于系統(tǒng)開發(fā),從而適合于多

34、種微處理器、數(shù)字處理芯片及微控制器。它的絕大部分源碼都是ANSI_C編寫的,CPU硬件相關的部分都是用匯編編寫,并壓縮到最低限度以便于移植到其他的CPU上。Ucosii由核心、CPU的移植、任務處理、任務同步與通信、時間處理五部分組成。1、 核心部分(OSCore.c):這部分是操作系統(tǒng)的核心,包括系統(tǒng)初始化,如void OSInit (void);系統(tǒng)的運行、中斷進出的前導、任務調(diào)度、事件處理、時鐘節(jié)拍等。2、 CPU的移植:因為它被廣泛使用,在一些問題上還得根據(jù)cpu的具體情況作相應的移植。這部分通常用匯編寫涉及SP等系統(tǒng)指針,難度比較大。3、 任務處理:主要在OSTask.c中。主要包括

35、任務的建立INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio);任務的刪除:INT8U OSTaskDel (INT8U prio);任務的掛起以及任務的恢復。4、 任務同步與通信:此部分主要包括信號量、郵箱、郵箱隊列,事件標志等部分。5、 時鐘部分:在OSTime.c中,該系統(tǒng)中最小時鐘單位是時鐘節(jié)拍,也即timetick,任務延時等都在這里完成。第四章系統(tǒng)測試與開發(fā)4.1 搭建開發(fā)環(huán)境4.1.1 安裝 JLINK 驅(qū)動JLINK 是SEGGER公司推出的,為了支持仿真ARM

36、內(nèi)核芯片的JTAG仿真器。是學習開發(fā)RAM最好的開發(fā)工具,同時與IAR,Keil等編譯環(huán)境完美連接,操作起來更加方便易學。本設計就需要用到JLINK下載和調(diào)試程序,在此之前應該先安好JLINK的驅(qū)動。下載JLINK驅(qū)動后,直接雙擊驅(qū)動文件Setup_JLINKRAM_V486B.exe,然后根據(jù)提示進行安裝即可。安好后,需要檢查是否安裝成功。把JLINK(如下圖) 圖4-1 JLINK實物圖插到電腦上USB接口,然后在我的電腦管理設備管理器通用串行總線控制器中看到一個 J-Link driver,表明驅(qū)動安裝成功。4.1.2 安裝 MDKMDK指的是Keil MDK,也稱MDK-ARM、uVi

37、sion4等。Keil MDK軟件為基于Cortex-M、Cortex-R4、ARM7、ARM9處理器設備提供了一個完整的開發(fā)環(huán)境。Keil MDK 簡單易學而且功能非常強大,是學習嵌入式非常好的開發(fā)工具。前面有過介紹。4.2 硬件測試4.2.1 按鍵中斷測試此部分測試是通過四個按鍵分別控制四個LED燈,若每個按鍵對應的每個燈都能亮則按鍵部分測試成功。/外部中斷設置voidEXTI_Configuration(void)EXTI_InitTypeDefEXTI_InitStruct;GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource3

38、);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource7);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource13);GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource14); GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource15);EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStruct.

39、EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStruct.EXTI_Line=EXTI_Line3|EXTI_Line7|EXTI_Line13|EXTI_Line14|EXTI_Line15;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStruct);/中斷優(yōu)先級設置voidNVIC_Configuration(void)NVIC_InitTypeDefNVIC_InitStruct;/三個通道三次配置,否則會被覆蓋NVIC_InitStruct.NVIC_IRQChannelCmd

40、=ENABLE;/*指定中斷源*/NVIC_InitStruct.NVIC_IRQChannel=EXTI3_IRQn;/*搶占優(yōu)先級設定*/NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;/*副優(yōu)先級設定*/NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStruct);/下面還有EXTI15_10_IRQn及 EXTI9_5_IRQn的配置,為了簡便此處就省略。在stm32f10x_it.c中加入按鍵觸發(fā)后LED燈的狀態(tài)。如:/*中斷服務程序*/Void

41、 EXTI9_5_IRQHandle(void)EXTI_ClearITPendingBit(EXTI_Line5);GPIO_SetBits(GPIOD,GPIO_Pin_3);4.2.3 LCD測試LCD的測試,就是簡單的在LCD上畫一個圓,若能顯示出來則測試通過。下面就是部分代碼:voidLCD_configuration(void)LCD_BL_Pin_Config();Delay(20);LCD_BL_Cmd(ENABLE);STM3210E_LCD_Init();LCD_SetTextColor(Red);voidLCD_BL_Pin_Config(void)GPIO_InitTy

42、peDefGPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);voidLCD_BL_Cmd(FunctionalStateNewState)if(NewState!=DISABLE)GPIO_SetB

43、its(GPIOA,GPIO_Pin_8);elseGPIO_ResetBits(GPIOA,GPIO_Pin_8);4.3 軟件測試4.3.1 FATFS文件系統(tǒng)移植測試FATFS源代碼的獲取,可以到官網(wǎng)下載。1、解壓文件會得到兩個文件夾,一個是doc文件夾,這里是FATFS的一些使用文檔和說明,以后在文件編程的時候可以查看該文檔。另一個是src文件夾,里面就是我們所要的源文件。2、建立一個STM32的工程,為方便調(diào)試,我們應重載printf()底層函數(shù)實現(xiàn)串口打印輸出??梢詤⒖家呀?jīng)建立好的printf()打印輸出工程:3、在已經(jīng)建立好的工程目錄User文件夾下新建兩個文件夾,F(xiàn)ATFS和S

44、PI_SD_Card,F(xiàn)ATFS用于存放FATFS源文件,SPI_SD_Card用于存放SPI的驅(qū)動文件。4、將ff.c添加到工程文件夾中,并新建diskio.c文件,在diskio.c文件中實現(xiàn)五個函數(shù):DSTATUS disk_initialize (BYTE);/SD卡的初始化DSTATUS disk_status (BYTE);/獲取SD卡的狀態(tài),這里可以不用管DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);/從SD卡讀取數(shù)據(jù)DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);/將數(shù)據(jù)寫入SD

45、卡,若該文件系統(tǒng)為只讀文件系統(tǒng)則不用實現(xiàn)該函數(shù)DRESULT disk_ioctl (BYTE, BYTE, void*);/獲取SD卡文件系統(tǒng)相關信息5、 diskio.c函數(shù)都實現(xiàn)后接著實現(xiàn)SPI_MSDO_Driver.c文件中的相關函數(shù),此文件可上網(wǎng)下載。6、 測試/寫文件測試printf(writefiletest.nr);res=f_open(&fdst,0:/test.txt,FA_CREATE_ALWAYS|FA_WRITE);if(res!=FR_OK)printf(openfileerror:%dnr,res);elseres=f_write(&fdst,textFileB

46、uffer,sizeof(textFileBuffer),&bw);if(res=FR_OK)printf(writedataok!%dnr,bw);elseprintf(writedataerror:%dnr,res);f_close(&fdst);/*關閉文件,必須執(zhí)行,否則數(shù)據(jù)無法寫入SD卡中*/還有讀文件測試,這里就不一一寫出來啦。4.3.2. UCOSII 操作系統(tǒng)移植1、從micrium官方下載移植版本:下載地址:解壓縮后得到如下:圖4-2 UCOSII 操作系統(tǒng)移植文件夾UC/OS-II是操作系統(tǒng)源碼,移植時基本不需要改動。Arch :與體系架構相關的,不能用C代碼實現(xiàn),必須用匯編實現(xiàn)的代碼,比如:任務切換時的寄存器切換。BSP:與單板配置相關的代碼,主要是單板工作頻率的配置和獲取。App:應用程序代碼示例。 2、文件目錄 :Libraries、MDK-Proj不變;uCOS新增加uCOS源碼;App改為uCOS的App源碼。MicriumSoftwareuCOS-IIPortsARM-Cortex-M3GenericIAR圖4-3 工程文件展示圖3、工程目錄結(jié)構:StartUp、Core、StdPheriph不變;Bsp、Source、Arch新增加uCOS源碼;App改為uCOS的App文件。4、 mC/OS-異常服務例程uC/OS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論