stm32hal庫中文手冊 用STM32只會庫函數,不會用寄存器,有影響嗎?
用STM32只會庫函數,不會用寄存器,有影響嗎?不會配置STM32寄存器,但會使用官方庫函數,不影響STM32單片機的使用。STM32單片機在編程時可以采用配置寄存器和庫函數的方式。這兩種方式都可以操
用STM32只會庫函數,不會用寄存器,有影響嗎?
不會配置STM32寄存器,但會使用官方庫函數,不影響STM32單片機的使用。STM32單片機在編程時可以采用配置寄存器和庫函數的方式。這兩種方式都可以操作STM32單片機。
熟悉51單片機的朋友,都知道在編寫程序時,需要配置51單片機寄存器。單片機擁有大量的片上資源,而要使片上資源正常工作,需要配置相應的寄存器。例如,單片機的定時器資源,在配置定時器相關寄存器時,主要是配置定時器的工作模式、位數、是否使用定時中斷、配置初始值等,并向STM32單片機、廠家直接提供官方庫功能。這些庫函數的功能實際上是封裝寄存器配置過程。編程時,用戶不需要直接處理寄存器,只需調用相應的庫函數即可。這樣,寄存器的配置過程就可以分離,實現了硬件層和軟件層的簡單分離,實際上就是驅動程序的作用。
STM32還具有Hal庫。即使使用庫函數編程,也建議您研究寄存器。
因此,無論是使用庫函數,還是直接配置寄存器都能操作MCU。
stm32是用hal庫,還是標準庫?懂行的介紹一下?
St之前介紹了標準庫函數,包括寄存器版本和庫函數版本。注冊版本使用起來很麻煩。您需要檢查每個設置的芯片數據表。優(yōu)點是您可以熟悉芯片的寄存器配置。庫函數是基于寄存器版本的二次包
介紹,它的優(yōu)點是寄存器版本的缺點,使用方便,不再需要手動配置寄存器,使用更方便。但它的缺點是Hal的優(yōu)點,即每次修改MCU函數時,都需要手工修改函數,而且自修改不能保證正確性,不同MCU之間的程序代碼移植性不強。
Hal library,Hal是hardware abstraction layer的縮寫,中文名為:hardware abstraction layer,Hal library項目一般使用cube軟件生成項目。Hal庫是ST公司針對STM32單片機開發(fā)的最新抽象層嵌入式軟件,更便于實現STM32產品的最大可移植性。其優(yōu)點是開發(fā)工程師不需要關注MCU模型,只需要專注于功能軟件的開發(fā)工作。它是未來的主要發(fā)展方向,并在不斷更新。建議您在正常使用時,它會自動更新或關閉。否則,將在更新前調試的代碼將無法正常工作。設置多維數據集軟件的方法點幫助,然后選擇手動更新。詳見圖。
根據我們的工程師和我的研發(fā)經驗,我們一開始使用標準庫函數。后來我們發(fā)現,St推出Hal庫后,我們逐漸轉向Hal庫的開發(fā)。它的優(yōu)勢在于軟件代碼在不同芯片之間具有很強的可移植性,并且cube軟件生成的項目指定了自己代碼的位置。如果不按規(guī)定編寫,cube再次生成項目時會覆蓋自己的代碼,進一步增強了代碼的可移植性。
另外,如果需要修改MCU的功能,如添加新的GPIO或串口,在使用標準庫函數時,需要復制其他串口的初始化代碼,然后手動修改。使用Hal庫時,您不需要這樣做。您只需將設置添加到多維數據集并生成它們。
多維數據集會自動為您生成初始化代碼。
綜上所述,建議新手直接使用Hal庫,使用起來更方便,開發(fā)所需的軟件功能也更快。復雜的寄存器配置工作可以交給cube軟件,這也符合未來發(fā)展的主流思路。
如何用stm32產生PWM輸出?
STM32定時器可以生成PWM。定時器框圖包括以下部分:時基(base)、輸入捕獲(IC)、輸出比較(OC)和比較捕獲寄存器(CCR)。時基部分主要選擇定時器的時鐘源、分頻系數等。輸入捕獲是對芯片的輸入信號進行處理。捕獲比較寄存器是每個函數所需的寄存器。最后通過輸出比較功能輸出PWM波形。PWM功能非常常見,所以一般的芯片手冊、Hal庫都直接把PWM作為定時器的一部分。其原理是:設置一個加法計數器,例如將0加到arr的值上。然后設置一個比較值compare,它在0-arr之間。當add計數器的值大于compare時,定時器輸出通道的輸出電平將翻轉。如果一直重復此過程,就會形成PWM波。顯然,PWM波的周期由arr決定,占空比由比較決定。如何操作,可以看芯片說明書,還有Hal庫函數。
STM32的HAL庫好用嗎?
別人寫你參考:半年前聯系STM32,剛開始用mcu32f1,庫用標準外設庫3.5,寫了一些簡單的東西。后來,我發(fā)現ST有一個名為STM32 cube MX的軟件,可以自動生成初始化程序。對我這個32歲的新手來說,這是上天的恩賜!最后,我不必擔心繁瑣的配置(事實上,我不熟悉各種配置,也沒有控制C、控制V的累積程序)。雖然cube使用了St的新Hal庫,但它與以前的標準外設庫完全不兼容,甚至基本的I/O操作也發(fā)生了變化,這會讓習慣了標準外設庫的人非??鄲馈5俏覍藴释庠O庫不是很熟悉,cube的接口設計確實讓配置工程非常方便。此外,它還具有類似FPGA的引腳分配接口,使得資源分配、PCB布局和布線更加方便。所以我選擇了立方體和哈爾圖書館。有很多朋友很早就開始寫作了。他們也嘗試了Hal庫,但最終,他們都選擇繼續(xù)使用標準的外圍庫。他們說他們根本不習慣圖書館。另外,哈爾圖書館也不是很好。畢竟是自動配置,不像手動配置那么熟悉。誰知道軟件是如何為你配置的。另外,cube是為那些不會寫32的人設計的(似乎ST的官方聲明是Hal是為了方便那些不熟悉底層嵌入式系統的人,但是我不明白他為什么讓這兩個庫不兼容)。前面一直在畫PCB,調整PCB,做機械等,沒有寫程序。最近,我開始寫32。現在我使用32f4 MCU和Hal/F4庫1.6.0。然而,我發(fā)現我甚至不能實現GPIO的上拉輸出。在任何情況下,默認情況下I/O總是輸出低電平(操作I/O可以實現電平跳變)。昨天我檢查了一天這個問題,從圖書館到最下面的登記冊都看了一遍,但沒有發(fā)現任何問題。我是唯一一個有哈爾圖書館的人。。。有些無奈,哈爾圖書館真的有什么問題嗎?如果真有這么明顯的問題,St官員早就發(fā)現了。我們已經完成了標準外設庫,并計劃替換它。項目自始至終都在配置自己,這樣更容易發(fā)現問題。但我不能理解一件事。既然st官員在推哈爾圖書館,肯定有他的原因。我們也應該勇于接受新事物。為什么我們的朋友不愿意接受我們的圖書館。
stm32單片機編程用庫函數好還是寄存器好?
這個問題來自兩個方面:如果你想快速開發(fā)項目,那么使用庫函數開發(fā);如果你想學習單片機原理,那么使用寄存器開發(fā)。
1、就開發(fā)時間的速度而言,使用庫函數
現在一個公司在開發(fā)一個項目的時候,對時間進度會有很高的要求。一般來說,這將需要快速有效地制造產品。不管你用哪種方式,只要你保證產品的質量。在這種情況下,我們必須找到一種快速開發(fā)的方法,而庫函數就是為此而創(chuàng)建的。為了幫助產品工程師降低開發(fā)難度,加快開發(fā)進度,芯片公司推出了多種庫函數。這些庫函數由專業(yè)程序員編寫,經過芯片廠商反復驗證,代碼穩(wěn)定性、規(guī)范性和正確性都很好,可以直接使用。
當然,庫函數也有一些缺陷,比如增加了代碼量,影響了程序的速度,但是現在STM32 MCU的程序空間一般都足夠大,每個系列都有可以互換的針對針型號。如果程序空間不夠,直接用更大的程序空間替換另一個pin兼容的,而且程序可以直接移植過來,幾乎不需要修改。
2、如果想了解單片機的工作原理,真正了解STM32的內部結構、工作過程和底層配置,當然可以選擇寄存器進行開發(fā)。
使用寄存器開發(fā),可以直接接觸底層,使用寄存器可以減少代碼量,提高程序速度。