嗨对话框,
使用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分配,从睡眠中醒来等吗?
最好的祝愿,
汤姆
你好汤姆,
如果您正在使用睡眠模式,这种类型的中断将不会唤醒DA14580。唤醒需要使用唤醒计时器块。关于唤醒定时器的详细信息请参见UM-B-51。如果时机真的很关键,我会提醒你,唤醒定时器需要的留在触发水平超过2睡眠时钟周期为了唤醒设备(与外部晶体,加起来大约61美国和从睡梦中醒来还需要约1毫秒的管家在芯片方面,如改变时钟源,启动RAM电源轨等)
我正在在我的Pro开发套件上运行上面的代码,并且中断确实触发了逻辑上高级别。我正在使用p1_1作为我的上拉的输入,因此在Pro套件上释放SW3将触发中断。
/ mhv.
嗨对话框,
非常感谢您的帮助。我设法使用唤醒定时器,它现在正常工作。
最好的祝愿,
汤姆
这是一个很棒的消息!
/ mhv.