单片机c语言必背代码_stm32单片机编程用库函数好还是寄存器好?
庫函數和寄存操作到底哪個好,這個不好說,只能說根據個人情況和應用場合吧。比如說我,雖然說我一直用的是標準庫函數,但是我也不只是用標準庫,偶爾在需要的時候會用寄存器操作,因為寄存器操作的效率更高。
庫函數和寄存器操作的區別可能和 C 語言與匯編語言的區別差不多吧,都是跟效率有關,但有時候效率并不是唯一指標。
我們都知道 C 語言的效率要比匯編低,但是現在絕大多數嵌入式開發人員用的還是 C 語言!為什么,因為它簡單易學,容易跨平臺,移植性好,這是很大的優勢,而匯編就不同了,它針對的是某一款內核進行開發,比如51匯編語言、ARM匯編語言,一旦內核變了,如果你的代碼采用純匯編寫的代碼,那幾乎所有的代碼都不適用了。但是使用 C 語言編寫代碼就不同,你在 51 單片機寫的代碼也能在 STM32 單片機中使用,你要做的工作就是把涉及到底層硬件的代碼稍微修改一下就可以了,這種工作量很少,你的代碼寫得足夠好的話,是很容易的,這稱之為移植。那為什么 C 語言可以做到跨平臺呢?我們知道單片機最終還是要通過匯編語言執行的,所有的 C 語言其實都會通過編譯器進行轉化的,也就是說你寫的 C 語言程序會經過一種稱為編譯器的東西轉為對應的匯編語言,比如說你的 C 語言程序要運行在 51 單片機上,你就要用對應的編譯器編譯,如果要運行在 STM32 上,你也要用另一個對應的編譯器才行,這就是 C 語言能跨平臺的秘密!跨平臺的工作是交給了編譯器,而不是說 C 語言真的能直接在各種單片機上運行!
但是真正的單片機程序并不是只有 C語言的,在進入 C 的世界之前,其實是有一段代碼的,這稱之為啟動代碼,但是這段代碼很少!
庫函數和寄存器的區別也是如此,庫函數類似于 C 語言,而寄存器就類似于匯編。
使用庫函數的好處就是你不用深入每一個寄存器操作的細節,而是把工作重心放在功能實現上。所有的寄存器細節都由封裝好的函數去實現,你要做的就是合理的調用它。但也正因為細節進行了封裝,所以在編寫庫函數的時候會考慮更多,這就會導致庫函數的代碼比較臃腫,效率比較低下,但是它的好處就是方便移植、修改,就是說即使庫函數代碼真出現了問題,你也只是找對應的函數進行修改就可以了,其他的函數基本可以不用動。
正因為庫函數和寄存器操作各有優勢,所以真正的高手一般都會結合這兩種寫法,比如在一般代碼中使用庫函數編寫,遇到關鍵代碼采用寄存器操作,比如說中斷函數這種關鍵部分,一般都會使用寄存器的方式。
庫函數和寄存操作到底哪個好,這個不好說,只能說根據個人情況和應用場合吧。比如說我,雖然說我一直用的是標準庫函數,但是我也不只是用標準庫,偶爾在需要的時候會用寄存器操作,因為寄存器操作的效率更高。
庫函數和寄存器操作的區別可能和 C 語言與匯編語言的區別差不多吧,都是跟效率有關,但有時候效率并不是唯一指標。
我們都知道 C 語言的效率要比匯編低,但是現在絕大多數嵌入式開發人員用的還是 C 語言!為什么,因為它簡單易學,容易跨平臺,移植性好,這是很大的優勢,而匯編就不同了,它針對的是某一款內核進行開發,比如51匯編語言、ARM匯編語言,一旦內核變了,如果你的代碼采用純匯編寫的代碼,那幾乎所有的代碼都不適用了。但是使用 C 語言編寫代碼就不同,你在 51 單片機寫的代碼也能在 STM32 單片機中使用,你要做的工作就是把涉及到底層硬件的代碼稍微修改一下就可以了,這種工作量很少,你的代碼寫得足夠好的話,是很容易的,這稱之為移植。那為什么 C 語言可以做到跨平臺呢?我們知道單片機最終還是要通過匯編語言執行的,所有的 C 語言其實都會通過編譯器進行轉化的,也就是說你寫的 C 語言程序會經過一種稱為編譯器的東西轉為對應的匯編語言,比如說你的 C 語言程序要運行在 51 單片機上,你就要用對應的編譯器編譯,如果要運行在 STM32 上,你也要用另一個對應的編譯器才行,這就是 C 語言能跨平臺的秘密!跨平臺的工作是交給了編譯器,而不是說 C 語言真的能直接在各種單片機上運行!
但是真正的單片機程序并不是只有 C語言的,在進入 C 的世界之前,其實是有一段代碼的,這稱之為啟動代碼,但是這段代碼很少!
庫函數和寄存器的區別也是如此,庫函數類似于 C 語言,而寄存器就類似于匯編。
使用庫函數的好處就是你不用深入每一個寄存器操作的細節,而是把工作重心放在功能實現上。所有的寄存器細節都由封裝好的函數去實現,你要做的就是合理的調用它。但也正因為細節進行了封裝,所以在編寫庫函數的時候會考慮更多,這就會導致庫函數的代碼比較臃腫,效率比較低下,但是它的好處就是方便移植、修改,就是說即使庫函數代碼真出現了問題,你也只是找對應的函數進行修改就可以了,其他的函數基本可以不用動。
正因為庫函數和寄存器操作各有優勢,所以真正的高手一般都會結合這兩種寫法,比如在一般代碼中使用庫函數編寫,遇到關鍵代碼采用寄存器操作,比如說中斷函數這種關鍵部分,一般都會使用寄存器的方式。
總結
以上是生活随笔為你收集整理的单片机c语言必背代码_stm32单片机编程用库函数好还是寄存器好?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软人工智能愿景:根植于研发 寄望于“对
- 下一篇: windows键盘在mac上怎么识别_M