用STM32只會庫函數,不會用寄存器,有影響嗎?

夢痕無忌


你好,看了已有的回答,多是認為沒有影響,我和他們持相反的立場,我認為肯定有影響。下面我以下兩個方面進行論述:

疑難問題定位需要知道寄存器細節

HAL庫函數是ST開發的,也是人寫出來的代碼,既然是代碼,那就有存在BUG的可能,而且像這些經過ST調試過的代碼,更可能隱藏深層問題,這些都需要通過修改寄存器配置來調試定位。

對公司負責,更是對自己負責

也許你是找FAE來現場支持,把問題解決了,但決不能對問題的根因雲裡霧裡,一知半解,作為合格的員工,需要對問題有深入的思考,這不僅是對公司負責,更是對自己負責,只能這樣你的技術才能提高一個層次,越來越進步。當然這不是要求你對CPU的所有寄存器都瞭解,但是要能看懂寄存器,會用寄存器,這是作為一位技術人員的基本素養。

總的來講,這不需要你精通,但一定要會,如果不會使用寄存器對工作有影響是必然的,希望我的回答能幫到你:)


子充


不會配置STM32的寄存器,而會使用官方的庫函數是不影響使用STM32單片機的。STM32單片機在編程時即可以使用配置寄存器的方式,又可以使用庫函數的方式,這兩種方式都是可以操作STM32單片機的。

熟悉51單片機的朋友,都知道在編寫程序時,需要配置51單片機的寄存器。單片機具有很多的片上資源,而片上資源要正常工作,就需要配置相應的寄存器。比如單片機的定時器資源,在配置定時器相關的寄存器時就是配置定時器的工作方式、位數、是否使用定時中斷、配置初始值等。

而到了STM32單片機,廠家直接提供了官方庫函數。這些庫函數的作用其實就是將寄存器的配置過程封裝了起來,用戶在編程的時候不需要直接和寄存器打交道,而只需要調用相應的庫函數就可以。這樣就可以將配置寄存器的過程分離開來,實現了硬件層面和軟件層面的簡單分離,其實就是驅動的作用。

STM32還有HAL庫,即使是使用庫函數編程,還是建議研究一下寄存器。

所以,不管使用庫函數,還是直接配置寄存器都是可以操作單片機的。

以上就是這個問題的回答,感謝留言、評論、轉發。更多電子設計、硬件設計、單片機等內容請關注本頭條號:玩轉嵌入式。感謝大家。

玩轉嵌入式


用STM32來做產品開發只會庫函數,卻不會操作寄存器,在大多數的項目中基本不會有什麼影響的,用庫函數寫出來的效果和用寄存器寫出來的效果完全一樣。但是在某些情況下還是有一點點影響的。如果有精力的話,我建議兩種方式都學一下。

為什麼要用庫函數?

有了庫函數以後,會讓我們的開發效率大大提高。這一點非常重要,畢竟公司做項目的時間是非常有限的,如果要去研究寄存器的使用,那真是費時又費力,STM32芯片的數據手冊動輒上千頁,這麼多的寄存器要去吃透它,在時間上面肯定不允許。

作為工程師來說,我們當然希望操作越簡單越好了,如果是傻瓜式的操作那更好。試想一下做上位機應用開發的同事,他們在需要什麼功能的情況下就去找相應的接口就好了。庫函數的操作就相當於這些接口的操作,它讓我們不需要去了解硬件的機制,只要根據功能去找到相應的操作函數就好了,這真是一件美差,何樂而不為呢。

為了讓工程師們獲得傻瓜式操作的體驗,ST公司甚至推出了HAL庫,直接在CUBEMX軟件界面一頓快速操作就能生成相應的代碼,這簡直就是神器,工程師們都要偷著樂了,上班又有更多偷閒的時間了。

所以,我認為採用庫函數來操作的方式是完全有必要的,因為這不但加快了產品的研發的速度,還能極大的解放工程師的時間,讓他們可以花更多心思在更有意義的事情上面。

有了庫函數還需要學習寄存器的操作嗎?

作為一個從事底層軟件開發的人,我認為還是有必要更加了解硬件的。就像練武一樣,光懂得套路還不行,如果要想達到實戰的目的,你還必要學習殺人技。現在的武術上不了擂臺,我看都是淪落於套路之中了吧。

用了庫函數的缺點就是,代碼量會增大,庫函數會把所有情況都考慮到函數里面,沒有一擊即中的效果,有時會造成代碼的冗餘,在程序空間吃緊的時候,你還是得乖乖優化成寄存器的方式。對於一些實時性要求極其嚴格的場合,直接操作寄存器無疑是更好的選擇。

不過不需要也不建議剛開始學習STM32單片機的時候就使用寄存器的方式,可以先嚐試使用庫函數的方式來操作。這樣子入門會更快。等到調試的時候也會跳到寄存器內部,到時候再對著數據手冊來分析也可以對寄存器有更好的瞭解。

操作寄存器就等於學習功夫的心法,如果你把STM32的寄存器都掌握得很好了,那你再去學習別的單片機的時候那就是小菜一碟了。

以上就是我的介紹,大概的給你普及了相關的知識,很多東西還沒有細說,如果覺得不過癮,可以關注我,我們一起交流探討。

我是一名科技愛好者,有著多年的智能硬件開發經驗,力求用淺顯易懂的語言來解答隱晦難懂的一些技術問題,歡迎大家點贊和關注我。


智能硬件分析


使用STM32只會庫函數,不會寄存器,並不影響產品開發。

STM32系列專為要求高性能、低成本、低功耗的嵌入式應用設計的ARM Cortex®-M0,M0+,M3, M4和M7內核。在實際產品開發中,成熟的芯片方案商都會提供庫函數版本和寄存器版本兩個版本。最常見的是兩個版本混合,底層使用寄存器,中上層使用庫函數。

如果你只是想快速完成開發任務,建議你直接調用庫函數。如你還想和硬件打交道,建議你適當使用寄存器。安全高效的開發規則是,能用庫函數的必須要用庫函數,使用寄存器的必須要符合廠商Spec.。

很多產品團隊都對成員進行分組分工,例如一般劃分為驅動、系統、應用三類人員,基本上只有驅動組和系統組才允許操作寄存器,應用組只能使用已封裝好的API。這樣做最大的好處,安全且高效。

總的來說,只會庫函數而不會寄存器,並不影響開發。因為有芯片方案商已為你做好必需的工作,或者是團隊內驅動或系統組也可以為你做好必需的工作。


嵌入式宏思微想


用庫函數當然可以,用寄存器也可以,根據個人情況選擇,有人覺得標準庫太大,會使用HAL庫甚至LL庫,不管採用哪個,還是要通過寄存器瞭解外設的工作方式的。我個人使用C++封裝的寄存器方式,感覺比較方便。


whq7992


看開發週期了,時間緊就用庫函數,方便啊,能提早交貨要求高就直接操作寄存器,時間還是很重要滴。兩者中間找找平衡就行了。


逝水流年染輕塵


STM32的話問題不大


茶風林丶


難保證以後不用別的單片機


好咯阿二


當然可以,stm32的庫函數是官方編寫的,能想到的他們都給你想到了。寄存器變成可以在學習其他芯片的時候用


誰也不能阻止我犯規


這個和只會C不會彙編可不可以開發單片機一個道理


分享到:


相關文章: