嗨对话框,
使用SDK 5.0.3和BLE外围示例作为基础,我对DA14580上的中断存在问题。我正在尝试将DA14580从外部设备上中断引脚的上升沿。
但是,无论设备释放引脚,无论我尝试了什么,中断都只发生在下降沿。这是一个时间关键应用,因此我需要尽快打火。
您的任何建议都将受到欣赏,附加的代码和逻辑分析仪图像。
最好的祝愿,
汤姆
setword16(p29_mode_reg,0x20);//设置为下拉
setword16(gpio_irq2_in_sel_reg,24);// p2.9被选中,第2个参数是PIN - 检查数据表
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_DEBOUCE_REG,DEB_VALUE,0);//去抖时间n * 0.63毫秒
nvic_setpriority(gpio2_irqn,0);
nvic_enableirq(gpio2_irqn);
setword16(gpio_reset_irq_reg,4);//重置Irq_2reg
关键词:
设备:
你好汤姆,
有没有理由在SDK中使用GPIO_ENABLEQ函数?
下面的代码片段正在工作。中断在app_on_set_dev_config_complete回调(user_cfg_complete)中配置以触发高级GPIO。当IRQ触发器时,打开LED并启动1秒计时器。超时功能关闭LED并再次启用中断。
你好,
非常感谢您的快速回复。我尝试过GPIO_ENABLEIRQ(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,GPIO0_IRQN,FALSE,FALSE,0);但这也没有影响 - 触发器仍然在下降沿。但是我没有在user_cfg_complete(void)中或使用default_app_on_set_dev_config_complete();但在Periph_init(void)中设置中断。
我已添加到您建议的代码中并将App_On_set_dev_config_complete设置为User_cfg_Complete,但除非我也将其添加到Periph_Init(void),它不会触发甚至使用它,因为您已将其写入它仍然触发下降沿触发。这里有什么我可能缺少的... Pin分配,从睡眠中醒来等吗?
最好的祝愿,
汤姆
你好汤姆,
如果您使用的是睡眠模式,这种类型的interrupt will not wake up the DA14580. Waking up requires the use of the wake-up timer block. Please see UM-B-51 for details on the wake-up timer. If timing is really critical, I would remind you that the wake-up timer requires the GPIO to remain in the triggering level for more than 2 sleep clock cycles in order to wake up the device (with an external crystal that adds up to about 61us and waking up from sleep also requires about 1ms of housekeeping on the chip side - such as changing the clock source, powering up the RAM power rail etc.)
我正在在我的Pro开发套件上运行上面的代码,并且中断确实触发了逻辑上高级别。我正在使用p1_1作为我的上拉的输入,因此在Pro套件上释放SW3将触发中断。
/ mhv.
嗨对话框,
非常感谢您的帮助。我设法使用唤醒定时器,它现在正常工作。
最好的祝愿,
汤姆
这是一个很棒的消息!
/ mhv.