我是一個只會點燈的菜鳥;
相關文章
【STM32系列匯總】小白博主的STM32實戰快速進階之路(持續更新)
文章目錄
1 前言
本文基於ST
的STM32F767ZI NUCLEO144
開發板,結合CubeIDE
的插件CubeMX
配置生成代碼點亮板載的LED
,點亮可謂是單片機開發中的hello world
,非常簡單;
2 理論分析
2.1 LED 原理
發光二極管簡稱為LED,生活中幾乎無處不在,由含鎵(Ga
)、砷(As
)、磷(P
)、氮(N
)等的化合物制成。當電子與空穴復合時能輻射出可見光,因而可以用來制成發光二極管。在電路及儀器中作為指示燈,或者組成文字或數字顯示。砷化鎵二極管發紅光,磷化鎵二極管發綠光,碳化硅二極管發黃光,氮化鎵二極管發藍光。因化學性質又分有機發光二極管OLED和無機發光二極管LED1。
LED是正向導通,反向截止的,它在電路設計中的符號如下圖所示;
因此這里,有幾點簡單介紹一下:
- ① 通常接電源正極;
- ② 通常接地;
- 確保流過電流在
5mA
-10mA
;
2.2 板載資料
上一篇文章寫到,如何快速構建CubeIDE環境,另外我還整理了官方的資料,文檔都在這里,密碼: 1rjv,打開en.DM00244518.pdf
,NUCLEO144
的板載資源如下圖所示;
可以看到這里有三個用戶
LED
,下面就結合CubeIDE中的CubeMX插件配置生成相應的代碼;
2.3 電路分析
解壓文件en.nucleo_144pins_sch.zip
,打開原理圖的pdf文件MB1137.pdf
;可以看到,Blue LED
和Red LED
,具體如下圖所示;
Green LED
如下所示;
根據虛短和虛斷,Vout=200K10K+200KVinV_{out} = \cfrac{200K}{10K+200K}V_{in}Vout=10K+200K200KVin ;感覺像是電壓跟隨器,那Vout=VinV_{out} = V_{in}Vout=Vin, 電路分析水平有點摳腳了;
Pin | LED | Mode |
---|---|---|
PB14 | RED | PP |
PB7 | BLUE | PP |
PB0 | GREEN | PP |
PP為推挽輸出;
3 CubeMX配置
打開CubeIDE
,
3.1 SYS 配置
NUCLEO144板載一個ST-LINKV2,下載和調試程序的時候下面會用SWD模式,所以這里SYS的Debug選擇Serial Wire
,具體如下圖所示;
3.2 GPIO 選擇
第一步:
在Pinout view的芯片試圖上找到所需要的Pin,本文使用了 PB14
,PB7
,PB0
,圖中找到PB7
,並鼠標點擊並彈出菜單;
第二步:
選擇GPIO
的模式為GPIO_Output
;
具體如下圖所示;
3.3 GPIO 配置
選擇了三個Pin,分別為PB14
,PB7
,PB0
,全都配置為:
GPIO output level
:初始化完成之后輸出的電平狀態為高;GPIO mode
:輸出模式為推挽輸出;- 上拉和下拉模式:這里暫不配置,沒有影響;
完成后如下圖所示;
4 程序生成
最終生成了配置代碼如下;
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_14|GPIO_PIN_7, GPIO_PIN_SET);
/*Configure GPIO pins : PB0 PB14 PB7 */
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_14|GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
5 程序下載
將NUCLEO144的CN4
和CN6
的跳帽設置為如下圖的狀態,這樣就使用了板載的STLINK
給板載的MCU
下載固件;
進入調試模式並開始運行,終於點亮了,我手舞足蹈起來,表情無比激動(浮誇的演技😄😄😄),具體如下圖所示;
6 總結
千里之行,始於點燈,后面還有很長的路要走,暫且先做個記錄。
-
百度百科 ↩︎