標題: STM32L476編譯環(huán)境的搭建及串口調試 [打印本頁]

作者: 51hei大小    時間: 2016-6-17 21:46
標題: STM32L476編譯環(huán)境的搭建及串口調試
內載了demo程序,上電如圖所示。
  
首先,說一下環(huán)境的搭建。
萬事開頭難,這句話也應驗在STM32L476的調試中。因為我使用的編譯環(huán)境是keil5.11,這里怎么都找不到stm32L476的影子。于是乎,嘗試安裝keil5.15,記得之前我在一臺機子上,調試GD103的時候,也遇到如此問題。所以,這個問題對于我來說,可能比較容易,但是對于沒有使用高版本keil的TX來說,有點小難。
其次,說一下串口模塊的調試。
隨著點擊藍色按鈕的次數(shù)不同,綠色閃爍燈的閃爍頻率也不同(三種輪訓進行)。
有了指示燈的顯示,無疑減少了開發(fā)的難度。
一般上,玩一個開發(fā)板,都是從指示燈和信號數(shù)據(jù)開始的。既然有了指示燈,那就繼續(xù)開始通信接口的調試吧。先從串口開始。
在通信接口中,串口是比較簡單,而且常用的接口。
由原理圖文檔《MB1136.pdf》的截圖,我們選擇PA9/PA10作為調試串口管腳。

我做了三個實驗:
第一個實驗:串口對發(fā)。利用軟件包中提供的串口例程,有中斷方式,有polling方式,但前提都是需要兩塊板子。借助于之前調試過的stm32f072開發(fā)板。
http://player.youku.com/player.php/sid/XMTM3MDk5MDU4MA==/v.swf
http://v.youku.com/v_show/id_XMTM3MDk5MDU4MA==.html

第二個實驗:串口發(fā)數(shù)據(jù)到PC。從第一個實驗的難度想到的,借助于PC無意更簡單。
http://v.youku.com/v_show/id_XMTM3MDk5ODMzNg==.html

第三個實驗:串口加定時器,按照預先設定的時間間隔,經(jīng)串口發(fā)送數(shù)據(jù)到PC。
http://v.youku.com/v_show/id_XMTM3MTAwNDEwNA==.html

實驗完成之后,對串口代碼調試中遇到的問題,進行總結。
第一,  習慣于STM32F407的代碼調試之后,突然發(fā)現(xiàn),nucleo版本的代碼庫,突然讓我找不到方向。著急之下,我強行把代碼移植過來,然后邊編譯,邊改寫宏等代碼定義。IO口的修改完成之后,突然發(fā)現(xiàn)串口代碼完全不同,而且中斷都沒有找到。放下板子,冷靜了兩天,重新拾起L476的代碼之后,心里在想,既然工程師把這樣的代碼整理成包,就說明必有高明之處。于是乎,開始靜下心來,研究代碼。
第二,  研究串口代碼N天之后,感覺到代碼的高明之處,內心非常欽佩如此的代碼邏輯安排。其實,對于底層驅動代碼熟悉的工程師或者興趣愛好者來說,可能這不算的什么,但能寫出一套驅動代碼,也并非一蹴而就。明白之后,頓覺收獲匪淺。
第三,  實驗簡單,但耗費我?guī)滋斓墓Ψ颍M罄m(xù)更多模塊調試成功。比如12864的調試,激光測距調試,頻率合成器調試等等,都是我最擅長的調試。

【經(jīng)驗】
  
1、 小結
  
(1)  main開始,進行模塊初始化;初始化過程中,包含管腳的功能定義,并會調用stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c (驅動文件);
  
(2)  驅動文件中,會調用HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim);
  
(3)  HAL_TIM_Base_MspInit(htim)或者HAL_SPI_MspInit(htim)函數(shù)中,包含有中斷的初始化;同時,在stm32l4xx_it.c內,定義中斷函數(shù);
  
中斷函數(shù)會再次調用驅動文件stm32l4xx_hal_tim.c或者stm32l4xx_hal_spi.c內的xxxxHandle函數(shù)(比如:HAL_TIM_IRQHandler函數(shù)),該函數(shù)內有相應的回調函數(shù),回調函數(shù)內,用戶可以自由發(fā)揮,比如定時器中斷時要干啥,或者接收到數(shù)據(jù)等等。


作者: 15754710462    時間: 2019-5-28 16:55
代碼在哪里




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1