嗨对话框,
我有使用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
关键词:
设备:
你好汤姆,
是否有一个原因,你没有使用GPIO_EnableIRQ功能的SDK?
下面这段代码工作。中断在app_on_set_dev_config_complete回调(user_cfg_complete),以触发对高电平GPIO配置。的LED被接通,并以1秒的计时器被启动的触发器IRQ时。超时功能将关闭LED,并再次启用中断。
你好,
非常感谢您的快速反应。使用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(无效),它不会触发,甚至用它作为你写它仍然触发下降沿。还有什么我可以在这里失踪......引脚分配,从睡眠中苏醒等?
最好的祝愿,
汤姆
你好汤姆,
如果您使用的是睡眠模式,这种类型的中断不会唤醒DA14580。醒来需要使用唤醒定时器块。有关唤醒定时器的详细信息,请参阅UM-B-51。如果时间真的至关重要,我会提醒您唤醒定时器要求GPIO保持在触发水平,以便超过2个睡眠时钟周期,以便唤醒设备(带有高达约61us的外部水晶。从睡眠中唤醒也需要大约1毫秒的芯片侧 - 例如改变时钟源,加电RAM电源轨等)
我在我的PRO开发套件运行上面的代码和中断触发确实在逻辑高电平。我使用P1_1作为我的上拉输入,从而释放对PRO套件SW3将触发中断。
/ mhv.
嗨对话框,
非常感谢您的帮助。我设法使用唤醒定时器来代替,而它正在工作,目前计划。
最好的祝愿,
汤姆
这是一个很棒的消息!
/ mhv.