首先、掌握單片機的硬件電路設計是基礎
單片機電路設計是基礎,盡管現在單片機已經進化到SoC的階段,大部分常用功能模塊單片機已經集成了,比如、USB、CAN、LAN、LCD、Camera等等,但是仍然需要搞清楚電路邏輯和代碼之間的接口邏輯,比如、模塊的地址、如何給模塊上電、斷電、復位、打開/關閉等。如果你的團隊軟件和硬件是分開的,那么你的電路設計需要輸出一個軟硬件接口文檔給到軟件工程師,通過這個文檔,軟件工程師能夠順利實現Driver層代碼設計。
其次、掌握單片機編程是靈魂
如果說硬件是一個產品的執行機構,那么軟件程序就是一個產品的大腦,代表了一個產品的靈魂,我們通常說一個產品不好用不人性化,最多的原因是軟件設計方面的問題,硬件也有,但是相比軟件方面的設計缺陷要少的多。因此,一個良好的單片機軟件設計是一個產品的重中之重。
那么如何STM32軟件編程呢?采用倒推來羅列一下:
掌握C語言程序設計,主要用到的是C語言,掌握C語言設計必不可少。
掌握軟件編程開發環境的使用方法,比如Keil和IAR的集成開發環境,通常我們代碼就是在集成開發環境中編寫的,包括代碼編寫、編譯、調試等等。
掌握軟件調試方法,可以說軟件調試占據了軟件開發絕大部分時間。調試器的熟練使用是軟件代碼排除Bug的利器。通常語法方面的錯誤編譯器在編譯階段可以給我們提示,不符合C語言語法就編譯不過去。但是代碼編譯過并不代表就符合實際項目需求,比如邏輯上是否正確、時序上是否滿足要求、指針有沒有越界等等問題必須在代碼實際運行的時候才會表現出來。Bug的定位分析,通常需要分析軟件執行的過程和時序,調試器進行單片跟蹤調試就成為必不可少的利器。
調試工具可以使用集成開發環境自帶的調試器配合ST出品的ST-link系列進行。
第三、根據實際項目需求進行選型并編程實現項目需求是目的
掌握了硬件和軟件設計,可以根據項目需求進行項目開發了。根據項目原始需要說明文檔并對原始需求說明文檔進行分析,輸出可以滿足項目需求的初步的設計文檔。這其中就包括單片機選型,軟件設計等。選擇性能過剩的單片機,必然會帶來成本的增加。當然這不是定死的條件,通常考慮性能、成本、公司的歸一化采購等等問題。
最后、高手進階永遠在路上
高手分為狹義上的高手。
狹義上的高手,比如你就只是想成為,一個harder或者coder,那么你只需要學習硬件電路設計技術即可,比如,EMC/EMC、高速電路設計和電路穩定性等,或者掌握熟練掌握C語言編程技術、編程算法、嵌入式系統編程等等。
廣義上的高手會再進一步,了解具體領域的發展動態,比如,機器人、無人機、機器學習等等,并根據領域的發展、新事物的出現補充新的知識。
你想成為哪種高手呢,歡迎留言。