天天看點

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

簡介

這篇文章介紹如何使用CubeMx建立一個簡單的LED工程,該工程是一個MDK工程,當然也可以使用CubeMx建立基于其他編譯器的工程。作為入門,我們的第一個工程僅點亮一個LED。并且在這個工程上進行修改,增加一個按鍵功能,展示CubeMx修改工程的功能。

硬體準備

筆者使用正點原子戰艦V3開發闆,使用任何主要是STM32的硬體裝置并且帶有GPIO控制的LED和按鍵,就可以,硬體上沒有什麼限制。

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

軟體準備

  • STM32CubeMx
  • Keil MDK,IAR或類似的編譯環境

實際操作部分

1.生成工程,并點亮LED

2.修改現有工程,将GPIO輸入功能,也就是按鍵功能加入工程

第一部分 建立工程點亮LED

打開CubeMx,選擇ACCESS TO SELECTOR

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

剛安裝好第一次點選會進入一個加載頁面,他是連結官網更新晶片庫的,如果加載時間過長,也可以關閉加載頁面,也能直接進入我們下一步要操作的頁面

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

在右上方選擇你的硬體裝置搭載的晶片,然後在左下方選擇你要用的晶片并輕按兩下進入下一個頁面。

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

可以通過界面發現,CubeMx工程的配置步驟非常清晰,從左到右分别為引腳與外設配置,時鐘樹配置,工程相關配置。從上到下也是系統核心功能到外設的配置。最右方的區域用圖形化的方式配置相關的引腳。

1.第一步需要配置時鐘源,我在這裡選用外部晶振作為外部時鐘源。左側選擇後,右側會自動選擇外部時鐘源要用的引腳

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結
STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

2.根據硬體選擇LED使用的引腳,找到pcb的原理圖

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結
STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

我使用LED1,發現他的引腳是E5,在CubeMx右方相應位置,左鍵選擇

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

3.在左方選擇GPIO,進行詳細配置

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

User Label可以自己為這個引腳命名,到時候這個命名會出現在代碼中易于操作

4.引腳配置完了,接下來配置時鐘樹

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

時鐘頻率,f103zet6最高為72Mhz,通過配置,最後使APB外設的時鐘頻率達到最高就可以了

5.配置工程相關

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

有兩個地方要注意,生成工程的路徑不能有中文,生成的IDE版本要正确,我這裡選擇的是MDK5.

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

6.配置完這些步驟後就可以點選GENERATE CODE生成工程了

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

7.打開工程

/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);

/* USER CODE BEGIN EFP */

/* USER CODE END EFP */

/* Private defines -----------------------------------------------------------*/
#define LED1_Pin GPIO_PIN_5
#define LED1_GPIO_Port GPIOE
/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */
           

會發現main.h裡自動生成了宏定義,到時候可以通過宏定義操作LED

/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  
	  HAL_Delay(200);
	HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
  }
  /* USER CODE END 3 */
           

在main.c裡編寫代碼如上,下載下傳程式到硬體上(下載下傳方式自行決定),就可以看到一個閃爍的LED

第二部分,修改工程增加按鍵

1.在首頁面打開剛剛生成的工程

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

2.根據原理圖選擇相應的引腳,我這裡用的是KEY0

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結
STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

在工程中選擇E4引腳

STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結
STM32 CubeMX 安裝與使用入門(二)GPIO的使用,點亮LED使用按鍵簡介硬體準備軟體準備實際操作部分總結

由原理圖可知,按鍵應該上拉,按鍵的配置如圖所示,然後直接點選generate code并打開工程就行了

3.我們會發現原來使用者的代碼還在,但是CubeMx自動生成了GPIO輸入的初始化代碼,這樣我們隻用關心真正的應用代碼部分就可以了。

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  if( 0 == HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin))
	  {
		HAL_Delay(100);
		  if( 0 == HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin))
		  {
			HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
		  }
	  }
	  
	
  }
  /* USER CODE END 3 */
}
           

使用以上代碼,編譯下載下傳到硬體中,就可以看到LED随按鍵的按下而亮滅

總結

這部分内容具體使用了CubeMx建立工程,并初步展示了CubeMx修改工程元件的能力,CubeMx不僅可以添加功能,而且可以更改工程使用的晶片等等。而這些操作都是不會破壞使用者層的代碼的,這就是CubeMx的強大之處.下一部分我會展示使用CubeMx配置序列槽功能,并使用GPIO外部中斷完成按鍵功能。