首页 > 解决方案 > 如何使用类函数来处理中断?

问题描述

我一直在尝试将我的代码从 Arduino 切换到 ST HAL 库。在 Arduino 中,我使用 attachInterrupt 函数来处理按钮按下。我已经通过使用 cubeMX 设置中断来替换它,这会产生以下函数:

 void EXTI15_10_IRQHandler(void)
 {
 /* USER CODE BEGIN EXTI15_10_IRQn 0 */
 if(__HAL_GPIO_EXTI_GET_FLAG(BATTERY_BUTTON_Pin)){
   batteryButton.checkChange();
 }else if(__HAL_GPIO_EXTI_GET_FLAG(CENTER_BUTTON_Pin)){
   centerButton.checkChange();
 }else if(__HAL_GPIO_EXTI_GET_FLAG(MINUS_BUTTON_Pin)){
   minusButton.checkChange();
 }else if(__HAL_GPIO_EXTI_GET_FLAG(PLUS_BUTTON_Pin)){
   plusButton.checkChange();
 }

如您所见,我试图在按下时为不同的按钮调用类函数。我在我的主文件中创建这些函数(我转换为.cpp 文件),但是这个文件(stm32f1xx_it)是 ac 文件,并且当文件是 cpp 时,有 if 语句来实现 c 中的所有内容。我试图在此处包含按钮文件,但这会产生错误,因为您不能在 c 中使用类。有没有办法我仍然可以将此功能用作触发器?

标签: c++cembeddedstm32

解决方案


推荐阅读