首先放幾段網友的觀點 1、
我當年初學的時候也糾結過,後來選擇了先學習暫存器操作,後來慢慢的把庫函式也學會了,其實都不難。完全可以兩個都學,只是你現在選乙個先下手而已。
建議你先學暫存器操作,然後學庫,以後工作中盡量使用庫。先學暫存器是因為你從51過渡過來,51也是直接控制暫存器,趁你還沒有忘記怎麼操作暫存器的時候趁熱打鐵。
用庫函式用習慣了你會發現自己會越做越快,但是知其然不知其所以然的感覺很糟糕,這時你再去學暫存器會感覺非常繁瑣,完全學不進去。
所以,先學暫存器操作,再學庫函式操作。
兩個都學是必要的,有時候做工業控制的專案有嚴格的實時性要求,你用庫函式會使速度變慢,這時你得用暫存器。其他時候能用庫盡量用庫,開發周期短,可讀性強,易於跟人配合。
暫存器操作就像手動擋汽車,庫函式操作就像自動擋汽車。手動擋會了,自動擋自然也會了。
2、暫存器操作:51就是暫存器操作,你用51需要自己寫驅動。stm32如果不用庫也是跟51一樣直接操作暫存器的。
庫函式操作:stm32的庫已經幫你把驅動寫好了,你要做的只是配置引數,然後使能。暫存器的優缺點:速度快,但是可讀性差,你要改動配置需要去查晶元手冊。
庫函式的優缺點:速度慢,但是可讀性強,用gpio_pin_5這類可讀性強的英文本母,去替代0x0101這類可讀性差的數字。
3、首先,兩個都是c語言。
從51過渡過來的話,就先說暫存器操作。每個mcu都有自己的暫存器,51是功能比較簡單的一種,相應的暫存器也比較少,我們常用的就那麼幾個,像p0 p1 smod tmod之類的,這些存在於標準標頭檔案reg.h裡面,因為少,所以大家就直接這麼去操作了,每一位對應的意義隨便翻一下手冊就看得到,甚至做幾個小專案就記的很清楚了。所以做51開發的時候大多數都是直接操作暫存器。到了stm32,原理一樣,也是有自己的暫存器,但是作為一款arm核心的晶元,功能多了非常多,暫存器自然也就多了很多,stm32的手冊有一千多頁,這時候想去像51那樣記住每個暫存器已經不現實了,所以st的工程師就給大家提供了庫函式這麼乙個東西。
這是個神器。
庫函式裡面把stm32的所有暫存器用結構體一一對應並且封裝起來,而且提供了基本的配置函式。我們要去操作配置某個外設的時候不需要再去翻眼花繚亂的資料手冊,直接找到庫函式描述拿來就可以用,這樣就能把精力放在邏輯**的開發上,而不是去費力的研究乙個晶元的外設要怎麼配置暫存器才能驅動起來。
簡單講就是這些了,庫函式是為了讓開發者從大量繁瑣的暫存器操作中脫離出來的乙個檔案包,在使用乙個外設的時候讓開發者直接去呼叫相應的驅動函式而不是自己去翻手冊乙個乙個配置暫存器。
有人說用庫函式掌握不到晶元的精髓,見仁見智了。熟悉一款晶元是在不斷的開發使用中逐漸了解並掌握的,除錯的過程中會遇到很多問題,會要求我們去跟蹤相關暫存器的狀態,在整個框架都已經建立起來的基礎上再去對照手冊做具體到暫存器每一位的分析,**對照現象,很快就能積累起來經驗,祝成功。
中心思想:想學得精就從暫存器入手,如果單純是從利用該晶元角度出發,用函式庫。
個人觀點:
st公司自己的資料也是相當的糾結,參考手冊上講得都是操作暫存器的方法,相比之下韌體庫的介紹就非常粗枝大葉。
個人經歷:筆者剛接觸stm32時是跟著**賣家的例程學習的,雖然每個部分都會一點兒,也能應用,但是就學習效果來說,賣家會的我可能會,賣家不會的我肯定不會。
假期從頭開始深入自學32。學習中,以參考手冊為主,手冊中又以架構圖為主,理清整個架構圖後再開始看st官方庫函式例程。最後,對照著庫函式中暫存器的操作,去回味參考手冊中的暫存器和架構圖,對每個模組理解更深入。但是這個過程相當耗費時間與精力,任何乙個模組都需要兩整天或者更多的時間。
舉個例子:adc模組.
以下是單個adc的架構圖:當看完並理解參考手冊中adc部分後,這個圖看懂也就不成問題了。而用庫函式操作,則會阻斷學習參考手冊的道路,同時雖然會配置簡單的adc,但對adc卻無整體的認識。
以下是adc部分的目錄:
若只是通過庫函式學習,大概能夠配置到11.8之前。而11.8之後的東西,均需要對暫存器的深入了解。
試問:eoc事件是每轉換乙個通道就產生,還是所有的都轉換完後產生?dma與eoc有何聯絡?
在掃瞄模式下,這些問題必須解決。這些對於乙個模組來說,算小問題,然窺一斑而知全貌。整個32的每個部分都有小問題,最後就成了難以跨越的大問題。
總之,如果只是應用32簡單的一些功能可以跳過暫存器,跟著賣家例程配置;若是想使用高階功能,因為參考手冊的原因,暫存器是不可能跨越過去的。而這個過程耗費的精力,將是前者的數倍。筆者認為,這一過程的量變最終應當是會引起質變的。
筆者最近開始學習通用定時器,深感吃力,寫此文已自勉。希望當我出關後,能有一覽眾山小的境界!
STM32庫函式和暫存器的區別
庫函式版和暫存器版的系統時鐘設定的區別 1.庫函式的目的是讓使用者應用的,而暫存器更加原始 庫函式的系統時鐘是預設設定的,且放在啟動檔案裡。而暫存器版的系統時鐘是stm32 clock init 336,8,2,7 2.庫函式的快捷的,但不是每個晶元都有的 暫存器是複雜的,但是每個晶元廠商都有提供系...
stm32的按鍵掃瞄 操作暫存器 庫函式
本例將實現stm32的按鍵掃瞄功能。操作暫存器 stm32的i o口作為輸入使用時,是通過讀取gpiox idr 暫存器的內容來讀取i o口狀態的。idr暫存器各位描述如下 由於systick不能像庫函式那樣方便的產生中斷,通過查詢systick狀態位後,再查詢各管腳狀態反而更為不方便,所以和庫函式...
STM32庫函式和暫存器操作的思考
從開始接觸51微控制器,到現在開始轉型學習功能更加強大的stm32f407系列,學習過程中引入了庫函式及相應操作,當時趕著進度做點東西出來,有點不求甚解。現在返回來求索 相比於原來51微控制器的暫存器,32系列的暫存器無論是個數還是實現功能時多個暫存器之間的呼叫配合,使用難度都高了不少,所以有了庫函...