关于同一项目中的几个GPIO中断

5个帖子/ 0新
最后一篇
Liuluan002.
离线
最后一次露面:6个月3周前
加入:2015-11-27 14:24
关于同一项目中的几个GPIO中断

嗨对话框,

我正在使用PIN P00中的中断,以便按按钮和Relase。此外,来自外部的加速器的引脚P15。

1.我也想使用按钮和按钮释放来检测系统的按钮按下时间。
我发现我的代码不稳定,你能给我一些解决方案的建议吗?

空白_Button(空白)
{
if(getBits16(sys_stat_reg,per_is_down))
periph_init();

// p00按钮按中断
if(Refored_flag == 0)
{
if((!(getword16(p0_data_reg)&(1 << 0)))))))))
{
button_flag = 3;
wkupct_register_callback(按_Button);
wkupct_enable_irq(0x000001,0x000000,1,0x14);
start_timer1();//开始筛选新闻时间
recelse_flag = 1;
}

}

// p00按钮释放中断
if(recelse_flag == 1)
{
if(getword16(p0_data_reg)&(1 << 0))
{
wkupct_register_callback(按_Button);
wkupct_enable_irq(0x000001,0x000001,1,0x14);
stop_timer1(); //停止涂抹刷新时间,尝试获得按钮的长度
recelse_flag == 0;
}

}

// P15加速器中断
if((getword16(p1_data_reg)&(1 << 5)))
{
wkupct_register_callback(按_Button);
wkupct_enable_irq(0x002000,0x000000,1,0x00);// p15.
ARCH_BLE_FORCE_WAKEUP();
ACC3();//处理加速器数据
}

}

void user_app_init(void)
{
mnf_data_init();
default_app_on_init();
wkupct_register_callback(按_Button);
wkupct_enable_irq(0x000001,0x000001,1,0x14);//按钮P00等待按钮按下
WKUPCT_ENABLE_IRQ(0x002000,0x000000,1,0x00); // P15 INT1水印
}

设备:
Liuluan002.
离线
最后一次露面:6个月3周前
加入:2015-11-27 14:24
我找到了这个功能

我找到了这个功能“Arch_ble_force_wakeup();”将该按钮释放中断和按钮按下中断。有没有更好的方法来解决这个问题?由于我需要调用“Arch_ble_Force_WakeUp();”在广告功能也获得系统时间之前。

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨Liuluan002,

嗨Liuluan002,

你是什​​么意思,代码不稳定,会发生什么?你缺少中断吗?发生唤醒处理程序中断,但如果您读取P1_DATA_REG(从传感器中断的情况下)时,请勿看到引脚设置为“1”?同样在user_app_init()中调用wkupct_enable_irq()中的两次,第二个调用将删除第一个调用,所以从那时起,我不认为你可以从一个按钮唤醒,因为只有P15设置。我不认为ARCH_BLE_FORCE_WAKEUP()将影响唤醒控制器的设置,当您离开user_app_init()时,仅P15是可用的中断引脚。

谢谢mt_dialog.

Liuluan002.
离线
最后一次露面:6个月3周前
加入:2015-11-27 14:24
嗨对话框,

嗨对话框,

如何设置有1ms的Debouching Time,也有20ms再次推进时间的P15?

我有更改了以下代码,似乎两个中断工作,但我想将p00 deboughing time作为20ms,但是p15的扫除时间是1ms。你知道如何做到吗?

// niklas 20161207.
void user_app_init(void)
{
mnf_data_init();
default_app_on_init();
wkupct_register_callback(按_Button);

wkupct_enable_irq(0x002001,0x000001,1,0x04);
}

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨Liuluan002,

嗨Liuluan002,

只有软件脱扣,您无法为唤醒控制器设置不同的删除时间。

谢谢mt_dialog.