1. 程式人生 > >淺談對STM32微控制器的理解

淺談對STM32微控制器的理解

     假如你會使用8051 , 會寫C語言,那麼本身並不需要刻意的學習。

  為什麼使用STM32而不是8051? 是因為51的頻率太低,無法滿足計算需求?是51的管腳太少,無法滿足眾多外設的IO? 是51的功耗太大,電池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的記憶體太小而你要儲存的東西太多?

  當你需要使用STM32某些功能,而51實現不了的時候, 那STM32自然不需要學習,你會直接去尋找STM32某方面的使用方法。比如要用spi協議的網絡卡、要使用串列埠通訊、要使用rtos等等...

  關於暫存器vs庫

  我的觀點是:當你debug的時候暫存器很重要,當你需要理解晶片工作細節的時候暫存器很重要,當你開發的時候暫存器不重要。如果你沒有遇到非直接配置暫存器不可的情況,那麼就不要直接面向暫存器層面開發, 因為面向暫存器開發獲得的好處往往抵消不掉這樣做的壞處。 面向暫存器開發程式效率高,但是你需要為了提高0.01%的效率浪費10倍、乃至100倍的時間。 既然ST公司已經給你提供了好用的庫,沒有道理要重新造輪子。

  那什麼時候必須直接控制暫存器?

  第一、某一個程式碼塊呼叫非常頻繁。比如你有一個巨大的for迴圈,那麼這個for迴圈中的每一步操作都應該被謹慎的優化,優化良好就可以獲得更好的效能。這種情況一般常見於影象處理相關的程式碼中。

  第二、庫函式有bug。這個遇到的概率非常低,但確實存在。不過一般來說如果mcu表現出預料之外的行為, 你首先要想的應該是你的程式碼寫的有bug,而不是庫函式有bug。 如果庫函式真的有bug,你去google搜一下,相信你絕對不是第一個踩坑的人。