庫函式版和暫存器版的系統時鐘設定的區別:
**1.**庫函式的目的是讓使用者應用的,而暫存器更加原始
庫函式的系統時鐘是預設設定的,且放在啟動檔案裡。而暫存器版的系統時鐘是stm32_clock_init(336,8,2,7);.
**2.**庫函式的快捷的,但不是每個晶元都有的;暫存器是複雜的,但是每個晶元廠商都有提供系統的暫存器設定資訊。
分別開啟庫函式和暫存器版的i/o口設定:
庫函式:
rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiof, enable);gotoh後先通過assert_param();函式檢查格式是否正確同時只要是enable,rcc->ahb1enr |= rcc_ahb1periph;接著給對應的暫存器賦值。
暫存器:
rcc->ahb1enr|=1<<0; //使能porta口時鐘 (就一句賦值語句就行了)。
從這裡也可以看出暫存器的第二個區別是(打個比方,做為嵌入式開發我們經常會用到電子元器件,這是我們有兩個選擇一是在**直接買乙個模組,二是在在**買這個模組的對應的元器件然後自己焊接)這個就可以看出通過暫存器的設定確實有利於理解對應的工作原理,而且對於簡單的應用來說,確實很快捷。但是隨著你做的東西越來越多,越來越複雜,就無暇顧及每乙個功能模組的具體運**況,這時一般的話會在網上直接買對應的模組,然後利用串列埠,iic,spi等通訊方式進行獲取對應的資料即可。這時,我在想學習暫存器目的就是為了更快理解乙個新的晶元。
3.在程式上的區別(以正點原子的程式為分析物件)
a.下圖是stm32正點原子的led的初始化程式,直到今天我才發現有中的是正點原子公司寫的。裡面的結構體,使能時鐘函式,i/o設定位等函式都是st公司寫的。呼叫是st的韌體庫。
上圖的stm32f4xx_gpio.h等標頭檔案其實就是庫函式的**。正點原子的「庫函式」是實際應用的函式,是放在hardware資料夾裡。
**b.**下面的圖是暫存器板的led初始化函式,這些函式是正點原子寫的,可謂是需要什麼就寫什麼函式,大大的提高了程式的執行效率。(只引用stm32f4xx_.h)
Stm32用暫存器還是庫函式
首先放幾段的觀點 1 我當年初學的時候也糾結過,後來選擇了先學習暫存器操作,後來慢慢的把庫函式也學會了,其實都不難。完全可以兩個都學,只是你現在選乙個先下手而已。建議你先學暫存器操作,然後學庫,以後工作中盡量使用庫。先學暫存器是因為你從51過渡過來,51也是直接控制暫存器,趁你還沒有忘記怎麼操作暫存...
STM32庫函式和暫存器操作的思考
從開始接觸51微控制器,到現在開始轉型學習功能更加強大的stm32f407系列,學習過程中引入了庫函式及相應操作,當時趕著進度做點東西出來,有點不求甚解。現在返回來求索 相比於原來51微控制器的暫存器,32系列的暫存器無論是個數還是實現功能時多個暫存器之間的呼叫配合,使用難度都高了不少,所以有了庫函...
stm32的按鍵掃瞄 操作暫存器 庫函式
本例將實現stm32的按鍵掃瞄功能。操作暫存器 stm32的i o口作為輸入使用時,是通過讀取gpiox idr 暫存器的內容來讀取i o口狀態的。idr暫存器各位描述如下 由於systick不能像庫函式那樣方便的產生中斷,通過查詢systick狀態位後,再查詢各管腳狀態反而更為不方便,所以和庫函式...