STM32單片機基礎04——使用GPIO進行按鍵檢測

本篇文章主要介紹如何使用STM32CubeMX初始化STM32L431RCT6的GPIO,並掃描檢測按鍵。

1. 準備工作

硬件準備

mark

軟件準備

  • 需要安裝好Keil - MDK及芯片對應的包,以便編譯和下載生成的代碼;

Keil MDK和串口助手的安裝包都可以關注“小熊派開源社區”微信公衆號,在資料教程一欄中可獲取安裝包。

2.生成MDK工程

選擇芯片型號

打開STM32CubeMX,打開MCU選擇器:

mark

搜索並選中芯片STM32L431RCT6:

mark

配置時鐘源

  • 如果選擇使用外部高速時鐘(HSE),則需要在System Core中配置RCC;
  • 如果使用默認內部時鐘(HSI),這一步可以略過;

這裏我都使用外部時鐘:

mark

配置LED的GPIO引腳

查看小熊派開發板的原理圖,如下:

mark

所以接下來我們選擇配置PC13引腳:

mark

設置用戶標籤爲LED:

mark

配置按鍵的GPIO引腳

查看小熊派開發板的原理圖,如下:

mark

所以接下來我們選擇配置PB2引腳和PB3引腳:

mark

因爲沒有設置硬件上拉,所以我們配置開啓上拉電阻,並設置用戶標籤爲KEY1KEY2

mark

配置時鐘樹

STM32L4的最高主頻到80M,所以配置PLL,最後使HCLK = 80Mhz即可:

mark

生成工程設置

mark

代碼生成設置

最後設置生成獨立的初始化文件:

mark

生成代碼

點擊GENERATE CODE即可生成MDK-V5工程:

mark

3. 在MDK中編寫、編譯、下載用戶代碼

編寫用戶代碼

進入MDK-ARM目錄,打開工程,在main.c中的main函數中編寫簡單的用戶代碼:

int main(void)
{

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  while (1)
  {
    /* USER CODE BEGIN 3 */
		if(0 == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
		{
			HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
		}
		if(0 == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
		{
			HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
		}
  }
  /* USER CODE END 3 */
}

編譯代碼

編譯整個工程:

mark

設置下載器

mark

mark

實驗現象

下載運行後,實驗現象如下:

  • 上電覆位時LED處於熄滅狀態;
  • 按下KEY1,LED點亮;
  • 按下KEY2,LED熄滅;

mark

至此,我們已經學會了如何使用STM32CubeMX快速生成MDK的工程,以及如何使用 STM32CubeMX初始化GPIO進行按鍵檢測,下一節講述如何配置NVIC使用外部中斷檢測按鍵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章