版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第九章STM32處理器綜合應用STM32處理器綜合應用第1頁9.1RTX_Blinky9.2MP3_PlayerSTM32處理器綜合應用第2頁9.1RTX_Blinky本節(jié)將介紹一個綜合應用RTX、ADC、GPIO、LCD實例RTX_Blinky。STM32處理器依據(jù)電位器電壓值來控制四相八拍步進電機旋轉(zhuǎn)速度,這里以四個LED燈閃爍來表示處理器給步進電機輸入,也就是經(jīng)過電位器來控制四個LED燈循環(huán)閃爍速度,同時電位器電壓值在LCD上顯示。STM32處理器綜合應用第3頁作用其一是怎樣使用實時庫RTX來實現(xiàn)多任務應用程序;其二是怎樣使用MDK、ULink2和STM32處理器SW端口來進行實時跟蹤分析調(diào)試STM32處理器綜合應用第4頁9.1.1硬件電路STM32處理器綜合應用第5頁9.1.2RTX內(nèi)核RTX內(nèi)核是一個非常小RTOS,僅有50多個函數(shù),沒有內(nèi)存管理、文件管理等復雜功效,但能夠?qū)崿F(xiàn)多任務管理和調(diào)度。RTX是用標準C語言編寫,由RealView編譯器編譯成,可輕松實現(xiàn)任務函數(shù)申明,而不需要復雜堆棧以及變量幀配置。利用RTX核編寫實時應用程序僅需要在源程序中包含一個連接RTX實時庫頭文件“RTX.h”即可。STM32處理器綜合應用第6頁RTX慣用函數(shù)os_sys_init(void(*task)(void))該函數(shù)用于初始化并開啟RTX核,在核被初始化后,將運行參數(shù)task所指向任務函數(shù)。該函數(shù)一定是放在C語言main()函數(shù)中。STM32處理器綜合應用第7頁RTX慣用函數(shù)OS_TIDos_tsk_create(void(*task)(void),U8priority)該函數(shù)創(chuàng)建由參數(shù)任務函數(shù)指針*task所指定任務,并將任務添加準備好隊列中,新任務會被動態(tài)分配一個任務識別號(TID)。參數(shù)priority用于指定任務優(yōu)先級,默認任務優(yōu)先權(quán)是1。0為閑置任務保留,假如指定一個任務優(yōu)先權(quán)為0,則自動用1代替,值255也保留。STM32處理器綜合應用第8頁RTX慣用函數(shù)voidos_evt_set(U16event_flags,OS_TIDtask);該函數(shù)為參數(shù)task指定任務設置標志,函數(shù)僅對參數(shù)event_flags中對應位為1事件設置標志。voidos_tsk_delete_self(void)該函數(shù)停頓并刪除當前任務,程序?qū)⒗^續(xù)執(zhí)行下一個就緒隊列中最高優(yōu)先權(quán)任務。STM32處理器綜合應用第9頁RTX慣用函數(shù)voidos_dly_wait(U16delay_time)該函數(shù)用于暫停調(diào)用任務。參數(shù)delay_time詳細要求停頓時間長度,它由system_ticks衡量,delay_time能夠設置為從1至0xfffe任何值。STM32處理器綜合應用第10頁RTX慣用函數(shù)OS_RESULTos_evt_wait_and(U16wait_flags,U16timeout)該函數(shù)用于等候在wait_flags中被指定發(fā)生全部事件。函數(shù)等候參數(shù)wait_flags中對應位被設定為1事件,最多可達16個不一樣事件。timeout用于設置預約時間,預約時間之后即使沒有一個事件發(fā)生,函數(shù)必須返回。timeout可認為除了0xFFFF之外值,如果timeout設置為0xFFFF,則表示一個不確定預約時間。預約時間由系統(tǒng)時間衡量。STM32處理器綜合應用第11頁9.1.3軟件程序設計為了使用RTX以多任務方式驅(qū)動LED燈閃爍,設置5個任務OS_TIDt_phaseA、OS_TIDt_phaseB、OS_TIDt_phaseC、OS_TIDt_phaseD和OS_TIDt_lcd。其中前4個任務作用是點亮某個LED燈,延遲一段時間,然后經(jīng)過設置標志觸發(fā)另一個任務執(zhí)行,再延遲一段時間之后,熄滅LED燈,等候下一次事件標志到來;經(jīng)過這四個任務循環(huán)觸發(fā)能夠?qū)崿F(xiàn)四個LED燈循環(huán)閃爍,其延遲時間由ADC轉(zhuǎn)換值決定。STM32處理器綜合應用第12頁軟件程序設計OS_TIDt_lcd用于將ADC轉(zhuǎn)換值顯示在LCD上,按固定時間間隔不停更新。除了以上5個任務之外,還有init任務和idle任務,init任務用于創(chuàng)建以上5個任務,該任務在完成之后自行刪除;idle任務無需創(chuàng)建,永遠存在,當系統(tǒng)無其它任務時執(zhí)行該任務。STM32處理器綜合應用第13頁源文件介紹Blinky.c該源文件用于創(chuàng)建多個任務,并多個任務之間觸發(fā)。STM32_Init.c該源文件用于初始化STM32處理器各個外圍接口設備。STM32處理器綜合應用第14頁源文件介紹Setup.c該文件用于設置ADC和LED相關端口和時鐘。RTX_Config.c該文件用于配置RTX參數(shù),比如同時運行最多任務數(shù)、任務堆棧等。MDK在\Keil\ARM\RV30\Startup下自帶了幾款MCURTX配置模版文件,編程時能夠先加入近似MCU配置模版文件,然后使用配置向?qū)硇薷膮?shù),以下頁圖所表示,無需編程。STM32處理器綜合應用第15頁RTX參數(shù)配置向?qū)TM32處理器綜合應用第16頁源文件介紹LCD_4BIT.c該文件用于提供評定板上2行16字符文本LCD驅(qū)動。STM32處理器綜合應用第17頁9.1.4實時跟蹤分析Cortex-M3處理器內(nèi)核能夠使用SW接口進行實時跟蹤(Trace);這里結(jié)合RTX_Blinky介紹怎樣使用MDK、ULink2進行STM32實時跟蹤工具。STM32處理器綜合應用第18頁9.1.4.1配置實時跟蹤調(diào)試若要使用SW進行實時調(diào)試,則需要按以下步驟配置調(diào)試器、配置SWD、配置跟蹤功效。配置調(diào)試器:選擇Project->OptionsforTarget–>Debug,在以下頁圖所表示對話框中選擇ULINKCortexDebugger調(diào)試器。STM32處理器綜合應用第19頁選擇調(diào)試器STM32處理器綜合應用第20頁配置實時跟蹤調(diào)試然后將路徑\Keil\ARM\Startup\ST下STM32DBG.ini文件拷貝到工程文件夾中。選擇Project->OptionsforTarget–>Debug,在InitializationFile選項中選擇該文件:STM32處理器綜合應用第21頁STM32DBG.ini文件用于配置實時跟蹤選項,能夠使用配置向?qū)硇薷脑撐募篠TM32處理器綜合應用第22頁STM32DBG.ini中可配置選項(1)DBG_SLEEP(DebugSleepMode):允許在睡眠模式下調(diào)試;DBG_STOP(DebugStopMode):允許在停頓模式下調(diào)試;DBG_STANDBY(DebugStandbyMode):允許在備用模式下調(diào)試;TRACE_IOEN(TracePinAssignmentcontrol):允許跟蹤引腳分配;TRACE_MODE(TracePinAssignmentControl):設置跟蹤引腳分配;STM32處理器綜合應用第23頁STM32DBG.ini中可配置選項(2)DBG_IWDG_STOP(DebugIndependentWatchdogstoppedwhenCoreishalted):當處理器核掛起時候,停頓獨立看門狗時鐘;DBG_WWDG_STOP(DebugWindowWatchdogstoppedwhenCoreishalted):當處理器核掛起時候,停頓窗口看門狗時鐘;DBG_TIMx_STOP(DebugTimerstoppedwhenCoreishalted):當處理器核掛起時候,停頓調(diào)試時鐘;DBG_CAN_STOP(DebugCANstoppedwhenCoreishalted):CAN接收存放器被凍結(jié)。STM32處理器綜合應用第24頁配置SWD選擇OptionsforTarget–>Debug–>Settings,如圖所表示,設置SWD,端口選擇SW。STM32處理器綜合應用第25頁配置Trace功效Trace功效包含:CoreClock、TracePort以及定義TraceEvents等,如圖所表示。STM32處理器綜合應用第26頁9.1.4.2實時跟蹤MDK提供了各種實時跟蹤窗口,來從不一樣角度顯示實時跟蹤所捕捉統(tǒng)計;包含:狀態(tài)欄信息、ITM觀察器、邏輯分析儀、RTX核事件觀察器和實時跟蹤窗口。STM32處理器綜合應用第27頁狀態(tài)欄信息假如配置了實時跟蹤,當選擇Debug->StartDebugSession菜單開始調(diào)試時,μVision3窗口狀態(tài)欄將顯示當前跟蹤狀態(tài)信息:在狀態(tài)欄中可能顯示以下Trace信息:Trace:CommunicationError,表示Cortex-M3和μVision之間通信出現(xiàn)錯誤,原因是CoreClock設置犯錯或者Trace硬件有問題;Trace:HWBufferOverrun,表示ULink2緩沖超出,ULink2無法給μVision提供足夠快數(shù)據(jù)通信;STM32處理器綜合應用第28頁在狀態(tài)欄中可能顯示以下Trace信息續(xù)Trace:SWBufferOverrun,發(fā)生μVision內(nèi)部軟件緩沖超出;Trace:NoSynchronization,未受到同時包,原因是配置錯誤或者未連接跟蹤硬件;Trace:DataStreamError,檢測到跟蹤數(shù)據(jù)流;Trace:DataOverflow,捕捉了太多跟蹤數(shù)據(jù),跟蹤端口太忙造成跟蹤包丟失;Trace:Running...,表示目標板和實時跟蹤允許正確;TargetandRealtimeTraceisrunningwithoutanyerrors.<none>:表示目標板和實時跟蹤停頓,之前未發(fā)生任何錯誤。STM32處理器綜合應用第29頁ITM觀察器(ITMViewer)ITM是一個應用驅(qū)動跟蹤源,支持應用事件跟蹤和printf類型調(diào)試。它支持以下跟蹤信息源:軟件跟蹤、硬件跟蹤和時間戳。STM32處理器綜合應用第30頁要使用ITM觀察器,首先需要在源代碼中加入以下關于ITM端口存放器定義:#defineITM_Port8(n)(*((volatileunsignedchar*)(0xE0000000+4*n)))#defineITM_Port16(n)(*((volatileunsignedshort*)(0xE0000000+4*n)))#defineITM_Port32(n)(*((volatileunsignedlong*)(0xE0000000+4*n)))#defineDEMCR(*((volatileunsignedlong*)(0xE000EDFC)))#defineTRCENA0x01000000STM32處理器綜合應用第31頁然后,在源代碼中添加fputc函數(shù),它用于向ITM激勵端口0存放器寫數(shù)據(jù):struct__FILE{inthandle;/*Addwhateveryouneedhere*/};FILE__stdout;FILE__stdin;intfputc(intch,FILE*f){if(DEMCR&TRCENA){while(ITM_Port32(0)==0);ITM_Port8(0)=ch;}return(ch);}STM32處理器綜合應用第32頁有了fputc函數(shù)之后,就能夠用printf函數(shù)做為ITM調(diào)試輸出。ITM激勵端口0與ITMViewer窗口之間連接是固定關系:STM32處理器綜合應用第33頁完成以上設置之后,在目標調(diào)試期,能夠選擇View->SerialWindow->ITMViewer打開ITMViewer窗口STM32處理器綜合應用第34頁這時就能夠在目標調(diào)試期間經(jīng)過ITMViewer窗口查看到調(diào)試跟蹤信息:STM32處理器綜合應用第35頁邏輯分析儀(LogicAnalyzer)使用實時調(diào)試,能夠經(jīng)過邏輯分析器觀察至多4個變量值改變。STM32處理器綜合應用第36頁在調(diào)試期間,能夠在邏輯分析儀中添加希望觀察變量:STM32處理器綜合應用第37頁RTX核事件觀察器
(RTXKernelEventViewer)當運行使用實時庫RTX應用程序時,可使用RTXKernelEventViewer窗口來觀察任務切換過程。還需要允許TraceEnable,并設置正確CoreClock:STM32處理器綜合應用第38頁完成上述設置之后,在目標調(diào)試過程中選擇Peripherals->RTXKernel即可打開RTXKernel窗口:STM32處理器綜合應用第39頁System窗口STM32處理器綜合應用第40頁EventViewer窗口STM32處理器綜合應用第41頁實時跟蹤窗口在實時調(diào)試時,選擇Peripherals–>Trace菜單,來觀察和分析全部跟蹤統(tǒng)計:STM32處理器綜合應用第42頁ExceptionTrace窗口STM32處理器綜合應用第43頁EventCounters窗口顯示特殊事件計數(shù)器值:STM32處理器綜合應用第44頁Cortex-MTargetDriverSetup窗口中選擇對那些特殊事情進行計數(shù):STM32處理器綜合應用第45頁9.2MP3_Player本節(jié)將介紹一個利用STM32處理器實現(xiàn)簡易MP3Player設計實例;這個綜合應用實例有利于讀者了解SPI接口、SD卡、TIMER、USB、FAT文件系統(tǒng)等應用。STM32處理器綜合應用第46頁兩種設計方案第一個方案是簡易聲波播放器,僅使用STM103V100評定板;令計時器TIM4工作在PWM模式下,將wav格式聲波文件從SD卡中讀出;由TIM4產(chǎn)生不一樣頻率方波經(jīng)過低通濾波器和放大器送喇叭。STM32處理器綜合應用第47頁簡易聲波播放器方案STM32處理器綜合應用第48頁第二種方案第二種方案即是簡易MP3播放器;還需要使用額外解碼芯片,將MP3格式文件從SD卡讀出,然后送解碼芯片解碼播放。STM32處理器綜合應用第49頁簡易MP3Player方案STM32處理器綜合應用第50頁9.2.1SD卡結(jié)構(gòu)及讀寫方法SD卡(SecureDigitalMemoryCard)是一個為滿足安全性、容量、性能和使用環(huán)境等各方面需求而設計一個新型存放器件;SD卡允許在兩種模式下工作,即SD模式和SPI模式,本系統(tǒng)采取SPI模式。STM32處理器綜合應用第51頁SD連接器與STM32處理器SPI連接圖STM32處理器綜合應用第52頁SD卡內(nèi)部結(jié)構(gòu)及引腳STM32處理器綜合應用第53頁SD卡主要引腳和功效為:CLK:時鐘信號,每個時鐘周期傳輸一個命令或數(shù)據(jù)位,頻率可在0~25MHz之間改變,SD卡總線管理器能夠不受任何限制自由產(chǎn)生0~25MHz頻率;CMD:雙向命令和回復線,命令是一次主機到從卡操作開始,命令能夠是從主機到單卡尋址,也能夠是到全部卡;回復是對之前命令回答,回復能夠來自單卡或全部卡;DAT0~3:數(shù)據(jù)線,數(shù)據(jù)能夠從卡傳向主機也能夠從主機傳向卡。STM32處理器綜合應用第54頁SD卡命令SD卡以命令形式來控制SD卡讀寫等操作。可依據(jù)命令對多塊或單塊進行讀寫操作。在SPI模式下其命令由6個字節(jié)組成,其中高位在前。STM32處理器綜合應用第55頁讀寫SD卡兩個函數(shù):讀取SD卡函數(shù)u8MSD_ReadBlock(u8*pBuffer,u32ReadAddr,u16NumByteToRead);寫讀取SD卡函數(shù)u8MSD_WriteBlock(u8*pBuffer,u32WriteAddr,u16NumByteToWrite)STM32處理器綜合應用第56頁9.2.2FAT16文件系統(tǒng)介紹SD卡假如采取FAT16文件格式,按照其不一樣特點和作用大致可分為5部分:MBR區(qū)、DBR區(qū)、FAT區(qū)、FDT區(qū)和DATA區(qū)。因為SD卡普通不做引導盤,普通也不分區(qū),所以通常無MBR區(qū),直接從DBR區(qū)開始。STM32處理器綜合應用第57頁DBR區(qū)內(nèi)容為系統(tǒng)引導統(tǒng)計,它包含一個引導程序和一個被稱為BPB(BiosParameterBlock)本分區(qū)參數(shù)統(tǒng)計表。引導程序主要任務是當MBR將系統(tǒng)控制權(quán)交給它時,判斷本分區(qū)根目錄是否有操作系統(tǒng)引導文件,假如有則將其讀入內(nèi)存,并把控制權(quán)交給該文件。BPB參數(shù)塊統(tǒng)計著本分區(qū)起始扇區(qū)、結(jié)束扇區(qū)、文件存放格式、根目錄大小、FAT個數(shù),分配單元大小等主要參數(shù)。STM32處理器綜合應用第58頁FAT區(qū)該區(qū)內(nèi)容為文件分配表,F(xiàn)AT16文件系統(tǒng)進行空間分配最基本單位是簇。文件分配表反應了SD卡全部簇使用情況,經(jīng)過查文件分配表能夠得知任一簇使用情況。STM32處理器綜合應用第59頁FAT表對于FAT16來說,F(xiàn)AT表每項占用兩個字節(jié)。FAT表第一項通常為FFF8H。對于其它項,若其值為0000H表示可用;FFF7H表示為壞簇;FFF8H-FFFFH之間表示該簇為某文件或目錄最終一個簇,F(xiàn)FF0H-FFF6H之間為保留值;其它值則指示下一個簇簇號。STM32處理器綜合應用第60頁FDT區(qū)該區(qū)內(nèi)容為文件目錄表,F(xiàn)AT文件系統(tǒng)一個主要思想是把目錄(文件夾)看成一個特殊文件來處理,F(xiàn)AT32甚至將根目錄看成文件處理。FAT分區(qū)中全部目錄文件,實際上能夠看作是一個存放其它文件(文件夾)入口參數(shù)數(shù)據(jù)表。所以,目錄占用空間大小并不等同于其下全部數(shù)據(jù)大小,但也不等于0,通常是占很小空間。其詳細存放原理是:不論目錄文件所占空間為多少簇,一簇為多少扇區(qū)、多少字節(jié);系統(tǒng)都會以32個字節(jié)為單位,進行目錄文件所占簇分配。STM32處理器綜合應用第61頁DATA區(qū)該數(shù)據(jù)區(qū)存放文件內(nèi)容,SD卡所占用空間絕大部分為此部分。假如文件長度大于一個簇大小,需要多個簇存放該文件,這些放經(jīng)過FAT鏈表串連起來。STM32處理器綜合應用第62頁9.2.3VS1003-MP3/WMA
音頻編解碼器介紹VS1003是由芬蘭VLSISolutionOy企業(yè)所設計一款單片MP3/WMA/MIDI音頻解碼器和ADPCM編碼器;它包含一個高性能、自主產(chǎn)權(quán)低功耗DSP處理器核VSDSP4。STM32處理器綜合應用第63頁VS1003內(nèi)部結(jié)構(gòu)及引腳STM32處理器綜合應用第64頁VS1003芯片與STM32F103x處理器配合VS1003能夠作為一個微控制器從機,經(jīng)過串行SPI接口來接收輸入比特流,輸入比特流被解碼后,能夠經(jīng)過一個數(shù)字音量控制器抵達一個18位過采樣多位DAC。STM32處理器讀取SD卡中MP3文件,將其經(jīng)過SPI接口送往VS1003芯片播放,然后再利用STM32F10X處理器一些GPIO口來控制VS1003即能夠?qū)崿F(xiàn)一個MP3Player原形設計。STM32處理器綜合應用第65頁9.2.4簡易聲波播放器設計與實現(xiàn)經(jīng)過SPI1從SD卡中讀取聲波文件,將所讀取部分存放在一個緩沖器中,利用TIMER2通道1定時產(chǎn)生中止,從緩沖器中讀取聲音數(shù)據(jù),然后依據(jù)聲音數(shù)據(jù)經(jīng)過TIMER4通道3產(chǎn)生不一樣頻率方波輸出。這里使用了兩個緩沖器,一個用于存放從SD卡讀到聲音數(shù)據(jù),另一個用于將聲音數(shù)據(jù)輸出到PWM,兩個緩沖區(qū)功效不停交替,形成一個由2個緩沖區(qū)組成環(huán)形緩沖。播放聲波文件由PC機經(jīng)過超級終端以命令方式選擇,聲音播放狀態(tài)也顯示在PC機超級終端上。STM32處理器綜合應用第66頁main.c源文件包含以下幾個主要函數(shù):SetupClock:用于初始化并設置系統(tǒng)時鐘,并允許GPIOA、GPIOB、TIM2、TIM4和SPI時鐘;Speaker_Timer_Config:用于配置定時器TIM2和TIM4,TIM4通道3處于PWM1模式;TIM2通道1工作于輸出比較模式,定時發(fā)出中止,在每次中止修改TIM4通道3相關存放器,使之產(chǎn)生不一樣頻率方波;USART_Scanf_Name和USART_Scanf_Cmd:用于從超級終端獲取輸入字符串;STM32處理器綜合應用第67頁main.c源文件包含以下幾個主要函數(shù)(續(xù))PrintPass:用于在超級終端上輸出提醒符“X:>”;main:主函數(shù),首先初始化系統(tǒng)時鐘、串口、連接SD卡SPI1,與SD進行通訊初始化,檢測并在超級終端上打印SD卡信息;然后依據(jù)用戶在超級中輸入命令進行操作,這里有“dir”、“cd”、“read”、“free”、“play”五個簡單命令,分別是目錄項列表、目錄更換、以文本方式讀取文件、查詢SD空余空間和播放聲音文件;假如輸入“Play***.wav”,則處理器開始從SD卡中讀取對應聲波文件,并將其放入對應緩沖區(qū);STM32處理器綜合應用第68頁msd.c:該文件用于提供SD卡驅(qū)動,由ST企業(yè)所帶例程提供,本系統(tǒng)用到以下一些函數(shù)。SPI_Config:配置與SD卡相連接SPI1;MSD_Init:初始化SD卡通訊;MSD_WriteByte:向SD卡寫一個字節(jié);MSD_WriteByte:從SD卡讀一個字節(jié);MSD_GoIdleState:令SD卡處于空閑態(tài);Get_Medium_Characteristics:獲取SD卡容量;MSD_SendCmd:向SD卡發(fā)命令;MSD_GetResponse:從SD卡獲取響應;MSD_ReadBlock:從SD卡讀取一塊數(shù)據(jù);STM32處理器綜合應用第69頁fat16.c:該文件提供FAT16文件系統(tǒng)支持,主要包含以下一些函數(shù):ReadMBR:讀取MBR數(shù)據(jù)結(jié)構(gòu);ReadBPB:讀取BPB數(shù)據(jù)結(jié)構(gòu);ReadFAT:讀取文件分配表指定項;ReadBlock:讀取一個扇區(qū);FAT_Init:獲取FAT16文件系統(tǒng)基本信息;DirStartSec:獲取根目錄開始扇區(qū)號;DataStartSec:獲取數(shù)據(jù)區(qū)開始扇區(qū)號;STM32處理器綜合應用第70頁fat16.c續(xù)ClusConvLBA:獲取一個簇開始扇區(qū)號;LBAConvClus:轉(zhuǎn)換扇區(qū)號與簇號之間關系;LBAConvClus:計算可用空間,返回字節(jié)數(shù);GetFileName:獲取指定文件首扇區(qū)號;List_DateAndTime:獲取文件或目錄項日期時間;SearchFoler:在指定范圍內(nèi)查找子目錄;List_AllDir_Long:列出指定范圍內(nèi)目錄及目錄信息;FAT_FileOpen:打開指定文件;FAT_FileRead:讀取文件數(shù)據(jù);STM32處理器綜合應用第71頁uart.c
hw_config.cuart.c:該文件提供USART串口驅(qū)動函數(shù),能夠參考7.5串行通訊接口實例程序;hw_config.c:該文件包含系統(tǒng)初始化設置函數(shù)和中止配置函數(shù)。Set_System:用于提供系統(tǒng)時鐘及電源設置;NVIC_Config:用于設置中止向量,允許TIM2中止;STM32處理器綜合應用第72頁stm32f10x_it.c
UnicodeToGB2312.cstm32f10x_it.c:該文件僅包含一個函數(shù)TIM2_IRQHandler,即在每次TIM2中止時從緩沖器中讀取音頻數(shù)據(jù)送TIM4定時器,以用于產(chǎn)生不一樣頻率聲音。UnicodeToGB2312.c:該文件僅包含一個函數(shù)UnicodeToGB2312,處理從UniCode編碼到GB2312字符轉(zhuǎn)換,用于處理長文件名。STM32處理器綜合應用第73頁查看SD卡內(nèi)容STM32處理器綜合應用第74頁播放聲波文件STM32處理器綜合應用第75頁9.2.5簡易MP3Player設計與實現(xiàn)9.2.4小節(jié)所介紹聲音播放器,是經(jīng)過定時器TIM4產(chǎn)生不一樣頻率方波來產(chǎn)生聲音,所以只適合播放wav聲波文件,其音質(zhì)也非常粗糙。假如希望播放MP3文件,并產(chǎn)生高品質(zhì)聲音,則需要使用專用聲音解碼芯片,這將得到一個簡易MP3Player原型設計。STM32處理器綜合應用第76頁9.2.5.1
硬件設計STM32處理器綜合應用第77頁9.2.5.2軟件程序設計經(jīng)過SPI1從SD卡中讀取MP3文件,將所讀取內(nèi)容經(jīng)過SPI2發(fā)送到VS1003解碼器中播放;PC機可經(jīng)過USB總線讀寫SD卡內(nèi)容,傳送MP3文件;PC機超級終端用于發(fā)送MP3播放命令、顯示MP3播放狀態(tài)。STM32處理器綜合應用第78頁main.c:源文件包含以下幾個主要函數(shù):USART_Scanf_Name和USART_Scanf_Cmd:用于從超級終端獲取輸入字符串;PrintPass:用于在超級終端上輸出提醒符“X:>”;main:主函數(shù),首先初始化系統(tǒng)時鐘、串口、USB接口、SPI1、SPI2,經(jīng)過命令開啟VS1003芯片,檢測并在超級終端上打印SD卡信息;然后依據(jù)用戶在超級中輸入命令進行操作,這里有“dir”、“cd”、“read”、“free”、“usb”、“vstest”、“play”七個
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年05月北京2024屆中國民生銀行資產(chǎn)管理部畢業(yè)生“未來銀行家”暑期管培生校園招考筆試歷年參考題庫附帶答案詳解
- 2025年度房地產(chǎn)開發(fā)項目承包商資金保障擔保合同3篇
- 2025年度拆遷安置補償合同模板(含房屋買賣)4篇
- 2025年度廠房用電安全改造安裝合同范本4篇
- 2025年度城市地下綜合管廊建設場地平整與施工合同4篇
- 2025年度茶園場地承包合同范本-茶樹種植基地合作經(jīng)營4篇
- 2024年04月江蘇交通銀行信用卡中心蘇州分中心校園招考筆試歷年參考題庫附帶答案詳解
- 臨時暑期工勞動協(xié)議格式2024年版B版
- 2025年度茶園采摘加工一體化項目合作協(xié)議4篇
- 2025年度建筑材料運輸安全管理與培訓合同3篇
- 2024人教新版七年級上冊英語單詞英譯漢默寫表
- 《向心力》參考課件4
- 2024至2030年中國膨潤土行業(yè)投資戰(zhàn)略分析及發(fā)展前景研究報告
- 【地理】地圖的選擇和應用(分層練) 2024-2025學年七年級地理上冊同步備課系列(人教版)
- 2024年深圳中考數(shù)學真題及答案
- 土方轉(zhuǎn)運合同協(xié)議書
- Module 3 Unit 1 Point to the door(教學設計)-2024-2025學年外研版(三起)英語三年級上冊
- 智能交通信號燈安裝合同樣本
- 安全生產(chǎn)法律法規(guī)清單(2024年5月版)
- 江蘇省連云港市2023-2024學年八年級下學期期末道德與法治試卷(含答案解析)
- 2024年大學試題(宗教學)-佛教文化筆試考試歷年高頻考點試題摘選含答案
評論
0/150
提交評論