是否有类似GPIO_ENABLEQ的函数禁用或隐藏中断!!
你好呀,
你的意思是禁用全球中断吗?
谢谢,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个逻辑上的中断时,列在第一行上的逻辑和其他线上的逻辑中断时,列是用下拉电阻的输入。我在列上找到1个逻辑,然后我知道按下了哪个按钮等。当我仍然按下第一行的一个按钮时,一切正常工作,中断只会触发一次但是当我仍然按下另一条线中的一个按钮时,侵入仍然触发了几次。
//初始化输出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);if(_col_1){ARCH_PRINTF(“键盘1 \ n \ r”);转到重置;}setselectedkeypadmatrixrowsup(_row_2);if(_col_1){ARCH_PRINTF(“键盘4 \ n \ r”);转到重置;}
setselectedkeypadmatrixrowsup(_row_3);
if(_col_1){ARCH_PRINTF(“键盘7 \ n \ r”);转到重置;}setselectedkeypadmatrixrowsup(_row_4);if(_col_1){ARCH_PRINTF(“键盘* \ n \ r”);转到重置;}
重启 :setselectedkeypadmatrixrowsup(_row_1 | _row_2 | _row_3 | _row_4);}
__static_inline void setselectedkeypadmatrixrowsup(int amask){if(amask&_row_1)_row_1_high;别的_row_1_low;
if(amask&_row_2)_row_2_high;别的_row_2_low;
if(amask&_row_3)_row_3_high;别的_row_3_low;
if(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个逻辑上的中断时,列在第一行上的逻辑和其他线上的逻辑中断时,列是用下拉电阻的输入。我在列上找到1个逻辑,然后我知道按下了哪个按钮等。当我仍然按下第一行的一个按钮时,一切正常工作,中断只会触发一次但是当我仍然按下另一条线中的一个按钮时,侵入仍然触发了几次。
//初始化输出
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);
if(_col_1)
{
ARCH_PRINTF(“键盘1 \ n \ r”);
转到重置;
}
setselectedkeypadmatrixrowsup(_row_2);
if(_col_1)
{
ARCH_PRINTF(“键盘4 \ n \ r”);
转到重置;
}
setselectedkeypadmatrixrowsup(_row_3);
if(_col_1)
{
ARCH_PRINTF(“键盘7 \ n \ r”);
转到重置;
}
setselectedkeypadmatrixrowsup(_row_4);
if(_col_1)
{
ARCH_PRINTF(“键盘* \ n \ r”);
转到重置;
}
重启 :
setselectedkeypadmatrixrowsup(_row_1 | _row_2 | _row_3 | _row_4);
}
__static_inline void setselectedkeypadmatrixrowsup(int amask)
{
if(amask&_row_1)
_row_1_high;
别的
_row_1_low;
if(amask&_row_2)
_row_2_high;
别的
_row_2_low;
if(amask&_row_3)
_row_3_high;
别的
_row_3_low;
if(amask&_row_4)
_row_4_high;
别的
_row_4_low;
}
你好呀,
抱歉我的延迟回复 - 可能我们错过了你的上次评论。您可以使用GPIO.H驱动程序使用IRQ API。
谢谢,PM_DIALOG.