STM32CubeMX開發之路—6外部中斷

STM32CubeMX開發之路—6外部中斷


運行環境

  • Windows10
  • STM32CubeMX___Version 5.0.0
  • Keil5(MDK5)___Version 5.15

簡介

本例程主要講解如何設置外部中斷,採用中斷的方式按鍵是否按下,在中斷中進行打印數據。


STM32CubeMx基本配置

基礎配置過程請參考 STM32CubeMx(Keil5)開發之路—配置第一個項目


STM32CubeMx 外部中斷配置

查看電路圖,如下圖所示
K1——K3爲外部輸入引腳,連接PE2——PE4,並且按下按鍵時爲低電平,因此待會兒需要設置爲下降沿觸發


爲了方便調試,重定向printf,進行usart設置
1——點擊USART1進行設置
2——模式選擇Asynchronous異步傳輸
3——可以看到右邊自動出現了Tx和Rx
4——可以自行設置波特率,停止位,校驗位等參數


  • 在芯片圖上面找到PE2,PE3,PE4,鼠標左擊,分別選擇GPIO_EXTI2,GPIO_EXTI3,GPIO_EXTI4,如下圖所示

1——點擊選擇GPIO
2——點擊PE2進行更細節的設置
3——GPIO mode選擇 “****** edge Falling ****” 選項
4——選擇默認拉高
PE3,PE4也進行類似設置,如下圖所示


1——點擊選擇NVIC
2——將3箇中斷進行勾選上
3——分別設置優先級
如下圖所示


代碼修改


1——選中main.c
2——重定向printf
3——添加中斷響應函數進行狀態打印(進行10ms的消抖處理)
如下圖所示

/* USER CODE BEGIN 0 */

int fputc(int ch, FILE *f)
{
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
    return ch;
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	HAL_Delay(10);
	if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_2)==RESET)
	{
		printf("K1");
	}
	if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==RESET)
	{
		printf("K2");
	}
	if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==RESET)
	{
		printf("K3");
	}
}
/* USER CODE END 0 */

燒錄代碼後打開出口調試助手,分別按下對應按鍵,正確的話會看到如下輸出


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