简述:
基于官方提供例程进行修改后测试,
在P1_7管脚上触发产生一个下降沿后,演示板上的D2会亮,
却发现当中央处理器完全进入休眠后,演示板上的D2也会熄灭。
理论上管脚会保持休眠前的状态,但是现在的实际情况是不对的。
以上效果是因为配置存在问题而导致的么,请指教。
详情:
使用UM-B-047-DA1468x入门指南中的第八章您的第一个DA1468x应用程序–Blinky的例程,
并按照步骤成功添加了闪烁LED D2的程序。
正是由于在实际开发中遇到了问题,
需要测试管脚在休眠后是否能够继续保持管脚状态,现做出如下修改:
1.设置休眠模式,如下所述:
pm_设置_唤醒_模式(真);
pm_设置_睡眠_模式(pm_模式_延长睡眠);
2.检测外部中断,此处使用的检测到P1_7有下降沿出现则唤醒设备,如下所述:
#定义CFG_工作时间(32)
#定义CFG工作计数器(1)
#定义CFG\U WKUP\U ISR\U优先级(1)
静态void prvTemplateTask(void*pvParameters)
{
下一个时间;
静态uint32测试计数器=0;
uint32任务通知值;
硬件gpio_配置_引脚_电源(硬件gpio_端口_1、硬件gpio_引脚_7、硬件gpio_电源_V33);
硬件gpio设置引脚功能(硬件gpio端口1、硬件gpio引脚7、硬件gpio模式输入引脚上拉、硬件gpio函数gpio);
hw_wkup_init(空);
hw_启动_设置_去抖动_时间(CFG_启动_去抖动_时间);
硬件工作设置计数器阈值(CFG工作计数器阈值);
硬件工作寄存器中断(硬件失效、工作中断、CFG工作中断、ISR优先级);
硬件工作单元设置引脚状态(硬件GPIO端口1,硬件GPIO引脚7,正确);
硬件启动设置引脚触发器(硬件GPIO端口1、硬件GPIO引脚7、硬件启动引脚状态低);
对于(;;)
{
操作系统任务通知等待(任务h、操作系统任务通知所有位、任务通知值、操作系统任务通知永远);
如果(任务通知值&(1<<0))
{
测试计数器++;
如果(测试计数器%2){
硬件gpio设置激活(硬件gpio端口1,硬件gpio引脚5);
}
否则{
硬件gpio设置未激活(硬件gpio端口1,硬件gpio引脚5);
}
}
}
}
静态空隙hw_熄灭_工作_cb(空隙)
{
硬件启动复位中断();
来自ISR的操作系统任务通知(任务h,(1<<0),操作系统通知设置位);
}
附录:
根据数据表修订版2.1 2016年7月15日中P147所描述,
32.4睡眠时的状态保留小节的内容,
在进入调试模式下,发现确实调用了系统动力经理c中的申请注射用水函数中的如下部分:
如果(dg_配置黑色_ORCA_IC_REV==黑色_ORCA_IC_REV_A){
hw_cpm_激活_垫锁();
hw_cpm_power_down_periph_pd();
每次断电时都要等待();
}
嗨,userYR,
请参阅本帖
https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...
你好,我也遇到了一样的疑惑,请问您解决了吗?
你好,我也遇到了一样的疑惑,请问您解决了吗?
可以参考本论坛的另外一个类似帖子:https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...