有没有像GPIO_EnableIRQ这样的函数来禁用或隐藏中断!!
你好,
您的意思是禁用全局中断吗?
谢谢,PM_Dialog
我有一个问题是,只要按下按钮,中断就会触发几次,而我希望中断只触发一次,即使按钮已经被按下
我使用GPIO中断:
GPIO_RegisterCallback (GPIO0_IRQn callback_function);GPIO_EnableIRQ(GPIO_BUTTON_1_PORT, GPIO_BUTTON_1_PIN, GPIO0_IRQn, true,false, 250);GPIO_ResetIRQ (GPIO0_IRQn);
你能解释一下你想要完成的任务吗?
我有一个矩阵键盘,我想读他们的按钮。我跟着键盘的算法:线在高输出初始化状态和列输入下拉电阻,当一个中断发生在一列我把1逻辑放在第一行和0逻辑线路,如果我发现1逻辑列然后我知道按哪个按钮等等。当我继续按下第一行的一个按钮时,一切都工作得很好,中断只触发一次,但当我继续按下其他一行的一个按钮时,入侵仍然触发好几次
//初始化OUTPUT UpsetSelectedKeypadMatrixRowsUp(_ROW_1 | _ROW_2 | _ROW_3 | _ROW_4);
GPIO_EnableIRQ(GPIO_KEYPAD_C1_PORT, GPIO_KEYPAD_C1_PIN, GPIO0_IRQn, false,true, 250);GPIO_RegisterCallback (GPIO0_IRQn C1_KeypadInterruptHandler);
__STATIC_INLINE void C1_KeypadInterruptHandler (void){setSelectedKeypadMatrixRowsUp (_ROW_1);如果(_COL_1){arch_printf(“键盘1 \ n \ r”);goto复位;}setSelectedKeypadMatrixRowsUp (_ROW_2);如果(_COL_1){arch_printf(“键盘4 r \ n \”);goto复位;}
setSelectedKeypadMatrixRowsUp (_ROW_3);
如果(_COL_1){arch_printf(“键盘7 r \ n \”);goto复位;}setSelectedKeypadMatrixRowsUp (_ROW_4);如果(_COL_1){arch_printf(“键盘* r \ n \”);goto复位;}
重置:setSelectedKeypadMatrixRowsUp(_ROW_1 | _ROW_2 | _ROW_3 | _ROW_4);}
__STATIC_INLINE void setSelectedKeypadMatrixRowsUp(int掩码){如果(aMask & _ROW_1)_ROW_1_HIGH;其他的_ROW_1_LOW;
如果(aMask & _ROW_2)_ROW_2_HIGH;其他的_ROW_2_LOW;
如果(aMask & _ROW_3)_ROW_3_HIGH;其他的_ROW_3_LOW;
如果(aMask & _ROW_4)_ROW_4_HIGH;其他的_ROW_4_LOW;}
很抱歉我没有及时回复你——可能我们错过了你最后的评论。可以从gpio.h驱动程序中使用IRQ api。
你好,
您的意思是禁用全局中断吗?
谢谢,PM_Dialog
我有一个问题是,只要按下按钮,中断就会触发几次,而我希望中断只触发一次,即使按钮已经被按下
我使用GPIO中断:
GPIO_RegisterCallback (GPIO0_IRQn callback_function);
GPIO_EnableIRQ(GPIO_BUTTON_1_PORT, GPIO_BUTTON_1_PIN, GPIO0_IRQn, true,false, 250);
GPIO_ResetIRQ (GPIO0_IRQn);
你好,
你能解释一下你想要完成的任务吗?
谢谢,PM_Dialog
我有一个矩阵键盘,我想读他们的按钮。我跟着键盘的算法:线在高输出初始化状态和列输入下拉电阻,当一个中断发生在一列我把1逻辑放在第一行和0逻辑线路,如果我发现1逻辑列然后我知道按哪个按钮等等。当我继续按下第一行的一个按钮时,一切都工作得很好,中断只触发一次,但当我继续按下其他一行的一个按钮时,入侵仍然触发好几次
//初始化OUTPUT Up
setSelectedKeypadMatrixRowsUp(_ROW_1 | _ROW_2 | _ROW_3 | _ROW_4);
GPIO_EnableIRQ(GPIO_KEYPAD_C1_PORT, GPIO_KEYPAD_C1_PIN, GPIO0_IRQn, false,true, 250);
GPIO_RegisterCallback (GPIO0_IRQn C1_KeypadInterruptHandler);
__STATIC_INLINE void C1_KeypadInterruptHandler (void)
{
setSelectedKeypadMatrixRowsUp (_ROW_1);
如果(_COL_1)
{
arch_printf(“键盘1 \ n \ r”);
goto复位;
}
setSelectedKeypadMatrixRowsUp (_ROW_2);
如果(_COL_1)
{
arch_printf(“键盘4 r \ n \”);
goto复位;
}
setSelectedKeypadMatrixRowsUp (_ROW_3);
如果(_COL_1)
{
arch_printf(“键盘7 r \ n \”);
goto复位;
}
setSelectedKeypadMatrixRowsUp (_ROW_4);
如果(_COL_1)
{
arch_printf(“键盘* r \ n \”);
goto复位;
}
重置:
setSelectedKeypadMatrixRowsUp(_ROW_1 | _ROW_2 | _ROW_3 | _ROW_4);
}
__STATIC_INLINE void setSelectedKeypadMatrixRowsUp(int掩码)
{
如果(aMask & _ROW_1)
_ROW_1_HIGH;
其他的
_ROW_1_LOW;
如果(aMask & _ROW_2)
_ROW_2_HIGH;
其他的
_ROW_2_LOW;
如果(aMask & _ROW_3)
_ROW_3_HIGH;
其他的
_ROW_3_LOW;
如果(aMask & _ROW_4)
_ROW_4_HIGH;
其他的
_ROW_4_LOW;
}
你好,
很抱歉我没有及时回复你——可能我们错过了你最后的评论。可以从gpio.h驱动程序中使用IRQ api。
谢谢,PM_Dialog