⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
thomasburton
离线
最后一次露面:3年9个月前
加入:2016年1月13日14:46
DA14580中断

嗨对话框,

我有使用SDK 5.0.3和BLE外围示例作为基础DA14580中断的问题。我试图让DA14580中断上栓从外部设备上升沿。

然而,无论怎样我都试过中断只发生在一次设备释放引脚下降沿。这是一个时间关键型应用程序,所以我尽快需要中断火灾。

你有任何意见,将不胜感激,代码和逻辑分析仪图像附接。

最好的祝愿,

汤姆

SetWord16(P29_MODE_REG,0×20);//设置为下拉
SetWord16(GPIO_IRQ2_IN_SEL_REG,24);// P2.9被选中,第二个参数是针 - 检查数据表
SetWord16(GPIO_RESET_IRQ_REG,4);//重置IRQ_2reg
SetBits16(GPIO_INT_LEVEL_CTRL_REG,EDGE_LEVELn2,0);// 0:不要等待按键释放后,中断是为GPIO IRQ2复位
SetBits16(GPIO_INT_LEVEL_CTRL_REG,INPUT_LEVEL2,0);//选择上升沿
SetBits16(GPIO_DEBOUNCE_REG,DEB_ENABLE2,0);//反跳使能
SetBits16(GPIO_DEBOUNCE_REG,DEB_VALUE,0);//去抖时间n * 0.63毫秒
NVIC_SetPriority(GPIO2_IRQn,0);
NVIC_EnableIRQ(GPIO2_IRQn);
SetWord16(GPIO_RESET_IRQ_REG,4);//重置IRQ_2reg

关键词:
依恋:
设备:
mhv_dialog
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
你好汤姆,

你好汤姆,

是否有一个原因,你没有使用GPIO_EnableIRQ功能的SDK?

下面这段代码工作。中断在app_on_set_dev_config_complete回调(user_cfg_complete),以触发对高电平GPIO配置。的LED被接通,并以1秒的计时器被启动的触发器IRQ时。超时功能将关闭LED,并再次启用中断。

无效my_timer_timeout()
{
GPIO_ResetIRQ(GPIO0_IRQn);
NVIC_ClearPendingIRQ(GPIO0_IRQn);
GPIO_SetInactive(GPIO_ALERT_LED_PORT,GPIO_ALERT_LED_PIN);
NVIC_EnableIRQ(GPIO0_IRQn);
}
无效my_btn_handler()
{
NVIC_DisableIRQ(GPIO0_IRQn);
arch_set_pxact_gpio();
GPIO_SetActive(GPIO_ALERT_LED_PORT,GPIO_ALERT_LED_PIN);
app_easy_timer(100,my_timer_timeout);
}
空隙user_cfg_complete(无效)
{
default_app_on_set_dev_config_complete();
GPIO_RegisterCallback(GPIO0_IRQn,my_btn_handler);
GPIO_EnableIRQ(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,GPIO0_IRQn,FALSE,FALSE,2);
GPIO_SetInactive(GPIO_ALERT_LED_PORT,GPIO_ALERT_LED_PIN);
}
/ mhv.
thomasburton
离线
最后一次露面:3年9个月前
加入:2016年1月13日14:46
你好,

你好,

非常感谢您的快速反应。使用GPIO_EnableIRQ(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,GPIO0_IRQn,FALSE,FALSE,0)我曾试图;但是这也没有效果 - 触发还是下降沿。但是我并没有称其为user_cfg_complete(无效)或使用default_app_on_set_dev_config_complete();但设定periph_init(无效)中断。

我在你的建议,并设置app_on_set_dev_config_complete到user_cfg_complete代码添加,但除非我也把它添加到periph_init(无效),它不会触发,甚至用它作为你写它仍然触发下降沿。还有什么我可以在这里失踪......引脚分配,从睡眠中苏醒等?

最好的祝愿,

汤姆

mhv_dialog
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
你好汤姆,

你好汤姆,

如果您使用的是睡眠模式,这种类型的中断不会唤醒DA14580。醒来需要使用唤醒定时器块。有关唤醒定时器的详细信息,请参阅UM-B-51。如果时间真的至关重要,我会提醒您唤醒定时器要求GPIO保持在触发水平,以便超过2个睡眠时钟周期,以便唤醒设备(带有高达约61us的外部水晶。从睡眠中唤醒也需要大约1毫秒的芯片侧 - 例如改变时钟源,加电RAM电源轨等)

我在我的PRO开发套件运行上面的代码和中断触发确实在逻辑高电平。我使用P1_1作为我的上拉输入,从而释放对PRO套件SW3将触发中断。

/ mhv.

thomasburton
离线
最后一次露面:3年9个月前
加入:2016年1月13日14:46
嗨对话框,

嗨对话框,

非常感谢您的帮助。我设法使用唤醒定时器来代替,而它正在工作,目前计划。

最好的祝愿,

汤姆

mhv_dialog
离线
最后一次露面:1个月2周前
职员
加入:2013-12-06 15:10
这是一个很棒的消息!/ mhv.

这是一个很棒的消息!

/ mhv.