Try   HackMD

STM32 最小系統開發板 LED亮滅閃爍工程建立

原文

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 連接埠。由於該板在非常低的電壓下運行,因此週邊裝置可以對板進行出色的控制,因此適合低功耗應用。它還配備了一個整合式看門狗和一個視窗看門狗計時器,用於正確執行指令。

image

引腳排列

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

image

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。

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

指定您的個人資訊並點擊下載按鈕後,您的註冊將完成。您的電子郵件地址中將提供一個鏈接,用於驗證您的電子郵件地址,然後下載將自動開始。請注意,該電子郵件地址是您用於註冊的電子郵件地址。該電子郵件將由意法半導體發送。

稍後,指定目錄後,您將開始下載。開啟 .zip 檔案後,系統將詢問您是否同意。接受協定並選擇安裝 IDE 所需的位置後,安裝過程將開始。STM32Cube 安裝需要一些時間。

安裝完成後,按一下「下一步」。

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

STM32 Blue Pill LED 閃爍範例

前面提到,我們將學習使用STM32 Blue Pill的GPIO引腳作為數位輸出引腳。出於演示目的,我們將建立一個 LED 閃爍範例。該板有一個連接到 GPIO 引腳 13 的板載 LED。

首先,讓我們看看如何在 STM32Cube IDE 中為 STM32 Blue Pill 編寫第一個程式。

在 STM32Cube IDE 中編寫您的第一個 STM32 Blue Pill 程式

現在我們已經在系統中安裝了 STM32Cube 應用程序,讓我們學習如何使用它來對 STM32 板進行編程。

打開應用程式。系統將要求您指定工作場所的目錄。您可以指定目錄,並勾選下面的方塊以將其保留為預設目錄。接下來,點擊“啟動”啟動應用程式。

image
STM32Cube 工作區將會開啟。
image

在STM32Cube中建立STM32項目

現在點選「開始新的 STM32 專案」。

image
目標選擇將會開啟。
image

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

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

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

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

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

此外,我們還有更多引腳選項。前往 System Core > GPIO > PC-13,PC-13 的引腳配置將會開啟。在這裡,我們為該引腳指定了“LED”用戶標籤。您可以在裝置設定工具中看到,現在 PC-13 已被賦予標籤「LED」。

除了標籤之外,還有其他幾個選項可供選擇,包括 GPIO 輸出電平、模式、上拉/下拉狀態等。

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

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

程式碼

現在開啟以下頁面。在右側,您將能夠查看程式碼大綱。發生這種情況是因為我們以透視方式開啟程式碼。

在中間,您可以查看 main.c 文件,在左側您可以查看 Project Explorer。

如果要前往裝置設定工具,請按一下 BLINK_LED.ioc 標籤。

image

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 引腳設定為高電平或低電平。

請注意,我們已將板載 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 或前往「項目」>「建置全部」。

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

ST-Link編程器與STM32的連接

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

image
這將在我們的電腦和 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

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

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

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

片刻之後,程式碼將成功發送到STM32板。您可以在控制台終端中查看它。

否則,請按 STM32 板上的 RESET 按鈕。

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