我仍在使用DA14695 USB DevKit并修改了pxp\u reporter示例,其中我修改了main.c并将pxp\u reporter\u task.c替换为blinker\u task.c,您可以在这里看到:
https://gist.github.com/tetrodoxin/34c8a2ef9af80b0d3e30c4d213b5ca40
当我建立一个闪光它,我可以启动它和LED闪烁,约4秒,然后程序似乎冻结,LED停留在一个状态,这取决于所用的定时器延迟。
还有,电话OS_TASK_DELETE(OS_GET_CURRENT_TASK());在系统中,init()永远不会返回。我不知道,如果这是连接,但我也不知道在哪里寻找问题。
有什么建议吗?提前谢谢!
设备:
你好,ZephraimMcCladden,
你能在调试模式下运行它并指定它冻结的位置吗?
谢谢,下午好
不幸的是没有。
正如我在本主题中所描述的:
https://support.dialog semiconductor.com/forums/post/dialog-smartbond-bl。。。
我目前无法在我的14695 USB工具包(非Pro DK)上以调试模式运行我的项目。
当我改变计时器延迟值时,我发现,它不是执行多少次的问题,而是一个时间问题(大约4秒),直到它冻结。
关于我的第二个问题:
这是正常的吗,之后有什么代码OS_TASK_DELETE(OS_GET_CURRENT_TASK());从未执行,因为该调用完全结束当前任务?
同时我发现:
因为我的例子是基于pxp\u reporter的,里面有很多不可靠的东西。如果我重写原来的pxpèreporter,让它总是闪烁LED,那就行了。如果我一步一步地删除BLE函数,它将以函数BLE\u enable()结束,如果我删除它,冻结将在几秒钟后发生。所以。。。可能设备进入某种睡眠状态,这是由BLE功能阻止的???可能吗?
你好,ZephraimMcCladden,
不知道你做了什么步骤,但很高兴你能成功。是的,SDK的pxp\u reporter项目默认使用睡眠模式–请检查system\u init()中的pm\u sleep\u mode\u set(pm\u mode\u extended\u sleep)。当系统处于任何可用的睡眠模式时,所有外围域都将关闭。
谢谢,下午好
我也试过使用pm\u sleep\u mode\u set(pm\u active),但是“冻结”仍然发生。
是什么触发了断电?
你是怎么阻止的?
即使在延长睡眠模式下,GPIO引脚是否仍然通电?
你好,ZephraimMcCladden,
抱歉耽搁了。你能指出代码冻结的地方吗?
谢谢,下午好
就像我说的:
这不是一段特殊的代码,它冻结的地方,是时间。
所以我猜,它进入了睡眠模式。有什么方法可以完全禁用睡眠模式吗?
你好,ZephraimMcCladden,
但我还是无法理解你的意思:“这不是一段特殊的代码,它冻结的地方,是时间。”
通常情况下,如果您连接了debug-ger,您应该能够检查is冻结的位置。是WDOG过期吗?断言?NMI?
要禁用睡眠模式,您应该调用pm\u sleep\u mode\u set(pm\u active)。
谢谢,下午好
我的意思是:
我设置了一个计时器和一个任务,等待该计时器的通知(OS\u task\u NOTIFY\u WAIT after sys\u watchdog\u suspend)。接到通知后,循环所做的只是切换绿色LED。现在,如果我改变定时器间隔,这个循环可能会运行20次(对于短间隔)或者只运行2次(对于长间隔),但是总的来说,LED的闪烁时间不会超过5秒。
因此,我的结论是,导致睡眠的不是代码中的单个点/步骤/命令/函数调用。我猜,该设备只是进入睡眠模式后,一定的时间(4-5秒)。
我试过了pm\ U睡眠\模式\设置(pm\模式\激活);在系统初始化任务中(因为这是一个FreeRTOS项目),但这似乎没有任何效果。
正如我在上面所写的,如果我使用函数ble\u enable(),从而启用蓝牙功能,这似乎会阻止睡眠。但这是让1469x保持清醒的唯一方法吗?
我错过了什么?
同时我发现,如果我在调试模式下运行这个例子,它不会进入睡眠状态,因此我观察到的“冻结”不会发生。
这里,使用的示例是来自SDK的freertos\u重定目标项目。我仍然没有线索,如何防止睡眠模式,当使用FreeRTOS。再一次:pm\ U睡眠\模式\设置(pm\模式\激活);什么都不做。
你好,ZephraimMcCladden,
你怎么检查它没有睡着?
谢谢,下午好