我仍然使用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()中永远不会返回。我不知道,如果这是联系的,但我也不知道在哪里寻找问题。
有什么建议么?提前致谢!
设备:

zephraimmckladden嗨,
请您在调试模式下运行它,并在冻结的位置指定吗?
谢谢,PM_DIALOG.
不幸的是没有。
正如我在本主题所描述的那样:
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
我目前无法在我的14695 USB-套件(不是Pro-DK)上的Debugmode中运行我的项目。
当我改变了定时器延迟值时,我观察到,这不是多少执行,但时间问题(大约4秒),直到它冻结。
关于我的第二个问题:
它可能是正常的,任何代码之后OS_TASK_DELETE(OS_GET_CURRENT_TASK());从未执行过,因为呼叫完全结束当前任务?
与此同时,我发现了:
正如我的例子,基于PXP_Reporter,它有很多BLE的东西。如果我重写原始的PXP_Reporter始终闪烁LED,那么工作。如果我逐步删除BLE函数,它以函数BLE_ENABLE()结尾,如果我删除该功能,则会在几秒钟后发生冻结。所以......也许设备进入某种睡眠,这是由磁阻功能防止的???可能的?
zephraimmckladden嗨,
不确定你所做的步骤,但很高兴你去工作。是的,SDK的PXP_Reporter项目默认使用睡眠模式 - 请检查pm_sleep_mode_set(pm_mode_extended_sleep);在system_init()中。当系统处于任何可用的休眠模式时,所有外围域都会断电。
谢谢,PM_DIALOG.
我还尝试使用pm_sleep_mode_set(pm_active),但仍然发生“冻结”。
什么触发了电源?
BLE-Manager如何防止它?
即使在扩展睡眠模式下,GPIO引脚仍然是电源的电源吗?
zephraimmckladden嗨,
为延迟道歉。请问代码冻结的地方吗?
谢谢,PM_DIALOG.
就像我说的:
这不是一块特殊的代码,它冻结,现在是时候了。
因此,我猜,它进入了睡眠模式。有没有办法我可以完全禁用睡眠模式?
zephraimmckladden嗨,
我仍然无法理解你的意思:“这不是一个特殊的代码,冻结,现在是时候了。”
通常,如果附上调试GER,则应该能够检查冻结位置。这是一个wdog到期吗?断言?NMI?
要禁用睡眠模式,您应该调用pm_sleep_mode_set(pm_active)。
谢谢,PM_DIALOG.
我的意思是:
我有一个定时器集和任务,等待通过该计时器(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清醒的唯一方法吗?
我在这里遗漏了什么?
同时我发现了,如果我在调试模式下运行示例,它就不会睡觉,因此我观察到的“冻结”不会发生。
这里,使用的示例是来自SDK的Freertos_Retarget项目。我仍然没有线索,如何防止睡眠模式,使用freertos。再次:pm_sleep_mode_set(pm_mode_active);什么也没做。
zephraimmckladden嗨,
你是怎么检查它没有入睡的?
谢谢,PM_DIALOG.