內(nèi)載了demo程序,上電如圖所示。 首先,說一下環(huán)境的搭建。 萬事開頭難,這句話也應(yīng)驗(yàn)在STM32L476的調(diào)試中。因?yàn)槲沂褂玫木幾g環(huán)境是keil5.11,這里怎么都找不到stm32L476的影子。于是乎,嘗試安裝keil5.15,記得之前我在一臺(tái)機(jī)子上,調(diào)試GD103的時(shí)候,也遇到如此問題。所以,這個(gè)問題對(duì)于我來說,可能比較容易,但是對(duì)于沒有使用高版本keil的TX來說,有點(diǎn)小難。 其次,說一下串口模塊的調(diào)試。 隨著點(diǎn)擊藍(lán)色按鈕的次數(shù)不同,綠色閃爍燈的閃爍頻率也不同(三種輪訓(xùn)進(jìn)行)。 有了指示燈的顯示,無疑減少了開發(fā)的難度。 一般上,玩一個(gè)開發(fā)板,都是從指示燈和信號(hào)數(shù)據(jù)開始的。既然有了指示燈,那就繼續(xù)開始通信接口的調(diào)試吧。先從串口開始。 在通信接口中,串口是比較簡(jiǎn)單,而且常用的接口。 由原理圖文檔《MB1136.pdf》的截圖,我們選擇PA9/PA10作為調(diào)試串口管腳。 我做了三個(gè)實(shí)驗(yàn): 第一個(gè)實(shí)驗(yàn):串口對(duì)發(fā)。利用軟件包中提供的串口例程,有中斷方式,有polling方式,但前提都是需要兩塊板子。借助于之前調(diào)試過的stm32f072開發(fā)板。
http://v.youku.com/v_show/id_XMTM3MDk5MDU4MA==.html
實(shí)驗(yàn)完成之后,對(duì)串口代碼調(diào)試中遇到的問題,進(jìn)行總結(jié)。 第一, 習(xí)慣于STM32F407的代碼調(diào)試之后,突然發(fā)現(xiàn),nucleo版本的代碼庫(kù),突然讓我找不到方向。著急之下,我強(qiáng)行把代碼移植過來,然后邊編譯,邊改寫宏等代碼定義。IO口的修改完成之后,突然發(fā)現(xiàn)串口代碼完全不同,而且中斷都沒有找到。放下板子,冷靜了兩天,重新拾起L476的代碼之后,心里在想,既然工程師把這樣的代碼整理成包,就說明必有高明之處。于是乎,開始靜下心來,研究代碼。 第二, 研究串口代碼N天之后,感覺到代碼的高明之處,內(nèi)心非常欽佩如此的代碼邏輯安排。其實(shí),對(duì)于底層驅(qū)動(dòng)代碼熟悉的工程師或者興趣愛好者來說,可能這不算的什么,但能寫出一套驅(qū)動(dòng)代碼,也并非一蹴而就。明白之后,頓覺收獲匪淺。 第三, 實(shí)驗(yàn)簡(jiǎn)單,但耗費(fèi)我?guī)滋斓墓Ψ,希望后續(xù)更多模塊調(diào)試成功。比如12864的調(diào)試,激光測(cè)距調(diào)試,頻率合成器調(diào)試等等,都是我最擅長(zhǎng)的調(diào)試。
【經(jīng)驗(yàn)】 1、 小結(jié) (1) main開始,進(jìn)行模塊初始化;初始化過程中,包含管腳的功能定義,并會(huì)調(diào)用stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c (驅(qū)動(dòng)文件); (2) 驅(qū)動(dòng)文件中,會(huì)調(diào)用HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim); (3) HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim)函數(shù)中,包含有中斷的初始化;同時(shí),在stm32l4xx_it.c內(nèi),定義中斷函數(shù); 中斷函數(shù)會(huì)再次調(diào)用驅(qū)動(dòng)文件stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c內(nèi)的xxxxHandle函數(shù)(比如:HAL_TIM_IRQHandler函數(shù)),該函數(shù)內(nèi)有相應(yīng)的回調(diào)函數(shù),回調(diào)函數(shù)內(nèi),用戶可以自由發(fā)揮,比如定時(shí)器中斷時(shí)要干啥,或者接收到數(shù)據(jù)等等。 |
|