DA14695 FreeRTOS闪烁实例冻结

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
13个职位/ 0个新职位
最后发表
ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
DA14695 FreeRTOS闪烁实例冻结

我仍然在使用DA14695 USB-DevKit,并修改了pxp_reporter的例子,其中我修改了main.c,并将pxp_reporter_task.c替换为blinker_task.c,你可以在这里看到:

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

当我创建一个闪光灯时,我可以启动它,LED闪烁,大约4秒,然后程序似乎冻结,LED保持在一个状态,这取决于所使用的定时器延迟。

还有,电话OS_TASK_DELETE (OS_GET_CURRENT_TASK ());在system_init()中永不返回。我不知道,这是否有联系,但我也不知道从哪里寻找问题。

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

设备:
PM_Dialog
离线
最后看到:3个月前2个星期前
工作人员
加入:2018-02-08 11:03
嗨ZephraimMcKladden,

嗨ZephraimMcKladden,

你能在调试模式下运行它并指定它在哪里冻结吗?

谢谢,PM_Dialog

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
不幸的是没有。

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

我目前不能在我的14695 USB-Kit(不是Pro-DK)的DebugMode中运行我的项目。

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

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
关于我的第二个问题

关于我的第二个问题:
这正常吗,之后会有代码OS_TASK_DELETE (OS_GET_CURRENT_TASK ());从未执行,因为该调用完全结束当前任务?

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
同时,我发现:

同时,我发现:
因为我的例子是基于pxp_reporter的,所以里面有很多BLE的东西。如果我重写原来的pxp_reporter,让它总是闪烁LED,就可以了。如果我一步一步地删除BLE函数,它会以函数ble_enable()结束,如果我删除它,几秒钟后会发生冻结。所以…也许设备会进入某种睡眠状态,这是由BLE功能阻止的??可能吗?

PM_Dialog
离线
最后看到:3个月前2个星期前
工作人员
加入:2018-02-08 11:03
嗨ZephraimMcKladden,

嗨ZephraimMcKladden,

不知道你做了什么步骤,但很高兴你去工作。是的,SDK的pxp_reporter项目默认使用睡眠模式-请检查pm_sleep_mode_set(pm_mode_extended_sleep);在system_init()中。当系统处于任何可用的休眠模式时,所有外围域都将关闭电源。

谢谢,PM_Dialog

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
我还尝试使用pm_sleep

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

是什么触发了断电?
BLE-Manager是如何防止它的?
即使在延长睡眠模式下,GPIO引脚仍然处于上电状态吗?

PM_Dialog
离线
最后看到:3个月前2个星期前
工作人员
加入:2018-02-08 11:03
嗨ZephraimMcKladden,

嗨ZephraimMcKladden,

很抱歉耽搁了。你能告诉我代码在哪里被冻结吗?

谢谢,PM_Dialog

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
正如我所说:

正如我所说:
这不是一段特殊的代码,它在哪里冻结,它是时间。

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

PM_Dialog
离线
最后看到:3个月前2个星期前
工作人员
加入:2018-02-08 11:03
嗨ZephraimMcKladden,

嗨ZephraimMcKladden,

我还是不明白你说的这句话是什么意思:“这不是一段特殊的代码,它冻结的地方是时间。”

通常,如果你附加了调试器,你应该能够检查哪里被冻结。是WDOG过期吗?断言?敝中断?

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

谢谢,PM_Dialog

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
我的意思是:

我的意思是:

我设置了一个定时器和一个任务,等待定时器的通知(在sys_watchdog_suspend之后OS_TASK_NOTIFY_WAIT)。收到通知后,循环所做的就是切换绿色LED。现在,如果我改变计时器间隔,循环可能运行20次(短间隔)或仅运行2次(长间隔),但总的来说,LED闪烁的时间不会超过5秒。

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

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

正如我在上面所写的,如果我使用函数ble_enable()并因此启用蓝牙功能,这似乎会阻止睡眠。但这是让1469x保持清醒的唯一方法吗?

我错过了什么?

ZephraimMcKladden
离线
最后看到:1年7个月前
加入:2020-08-18 21:31
同时我发现,如果我跑

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

这里使用的示例是SDK中的freertos_retarget项目。我仍然不知道,如何防止睡眠模式,当使用FreeRTOS。再次:pm_sleep_mode_set (pm_mode_active);什么也不做。

PM_Dialog
离线
最后看到:3个月前2个星期前
工作人员
加入:2018-02-08 11:03
嗨ZephraimMcKladden,

嗨ZephraimMcKladden,

你怎么确定它没有进入睡眠状态?

谢谢,PM_Dialog