找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6815|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32L476編譯環(huán)境的搭建及串口調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
內(nèi)載了demo程序,上電如圖所示。
  
首先,說(shuō)一下環(huán)境的搭建。
萬(wàn)事開(kāi)頭難,這句話也應(yīng)驗(yàn)在STM32L476的調(diào)試中。因?yàn)槲沂褂玫木幾g環(huán)境是keil5.11,這里怎么都找不到stm32L476的影子。于是乎,嘗試安裝keil5.15,記得之前我在一臺(tái)機(jī)子上,調(diào)試GD103的時(shí)候,也遇到如此問(wèn)題。所以,這個(gè)問(wèn)題對(duì)于我來(lái)說(shuō),可能比較容易,但是對(duì)于沒(méi)有使用高版本keil的TX來(lái)說(shuō),有點(diǎn)小難。
其次,說(shuō)一下串口模塊的調(diào)試。
隨著點(diǎn)擊藍(lán)色按鈕的次數(shù)不同,綠色閃爍燈的閃爍頻率也不同(三種輪訓(xùn)進(jìn)行)。
有了指示燈的顯示,無(wú)疑減少了開(kāi)發(fā)的難度。
一般上,玩一個(gè)開(kāi)發(fā)板,都是從指示燈和信號(hào)數(shù)據(jù)開(kāi)始的。既然有了指示燈,那就繼續(xù)開(kāi)始通信接口的調(diào)試吧。先從串口開(kāi)始。
在通信接口中,串口是比較簡(jiǎn)單,而且常用的接口。
由原理圖文檔《MB1136.pdf》的截圖,我們選擇PA9/PA10作為調(diào)試串口管腳。

我做了三個(gè)實(shí)驗(yàn):
第一個(gè)實(shí)驗(yàn):串口對(duì)發(fā)。利用軟件包中提供的串口例程,有中斷方式,有polling方式,但前提都是需要兩塊板子。借助于之前調(diào)試過(guò)的stm32f072開(kāi)發(fā)板。

http://v.youku.com/v_show/id_XMTM3MDk5MDU4MA==.html

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

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

實(shí)驗(yàn)完成之后,對(duì)串口代碼調(diào)試中遇到的問(wèn)題,進(jìn)行總結(jié)。
第一,  習(xí)慣于STM32F407的代碼調(diào)試之后,突然發(fā)現(xiàn),nucleo版本的代碼庫(kù),突然讓我找不到方向。著急之下,我強(qiáng)行把代碼移植過(guò)來(lái),然后邊編譯,邊改寫(xiě)宏等代碼定義。IO口的修改完成之后,突然發(fā)現(xiàn)串口代碼完全不同,而且中斷都沒(méi)有找到。放下板子,冷靜了兩天,重新拾起L476的代碼之后,心里在想,既然工程師把這樣的代碼整理成包,就說(shuō)明必有高明之處。于是乎,開(kāi)始靜下心來(lái),研究代碼。
第二,  研究串口代碼N天之后,感覺(jué)到代碼的高明之處,內(nèi)心非常欽佩如此的代碼邏輯安排。其實(shí),對(duì)于底層驅(qū)動(dòng)代碼熟悉的工程師或者興趣愛(ài)好者來(lái)說(shuō),可能這不算的什么,但能寫(xiě)出一套驅(qū)動(dòng)代碼,也并非一蹴而就。明白之后,頓覺(jué)收獲匪淺。
第三,  實(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開(kāi)始,進(jìn)行模塊初始化;初始化過(guò)程中,包含管腳的功能定義,并會(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ù)等等。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:494414 發(fā)表于 2019-5-28 16:55 | 只看該作者
代碼在哪里
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表