首先放幾段網友的觀點
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部分的目錄:
若只是通過庫函數學習,大概能夠配置到11.8之前。而11.8之后的東西,均需要對寄存器的深入了解。
試問:EOC事件是每轉換一個通道就產生,還是所有的都轉換完后產生?DMA與EOC有何聯系?
在掃描模式下,這些問題必須解決。這些對于一個模塊來說,算小問題,然窺一斑而知全貌。整個32的每個部分都有小問題,最后就成了難以跨越的大問題。
總之,如果只是應用32簡單的一些功能可以跳過寄存器,跟著賣家例程配置;若是想使用高級功能,因為參考手冊的原因,寄存器是不可能跨越過去的。而這個過程耗費的精力,將是前者的數倍。筆者認為,這一過程的量變最終應當是會引起質變的。
筆者最近開始學習通用定時器,深感吃力,寫此文已自勉。希望當我出關后,能有一覽眾山小的境界!
上一篇:stm32---輸入捕獲
下一篇:STM32-尋址最大為4G
推薦閱讀
史海拾趣
Component Research Co最初只是一家小型電子元件研發公司,面臨著激烈的市場競爭。然而,公司研發團隊在一次實驗中意外發現了一種新型半導體材料,這種材料具有出色的導電性能和穩定性。公司迅速將這一發現轉化為實際產品,并推向市場。新產品因其卓越性能迅速受到客戶青睞,Component Research Co因此名聲大噪,逐漸在電子元件市場占據一席之地。
隨著公司業務的不斷發展,Component Research Co意識到單一市場無法滿足其長期發展的需要。于是,公司開始尋求國際合作,與多家國際知名企業建立戰略合作關系。這些合作不僅為公司帶來了先進的技術和資金支持,還幫助公司打開了新的市場。通過國際合作,Component Research Co的業務范圍逐漸擴展到全球各地。
Anachip公司自成立以來,一直致力于半導體技術的研發。在某個關鍵時期,公司研發團隊成功開發出一種新型的芯片技術,這項技術在性能上遠超當時的行業標準。憑借這一技術突破,Anachip迅速在市場上推出了一系列高性能的芯片產品,贏得了客戶的廣泛認可。隨著產品銷量的增長,公司的知名度和市場份額也逐步提升。
C-MAX Time Solutions公司自創立以來,一直致力于電子時間同步技術的研發。在某一時期,公司推出了一款革命性的高精度時鐘同步芯片,這款芯片憑借其卓越的穩定性和低延遲特性,迅速在通信、金融和交通等領域獲得了廣泛應用。這一技術創新不僅提升了C-MAX的市場競爭力,也推動了整個電子行業時間同步技術的發展。
C-MAX Time Solutions公司自創立以來,一直致力于電子時間同步技術的研發。在某一時期,公司推出了一款革命性的高精度時鐘同步芯片,這款芯片憑借其卓越的穩定性和低延遲特性,迅速在通信、金融和交通等領域獲得了廣泛應用。這一技術創新不僅提升了C-MAX的市場競爭力,也推動了整個電子行業時間同步技術的發展。
2015年,FIDELIX迎來了一個重要的轉折點。在這一年,東芯半導體有限公司(以下簡稱“東芯半導體”)正式收購了FIDELIX 25.3%的股權,成為其第一大股東及實際控制人。這一收購標志著FIDELIX開始進入一個新的發展階段。
通過與東芯半導體的合作,FIDELIX獲得了更多的資金支持和市場資源。東芯半導體是一家專注于中小容量存儲芯片研發、設計和銷售的中國企業,在半導體領域擁有豐富的經驗和資源。雙方的合作不僅為FIDELIX帶來了更多的發展機會,同時也加速了FIDELIX在國際市場上的擴張步伐。
在上述兩個故事的基礎上,可以根據FIDELIX公司的具體發展歷程、重要事件、技術創新、市場策略等方面進行進一步的拓展和補充,以形成完整、詳細的故事內容。
LM324引腳圖資料與電路應用 LM324資料: LM324為四運放集成電路,采用14腳雙列直插塑料封裝。,內部有四個運算放大器,有相位補償電路。電路功耗很小,lm324工作電壓范圍寬,可用正電源3~30V,或正負雙電源±1.5V~±15V工作。 ...… 查看全部問答∨ |
報告關鍵點: 1、工程師男性化、年輕化 2、團隊協作和學習是關鍵 3、 收入不夠理想 創業是出路 嵌入式系統無疑成為當前最熱門最有發展前途的IT應用領域之一。而主導嵌入式系統設計及創新的工程師們是怎么看 ...… 查看全部問答∨ |
您好 我是想從手機的耳機孔取信號,來推動一個單穩態電路 從左往右把門電路分別稱為門1、門2、門3、門4. 門3、門4.組成的單穩態電路,很成功 ,用手指碰門2的輸入端可使單穩態翻轉。 門1組成的放大器,把手機的耳機信號放大后送 ...… 查看全部問答∨ |
|
我有一個通用HID設備,主要功能就是和PC機互發數據.我在WinXP下不需要自己編寫驅動直接利用WriteFile()、ReadFile()、CreateFile()和setupapi.dll、HID.dll里的函數就可以完成我的HID設備和PC機進行數據通訊。我現在在WinCE下讀寫該通用HID設備,用C ...… 查看全部問答∨ |
|
用PC機可以很輕松的連上公司內部的ftp,寫了一個在WINCE下的ftp代碼,也可以連接ftp,并且下載,但是如果我在下載過程中非正常中斷與ftp的連接以后,我重新運行程序就無法連接上ftp,在用戶驗證那塊一直無法得到服務器的回應信息,一定要等很久才可 ...… 查看全部問答∨ |
|
各位大大好,小弟是MSP430的初學者, 我用的是MSP430F1232這塊晶片,JTAG控制器型號是MSPFET-UIF,操作軟件用的是IAR,當小弟complier完將程式programmig進去晶片,出現下面的錯誤(附件),請教各位大大,這是怎樣的問題?應該如何解決? < ...… 查看全部問答∨ |