基於標準庫和HAL庫的stm32程式設計

2021-10-12 01:41:36 字數 1349 閱讀 1647

二、例項程式

三、總結

參考文獻

通常在入門stm32的時候,首先都要先選擇一種要用的開發方式,不同的開發方式程式設計的架構是完全不一樣的。一般大多數都會選用標準庫和hal庫,而極少部分人會通過直接配置暫存器進行開發。網上關於標準庫、hal庫的描述相信是數不勝數。可是乙個對於很多剛入門的朋友還是沒法很直觀的去真正了解這些不同開發發方式彼此之間的區別,所以筆者想以一種非常直白的方式,用自己的理解去將這些東西表述出來,如果有描述的不對的地方或者是不同意見的也可以大家提出。

學習過51的朋友可能會知道,會有一小部分人或是教程是通過組合語言直接操作暫存器實現功能的,這種方法到了stm32就變得不太容易行得通了,因為stm32的暫存器數量是51微控制器的十數倍,如此多的暫存器根本無法全部記憶,開發時需要經常的翻查晶元的資料手冊,此時直接操作暫存器就變得非常的費力了。但還是會有很小一部分人,喜歡去直接操作暫存器,因為這樣更接近原理,知其然也知其所以然。

stm32有非常多的暫存器,而導致了開發困難,所以為此st公司就為每款晶元都編寫了乙份庫檔案,也就是工程檔案裡stm32f1xx…之類的。在這些 .c .**件中,包括一些常用量的巨集定義,把一些外設也通過結構體變數封裝起來,如gpio口時鐘等。所以我們只需要配置結構體變數成員就可以修改外設的配置暫存器,從而選擇不同的功能。也是目前最多人使用的方式,也是學習stm32接觸最多的一種開發方式。

int

main

(void)}

void

usart_sendstring

( usart_typedef * pusartx,

char

*str)

while(*

(str + k)

!='\0');

/* 等待傳送完成 */

while

(usart_getflagstatus

(pusartx,usart_flag_tc)

==reset)

}

int

main

(void)}

void

usart_sendstring

(uint8_t *str)

while(*

(str + k)

!='\0');

}

[1]hal庫、標準庫、暫存器三種方式的開發區別

[2]stm32標準庫與hal庫比較

[3]stm32韌體庫詳解

STM32標準庫與HAL庫,暫存器對照表

定時器部分 由於stm32標準庫出現的時間早,現在市面上stm32的資料很多都是標準庫的,但隨著hal庫的cubemx的廣泛使用,兩個庫之間的效率,記憶體使用,方便程度不同,為滿足不同人的需求,兩個庫之間的相互轉換十分重要。標準庫 uint8 t gpio readinputdatabit gpio...

STM32的HAL庫初體會

最近有個小專案,通過串列埠發命令來控制電路板上繼電器動作。板子上的晶元是stm32f030。這款晶元以前用過一次,但是還是不熟悉。選它的原因是功能夠用,而且便宜,比經常用的stm32f103便宜好多。後來一想,可以用hal庫試試。然後在cube軟體上稍微操作一下,生成的 直接能跑,串列埠收發資料都正...

STM32 HAL庫CAN同時傳送超過3條推薦方法

在stm32的hal庫中使用can傳送使用的是hal can addtxmessage,在這個函式裡面傳送的時候會先去判斷3個傳送的fifo是否是滿的,如果都是滿的,就會直接跳出了,所以如果程式中是連續傳送若干條can訊息的話,如果超過3條就會出現只能傳送3條的狀況,想要解決這種問題有幾個方法 通過...