STM32LL庫系列教程(二) 點亮LED燈

2021-10-01 16:45:46 字數 2433 閱讀 7271

*

*開發平台*

*:

正點原子 探索者stm32f407zet6

cube mx:v 5.1

.0 keil uvision5

注意:

本教程預設讀者已經對stm32和cubemx軟體有一定了解;

stm32ll庫系列教程(二)——點亮led燈

實驗現象:led1每秒翻轉一次;led2每0.5秒翻轉一次

2. 編寫**

3.相關暫存器介紹

下面開始配置cubemx,來進行程式的初始化。

1. 配置cubemx

1.1 配置時鐘

rcc——hse——crystal/ceramic resonator(晶體/陶瓷諧振器)選擇外部晶振

clock configuration——晶振頻率選8m,與開發板相對應,主頻開到最大168m

1.2 配置gpio

板子上的led為pf9、pf10控制,選擇gpio_output

1.3 工程配置

1.3.1 選擇keil

1.3.2 優化工程選項

****重點:cubemx預設生成的是hal庫的工程,必須在這裡修改才能使用ll庫 **

****

*有趣的是hal庫和ll庫是可以相互相容的,可以單獨給某個外設配置ll庫或hal庫

自此,對本工程的初始化就完成了。

下面開始編寫**,並介紹控制gpio相關暫存器

2. 編寫**

**很簡單

在while(1)中自行新增這樣幾行

從名字中,不難看出這幾行**的作用,而在ll庫本身的庫檔案中也有介紹他的作用:

因而,想對ll庫得心應手,就必須要經常看一看庫檔案以及參考手冊。

回到上文,在這三個函式中,我們發現ll庫,基本上都是通過static inline內聯函式來操作暫存器,這樣**的效率可想而知。那bsrr和odr是什麼呢,讓我們翻一下stm32f4xx中文參考手冊

3.相關暫存器介紹

3.1 gpio 埠置位/復位暫存器 (gpiox_bsrr) (x = a…i)

首先是`bsrr`

s、r顧名思義,即置位,復位。

因此,對r寫1,就是復位,該gpio會輸出0;

對s寫1,就是置位,輸出高電平,而且,s優先順序更高。

所以,對這個暫存器寫數,就會改變gpio的狀態,從而,燈會閃爍。

3.2 gpio 埠輸出資料暫存器 (gpiox_odr) (x = a…i)

下面是odr,這同樣也是乙個可以通過寫入來改變gpio狀態的暫存器,

與bsrr比較大的區別就是,它可以直接對一位寫0或1,控制輸出;且,odr的數是可以讀出來的。

因此在函式ll_gpio_togglepin(gpio_typedef *gpiox, uint32_t pinmask);

是先讀取odr的值,確定輸出狀態,然後再取反,實現了每次輸出會翻轉的現象。

*

*感謝**!*

*

STM32學習心得 二 點亮LED燈

stm32學習心得 二 點亮led燈 在建立好工程模板後,就可以開始真正進入stm32的學習。手下那當然是試著點亮乙個led燈。首先在user目錄下建立乙個空資料夾,並命名為bsp led bsp的意思是板級支援包,即該 僅支援這塊板子 進去資料夾,新建兩個檔案,分別是bsp led.c以及bsp ...

STM32從零開始(二) 點亮led燈

先看標頭檔案 ifndef gpio led72mhz define gpio led72mhz define gpiob base 0x40010c00 define gpiob crh gpiob base 0x04 define gpiob odr gpiob base 0x0c define...

STM32 LL庫踩坑系列一(RTC)

這個作者很懶,想到什麼就寫什麼!define used to indicate date time updated define rtc bkp date time updtated uint32 t 0x32f2 void rtc set ll rtc datetypedef date,ll rt...