# STM32 最小系統開發板 LED亮滅閃爍工程建立
[原文](https://microcontrollerslab.com/stm32-blue-pill-gpio-pins-stm32cube-ide-led-blinking-tutorial/)
## STM32 Blue Pill 介紹
這款低成本 STM32 系列開發板配備 STM32F103C8T6 微控制器。STM32F103C8T6是基於RISC架構的STM32F103x8系列中端微控制器單元之一。整合式 Blue Pill 開發板作為低成本板推出,作為意法半導體 STM 發現板的替代品。Blue Pill的價格約為2-3美元。
STM32F103C8T6 微控制器配備 GPIO 接腳、處理器、記憶體、USB 連接埠、類比數位轉換器和其他週邊裝置。ARM Cortex 核心具有 72 MHz 的驚人速度和卓越的功效。
## STM32F103C8T6簡介
STM32F103C8T6 Blue Pill 開發板包含一個 32 位元 Cortex-M3 RISC ARM 內核,具有 4 -16 MHz 的內部振盪器。它是一款CMOS快閃記憶體技術晶片。該晶片有 37 個 GPIO 引腳和 10 個類比引腳。它具有一些現代通訊接口,如 CAN 和 USB 連接埠。由於該板在非常低的電壓下運行,因此週邊裝置可以對板進行出色的控制,因此適合低功耗應用。它還配備了一個整合式看門狗和一個視窗看門狗計時器,用於正確執行指令。

## 引腳排列
下圖顯示了STM32F103C8T6 Blue Pill開發板的引腳排列:

## STM32 藍色藥丸 GPIO 引腳
它共有 37 個 GPIO 引腳,由四個連接埠共用:PORTA 和 PORTB(16 個引腳)、PORTC(3 個引腳)和 PORTD(2 個引腳)。每個引腳可吸收/拉出約 6mA 的電流。此外,每個引腳都有一個內部上拉和下拉電阻,可以透過編程使能。
注意:所有這些 GPIO 引腳都具有多種功能,並且在不同的周邊之間共享,例如 UART、I2C、SPI 和 PWM 引腳等。
## 下載並安裝STM32Cube IDE
我們將使用STM32Cube開發平台來對我們的STM32板進行程式設計。為此,我們將首先向您展示如何在系統中設定 IDE。
第一步是下載程式。
前往以下連結:( https://www.st.com/en/development-tools/stm32cubeide.html#get-software ),然後根據您的作業系統點擊「取得最新」區塊。我們正在使用Windows。

將會開啟以下表格。您必須註冊您的帳戶。提供以下資訊並點擊“下載”按鈕。如果您已經在 my.st.com 上擁有帳戶,那麼您也可以使用該帳戶登入。

指定您的個人資訊並點擊下載按鈕後,您的註冊將完成。您的電子郵件地址中將提供一個鏈接,用於驗證您的電子郵件地址,然後下載將自動開始。請注意,該電子郵件地址是您用於註冊的電子郵件地址。該電子郵件將由意法半導體發送。
稍後,指定目錄後,您將開始下載。開啟 .zip 檔案後,系統將詢問您是否同意。接受協定並選擇安裝 IDE 所需的位置後,安裝過程將開始。STM32Cube 安裝需要一些時間。
安裝完成後,按一下「下一步」。

安裝完成後,按一下「完成」關閉安裝。您的桌面現在將建立一個 STM32Cube 的捷徑。

## STM32 Blue Pill LED 閃爍範例
前面提到,我們將學習使用STM32 Blue Pill的GPIO引腳作為數位輸出引腳。出於演示目的,我們將建立一個 LED 閃爍範例。該板有一個連接到 GPIO 引腳 13 的板載 LED。
首先,讓我們看看如何在 STM32Cube IDE 中為 STM32 Blue Pill 編寫第一個程式。
## 在 STM32Cube IDE 中編寫您的第一個 STM32 Blue Pill 程式
現在我們已經在系統中安裝了 STM32Cube 應用程序,讓我們學習如何使用它來對 STM32 板進行編程。
打開應用程式。系統將要求您指定工作場所的目錄。您可以指定目錄,並勾選下面的方塊以將其保留為預設目錄。接下來,點擊“啟動”啟動應用程式。

STM32Cube 工作區將會開啟。

## 在STM32Cube中建立STM32項目
現在點選「開始新的 STM32 專案」。

目標選擇將會開啟。

從“部件號”中選擇您的設備。我們正在使用「STM32F103C8」。然後按一下任意列條目,然後按一下「下一步」按鈕繼續。

為您的項目命名。由於我們要讓 STM32 板的板載 LED 閃爍,因此我們將專案命名為「BLINK_LED」。然後點選“完成”。

系統將要求您開啟關聯的觀點。按一下“是”。

STM32 有一個連接在 PC-13 上的板載 LED。請參閱上面電路板的詳細引腳輸出。按一下裝置設定工具上的 PC-13 接腳。

這就是它的外觀。在這裡您可以看到我們已將 GPIO_Output 連接到 PC-13。

此外,我們還有更多引腳選項。前往 System Core > GPIO > PC-13,PC-13 的引腳配置將會開啟。在這裡,我們為該引腳指定了“LED”用戶標籤。您可以在裝置設定工具中看到,現在 PC-13 已被賦予標籤「LED」。
除了標籤之外,還有其他幾個選項可供選擇,包括 GPIO 輸出電平、模式、上拉/下拉狀態等。

現在我們將保存我們的文件。按 Ctrl + S。將出現下列視窗。按一下“是”。這將為您產生一個模板程式碼

將出現另一個窗口,詢問您是否要開啟透視圖。按一下“是”。

## 程式碼
現在開啟以下頁面。在右側,您將能夠查看程式碼大綱。發生這種情況是因為我們以透視方式開啟程式碼。
在中間,您可以查看 main.c 文件,在左側您可以查看 Project Explorer。
如果要前往裝置設定工具,請按一下 BLINK_LED.ioc 標籤。

## STM32 Blue pill LED 閃爍代碼
現在讓我們修改 BLINK_LED 專案的 main.c 檔案。我們的目標是在延遲後無限期地閃爍板載 LED。
首先,在 main() 函數中轉到 while(1) 並插入以下程式碼行。這些將負責使板載 LED 無限閃爍。
```
while (1)
{
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
delay(500000);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
delay(500000);
}
```
現在發生的情況是,HAL_GPIO_WritePin() 函數接受三個參數:板載 LED 連接埠、板載 LED 引腳和引腳狀態。此函數負責將板載 LED 引腳設定為高電平或低電平。
:::info
請注意,我們已將板載 LED 標記為“LED”,因此我們指定了 LABEL_GPIO_Port 和 LABEL_Pin :前兩個參數為 LED_GPIO_Port 和 LED_Port。請記住將“LABEL”替換為您自己的引腳標籤。
:::
當我們將第三個參數指定為GPIO_PIN_RESET 時,它將板載LED 引腳設定為低電平,而當我們將第三個參數指定為GPIO_PIN_SET 時,它將板載LED 引腳設為高電平。
在這兩個函數之間,我們呼叫delay()函數。它不是內建函數,因此我們也必須定義它。在Error_Handler() 之後插入以下delay() 函數的定義。
```
void delay (int x)
{
volatile int i,j;
for (i=0 ; i < x ; i++)
{
j++;
}
return;
}
```
此外,將delay()函數的原型與其餘私有函數原型一起添加,如下所示:
```
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
void delay (int x);
```
修改後儲存main.c檔。現在我們準備好建造我們的專案了。
## 建設項目
若要建立 BLINK_LED 項目,請按 Ctrl + B 或前往「項目」>「建置全部」。

您的專案將開始建置。幾分鐘後,如果沒有錯誤,您的專案將被建置。

## ST-Link編程器與STM32的連接
現在,我們已經成功建立了 BLINK_LED 項目,讓我們繼續將程式碼上傳到我們的 STM32 板。為此,首先我們必須將 Blue Pill STM32 與 ST-Link 程式設計器連接起來。我們將使用 ST-Link V2。

這將在我們的電腦和 STM32 板之間提供一個介面。它由 10 個引腳組成。我們將使用 pin2 SWDIO、pin6 SWCLK、pin4 GND 和 pin8 3.3V 與我們的 STM32 板連接。SWDIO 是資料輸入/輸出引腳,SWCLK 是時脈引腳。按照 ST-LINK V2 上給出的引腳配置來識別每個引腳。
請依照下表正確連接兩個設備。
| STM32 Blue Pill | ST Link V2 |
| -------- | -------- |
| VCC 3.3V pin | pin8 3.3V |
| SWDIO pin | pin2 SWDIO |
| SWCLK pin | pin6 SWCLK |
| GND | pi4 GND |

另外,將啟動跳線移至右側以使微控制器進入程式模式。

現在透過 USB 連接埠將 ST-LINK V2 連接到電腦。兩個設備都將開機。

接下來按 IDE 中的 RUN 按鈕。將開啟以下「編輯配置」視窗。按一下“確定”。

片刻之後,程式碼將成功發送到STM32板。您可以在控制台終端中查看它。
否則,請按 STM32 板上的 RESET 按鈕。

現在,要將藍色藥丸恢復到正常模式,請確保將啟動跳線放回原位。完成後按下板上的 RESET 按鈕。板載 LED 將立即開始閃爍。