使用STM32也有好幾個年頭,起初用的開發板已經積灰了,刷乾淨開發板上的灰,我覺得,應該寫點什麼東西了,把這些年來調試走過的路,一些心得,一些體會,記錄下來,希望對大家有所幫助。箇中的一些知識,若有不中肯或描述不當的地方,也請各位多多指正。
以前,我使用的是ST的標準庫,後來,發現有一個叫Stm32CubeMx的工具,這個工具能省去很多基本配置的工作,快速地生成工程。這個工具使用HAL庫,也是ST寫的,封裝了很多最底層的細節,用起來很方便。我打算就從STM32CubeMx這個工具開始,建立第一個項目,接着調UART,I2C,GPIO,FSMC等等,到FreeRtos實時操作系統,這是個相對比較簡單的操作系統,有任務,時間片,信號量等等,講起來也比較龐大,到Lwip協議棧,這個需要很多TCP/IP的網絡基礎,建議先拜讀一下 W.Richard Stevens寫的《TCP/IP詳解》三部曲,1是協議,2是實現,3可以暫時不看,這三部曲是經典中的經典,沒有之一之二之三。拜讀完這2本書後,基本上,Lwip也能自己看懂了。
工欲善其事,必先利其器 --- 不是我說,孔子說的。
起初,我以爲器,就是各種工具,比如,STM32CubeMx等,隨着工作經驗的豐富,我發現,工具只是一部分,能熟練使用工具固然能夠提高工作效率,但任何工具,都算不上真真正正的神器,基礎理論知識,如何看懂原理圖、如何獲取資料、如何閱讀資料,這些,纔是真真正正的神器,只有掌握了這些技能,方能海闊任魚躍,天高任鳥飛,不管用的是ST的MCU,還是NXP的MCU,不管使用的是哪個庫,或者直接寄存器,結果都是一樣的。
在其間,我會插入一些基本的理論知識,用理論支持實踐,用實踐驗證理論!
好了,就讓我們開始吧!
就由第一篇開始STM32的開光儀式吧!
接下來在第二篇到第七篇,我們講一講Uart口,從配置、輪循接收、中斷接收、DMA接收、到printf函數實現、@cmd命令實現,我們把整個調試環境,搭建起來了,可以輸出一些調試命令,也可以輸出一些打印信息。
這個芯片的基本資料,在百度網盤分享裏:
鏈接:https://pan.baidu.com/s/19usUcgZPX8cCRTKt_NPcfg
密碼:07on
文件夾:\Stm32CubeMx\Document\Stm32
第一篇:《STM32CubeMx 創建第一個工程》
第二篇:《STM32 Uart及其配置》
第三篇:《STM32 Uart中斷接收》
第四篇:《STM32 Uart DMA方式接收數據》
第五篇:《STM32 Uart 接收變長數據》
第六篇:《STM32 Uart 實現printf函數》
第七篇:《STM32 Uart @調試命令的實現》
第八篇:《STM32 基本定時器》
第九篇:《STM32精準延時》
第十篇:《I2C協議詳解》
第十一篇:《STM32 使用IO口模擬I2C時序》
第十二篇:《STM32 使用硬件I2C接口讀寫EEPROM》
持續更新中... ... ...
最後,上研發部的鎮部三寶,軟件工程獅不僅要會寫代碼,還要會熟練使用這些工具,用好這三寶,調試沒煩惱。
寶1:萬用表,萬用的意思就是可量電壓可量電流可測溫度可量電阻等,而且,戳起人來老疼了。一般,我們不用來戳人,我們用來量GPIO的高低電平。
寶2:示波器,特點貴,重。我們一般用來量波形,芯片調不通怎麼辦?不知道是軟件還是硬件問題怎麼辦?視頻信號通不通怎麼辦?上示波器量唄,量時序,對比DataSheet,等等。
寶3:邏輯分析儀,抱歉,我們沒有。。。