DA14695 Freertos Blinky示例冻结

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
13个帖子/ 0新
最后一篇
Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
DA14695 Freertos Blinky示例冻结

我仍然使用DA14695 USB-devkit并修改了PXP_Reporter示例,其中我修改了main.c,用blinker_task.c替换了pxp_reporter_task.c,您可以在此处查看:

https://gist.github.com/tetrodoxin/34c8a2ef9af80b0d3e30c4d213b5ca40.

当我构建闪存时,我可以启动它,LED闪烁,约4秒钟,然后程序似乎冻结,LED在一个状态下保持,具体取决于使用的定时器延迟。

此外,电话OS_TASK_DELETE(OS_GET_CURRENT_TASK());在system_init()中永远不会返回。我不知道,如果这是联系的,但我也不知道在哪里寻找问题。

有什么建议么?提前致谢!

设备:
PM_DIALOG.
离线
最后一次露面:2天11小时前
职员
加入:2018-02-08 11:03
zephraimmckladden嗨,

zephraimmckladden嗨,

请您在调试模式下运行它,并在冻结的位置指定吗?

谢谢,PM_DIALOG.

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
不幸的是没有。

不幸的是没有。
正如我在本主题所描述的那样:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...

我目前无法在我的14695 USB-套件(不是Pro-DK)上的Debugmode中运行我的项目。

当我改变了定时器延迟值时,我观察到,这不是多少执行,但时间问题(大约4秒),直到它冻结。

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
并就我的第二个

关于我的第二个问题:
它可能是正常的,任何代码之后OS_TASK_DELETE(OS_GET_CURRENT_TASK());从未执行过,因为呼叫完全结束当前任务?

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
与此同时,我发现了:

与此同时,我发现了:
正如我的例子,基于PXP_Reporter,它有很多BLE的东西。如果我重写原始的PXP_Reporter始终闪烁LED,那么工作。如果我逐步删除BLE函数,它以函数BLE_ENABLE()结尾,如果我删除该功能,则会在几秒钟后发生冻结。所以......也许设备进入某种睡眠,这是由磁阻功能防止的???可能的?

PM_DIALOG.
离线
最后一次露面:2天11小时前
职员
加入:2018-02-08 11:03
zephraimmckladden嗨,

zephraimmckladden嗨,

不确定你所做的步骤,但很高兴你去工作。是的,SDK的PXP_Reporter项目默认使用睡眠模式 - 请检查pm_sleep_mode_set(pm_mode_extended_sleep);在system_init()中。当系统处于任何可用的休眠模式时,所有外围域都会断电。

谢谢,PM_DIALOG.

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
我也试图使用pm_sleep

我还尝试使用pm_sleep_mode_set(pm_active),但仍然发生“冻结”。

什么触发了电源?
BLE-Manager如何防止它?
即使在扩展睡眠模式下,GPIO引脚仍然是电源的电源吗?

PM_DIALOG.
离线
最后一次露面:2天11小时前
职员
加入:2018-02-08 11:03
zephraimmckladden嗨,

zephraimmckladden嗨,

为延迟道歉。请问代码冻结的地方吗?

谢谢,PM_DIALOG.

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
就像我说的:

就像我说的:
这不是一块特殊的代码,它冻结,现在是时候了。

因此,我猜,它进入了睡眠模式。有没有办法我可以完全禁用睡眠模式?

PM_DIALOG.
离线
最后一次露面:2天11小时前
职员
加入:2018-02-08 11:03
zephraimmckladden嗨,

zephraimmckladden嗨,

我仍然无法理解你的意思:“这不是一个特殊的代码,冻结,现在是时候了。”

通常,如果附上调试GER,则应该能够检查冻结位置。这是一个wdog到期吗?断言?NMI?

要禁用睡眠模式,您应该调用pm_sleep_mode_set(pm_active)。

谢谢,PM_DIALOG.

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
我的意思是:

我的意思是:

我有一个定时器集和任务,等待通过该计时器(OS_TASK_NOTIFY_WAIT通知SYS_WATCHDOG_SUSPEND之后)。通知后,所有循环都确实正在切换绿色LED。现在,如果我更改定时器intervall,那循环可能会运行20次(短暂间隔)或仅2次(长间隔),但总计,LED从不闪烁超过5秒。

因此,我得出结论,它不是代码中的单点/步骤/命令/函数调用,导致睡眠。我猜,该设备在一定时间后刚进入睡眠模式(4-5秒)。

我试过了pm_sleep_mode_set(pm_mode_active);在system_init任务中(因为这是一个freertos项目),但这似乎没有任何影响。

当我在上面写了更多时,如果我使用函数ble_enable()并因此启用蓝牙功能,似乎可以防止睡眠。但这意味着保持1469x清醒的唯一方法吗?

我在这里遗漏了什么?

Zephraimmckladden
离线
最后一次露面:5个月3周前
加入:2020-08-18 21:31
与此同时,我发现了,如果我跑了

同时我发现了,如果我在调试模式下运行示例,它就不会睡觉,因此我观察到的“冻结”不会发生。

这里,使用的示例是来自SDK的Freertos_Retarget项目。我仍然没有线索,如何防止睡眠模式,使用freertos。再次:pm_sleep_mode_set(pm_mode_active);什么也没做。

PM_DIALOG.
离线
最后一次露面:2天11小时前
职员
加入:2018-02-08 11:03
zephraimmckladden嗨,

zephraimmckladden嗨,

你是怎么检查它没有入睡的?

谢谢,PM_DIALOG.