亲爱的对话框,
我正在使用da14680,我需要处理如下的多个中断。
(1)P3_4:密钥中断
(2)P3_5:SW复位中断按键
(3)P4_7:传感器中断
我在main.c中添加了它们的代码。
静态void key_interrupt_cb(void)
{
int端口,引脚,count = 0;
Interrupt_port = 0,Interrupt_pin = 0;
for(port = 0; port
state = hw_wkup_get_port_state(端口);
trigger = hw_wkup_get_port_trigger(端口);
for(PIN = 0; PIN
if(!(state&(1 << PIN))){
继续;
}
PRINTF(换行符“P%d。%d触发%s状态”,端口,引脚,
(触发器和(1 << PIN))?“前高后低”);
Interrupt_port =端口;
Interrupt_pin = PIN;
count ++;
}
}
if(count == 0){
printf(newline“(无)”);
}
if((Interrupt_port == 3)&&(Interrupt_pin == 4))
{
Printf(换行合“SOS密钥中断发生了。\ r \ n”);
}
if((Interrupt_port == 3)&&(Interrupt_pin == 5))
{
Printf(换行符“SW重置密钥中断发生了。\ r \ n”);
}
if((Interrupt_port == 4)&&(Interrupt_pin == 7))
{
Printf(换行符“传感器中断发生了。\ r \ n”);
}
hw_wkup_reset_interrupt();
}
void key_interrupt_init(void)
{
hw_wkup_init(null);
hw_wkup_configure_pin(hw_gpio_port_3,hw_gpio_pin_4,1,1,hw_wkup_pin_state_low);
hw_wkup_configure_pin(hw_gpio_port_3,hw_gpio_pin_5,1,hw_wkup_pin_state_low);
hw_wkup_configure_pin(hw_gpio_port_4,hw_gpio_pin_7,1,hw_wkup_pin_state_low);
hw_wkup_set_counter_threshold(1);
hw_wkup_set_debounce_time(10);
hw_wkup_register_interrupt(key_interrupt_cb,1);
}
静态void prvsetuphardware(void)
{
......
//中断init.
key_interrupt_init();
......
}
但是,当我使用此代码测试时,操作尚未运行。
我认为问题来自WKUP引脚配置,但现在我没有任何想法来解决问题。
您能否向我提供建议问题?
谢谢,
aron.
嗨aron,
对不起,我不确定我理解这个问题,你想使用三个不同的引脚而不是一个唤醒定时器吗?
在那种情况下,key_interrupt_init()中的配置是正确的,我不明白的是sos_key_interrupt_cb,就我可以了解回调的函数是key_interrupt_cb(),但是您已经注册了唤醒中断的另一个回调定时器模块。
谢谢mt_dialog.
嗨diagolog,
在我之前的评论中,我很抱歉我的错字。
我在评论中修改了代码以删除混乱,但我想我有一个错误。
实际上,我使用key_interrupt_cb,我可以看到我只设置一个gpio中断引脚时的操作没问题。
====================.
hw_wkup_configure_pin(hw_gpio_port_3,hw_gpio_pin_4,1,1,hw_wkup_pin_state_low);
====================.
但是,当我在key_interrupt_init函数中设置三个引脚后,它在检查P3_4时不起作用
====================.
hw_wkup_configure_pin(hw_gpio_port_3,hw_gpio_pin_4,1,1,hw_wkup_pin_state_low);
hw_wkup_configure_pin(hw_gpio_port_3,hw_gpio_pin_5,1,hw_wkup_pin_state_low);
hw_wkup_configure_pin(hw_gpio_port_4,hw_gpio_pin_7,1,hw_wkup_pin_state_low);
====================.
所以,我认为我的三个引脚配置有一些问题,我需要你的建议。
谢谢,
aron.
嗨aron,
我没有看到任何问题,我使用HRP_Sensor测试了从三个不同的引脚醒来,并在说明时配置设备,如果您没有看到唤醒设备和回调函数来执行,则有两种可能的选项:
谢谢mt_dialog.