定时操作输出波形

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
zyosintek
离线
最后看到:6个月5天前
加入:2020-03-26 12:15
定时操作输出波形

嗨对话框

我正在实现一个功能,通过操作GPIO电平翻转来推动运动,每秒输出一个波形。此波形持续约10ms +。我使用systick中断产生第二个事件,并使用time0控制gpio电平翻转输出波形。在sleep off的情况下,它可以输出我期望的波形,但在下一个sleep模式下,它不能输出波形,但调试我看到程序确实运行到time0 isr和操作gpio。但是gpio级别没有改变。

ps 1:为了不去睡觉的输出波形,我在
在user_app_on_system_powered()中,检查这个波形动作是否完成。如果不是,返回KEEP_POWERED。
PS 2:我最初使用的项目是sdk5.04, pxp,芯片是da14580。

这是什么原因,因为系统没有醒来,所以我不能操作gpio?你有什么建议吗?

谢谢!

关键词:
设备:
PM_Dialog
离线
最后看到:4小时42分钟前
工作人员
加入:2018-02-08 11:03
嗨zyosintek,

嗨zyosintek,

我不完全确定你试图完成什么,所以请尽量描述更清楚你的要求。请记住,在睡眠模式下,所有外围域(包括timer0)都将关闭。您可以通过BLE定时器同步地唤醒设备,也可以通过外部中断(输入)异步地唤醒设备。为此,您可以使用app_easy_timer()来唤醒设备并生成第二个事件,而不是使用systick中断。

当使用app_on_system_powered时,你不应该在那里停留太久。如果您的过程需要时间才能完成,那么您可以将其划分为更小的过程并返回KEEP_POWERED,以便再次强制schedule_while_ble_on()重新运行。通过这种方式,调度程序将运行任何其他将要发生的BLE事件,然后SDK将运行.app_on_system_powered。因此,您应该返回KEEP_POWERED,直到您的过程完成,然后您应该返回GOTO_SLEEP。

通常,没有一个标准的延迟可以添加到user_app_system_powered()中,但是您不应该在那里停留太久。您必须确保user_app_system_powered()中的延迟将让调度程序运行队列中的所有事件。为了实现这一点,您必须将过程划分为可以附加到app_on_system_powered回调的更小的过程,并返回KEEP_POWERED,只要有更多的过程要执行。因此,设备将一块一块地执行整个过程,而不会延迟调度其他事件的调度器。

谢谢,PM_Dialog