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 */
燒錄代碼後打開出口調試助手,分別按下對應按鍵,正確的話會看到如下輸出