DA14580笔记(2)-------睡眠状态下按键唤醒
对于DA14580的唤醒,其主要有两个唤醒源。
1、一个是同步唤醒源,来源于BLE的内部定时器(默认10秒)和BLE事件;
2、一个是异步唤醒源,即唤醒中断,可以配置为任意引脚唤醒,其即使用cortex M0指定的WIC技术。
WIC(wakeup interruptcontroller)是独立于CPU和中断控制工作的,但WIC检测到电平变化(也可以计数到指定数值时)即会提醒PMU给CPU供电,并启动内部RC震荡电路提供时钟,并维持中断信号给CPU中断部分,这样CPU可以从睡眠中唤醒。
那么,对于DA14580的唤醒,需要注意什么呢?
1)BLE的唤醒定时器设置
2)DA14580的外部唤醒设置
本实验采用的是外部按键唤醒功能,睡眠模式为扩展睡眠模式,因为需要一直要间隔两秒广播,按键触发改变广播数据,
动态改变广播数据,一定要先停止广播。这部分可以参考官方文档。
一、初始化按键唤醒
P24// 1 0000 0000 0000 0000 0000
void app_button_enable(void)
{ wkupct_register_callback(ext_wakeup_cb); //注册唤醒回调函数if(GPIO_GetPinStatus(BUTTON_GPIO_PORT,BUTTON_GPIO_PIN)) { wkupct_enable_irq(0x100000, 0x100000, 1, 0); //初始化按键中断唤醒}
}
二、失能按键唤醒功能
/******************************************************************************************* @brief Disable external wake up GPIO Interrupt. Used on self wakup.** @return void.*****************************************************************************************/
void app_wakeup_disable(void)
{SetWord16(WKUP_RESET_IRQ_REG, 1); // Acknowledge itSetBits16(WKUP_CTRL_REG, WKUP_ENABLE_IRQ, 0); // No more interrupts of this kind
}
三、在唤醒回调函数实现自定义功能等
void ext_wakeup_cb(void)
{if(GetBits16(SYS_STAT_REG, PER_IS_DOWN)){periph_init(); //初始化外设,最好把外设初始化写在这个函数内 }if(!GPIO_GetPinStatus( BUTTON_GPIO_PORT, BUTTON_GPIO_PIN)){ Delay_Ms();if(!GPIO_GetPinStatus( BUTTON_GPIO_PORT, BUTTON_GPIO_PIN)){app_adv_stop(); //检查按键按下停止广播,去更新广播数据 }}// SetBits32(GP_CONTROL_REG, BLE_WAKEUP_REQ, 1); app_button_enable();}
四、程序调用(根据官方代码),在主循环进入和退出睡眠时。实现如下
五、注意事项:
1、对于按键,单击一次会多出进入中断导致程序现象异常的情况。
解决方案:一定要初始化按键GPIO时才有上拉输入(INPUT_PULLUP)。还有硬件部分,按键的引脚最好直接接地,如果接入地的电阻过大也会有影响。这一点很重要。
2、关于初始化io状态能否保持的问题
DA14580 为了把功耗做的很低,在低功耗的模式的时候大部分外设都会关掉,包括IO口
系统唤醒之后要调用外设初始化,periph_init()获取IO口状态,然后重新设置
SetBits16(SYS_CTRL_REG, PAD_LATCH_EN, 1) 把引脚从锁死状态下 解开
DA14580笔记(2)-------睡眠状态下按键唤醒相关推荐
- windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案
windows11下系统睡眠状态被UpdateOrchestrator唤醒的解决方案 一.问题排查 二.问题解决 一.问题排查 最近win11更新后发现会偶尔在睡眠状态下唤醒,CMD中输入powerc ...
- 电脑休眠睡眠状态下无线WiFi远程网络唤醒设置
无线WiFi仅能实现电脑在休眠睡眠状态下的远程网络唤醒,无线网卡在电脑关机状态下无法继续保持通电工作状态.电脑在关机状态下实现远程网络唤醒开机只能通过有线网卡. 电脑休眠睡眠状态下无线WiFi远程网络 ...
- 计算机进入休眠状态如何唤醒,电脑进入睡眠状态怎么快速唤醒图文教程
你是否遇到过电脑睡眠后无法唤醒的情况,电脑进入睡眠状态怎么快速唤醒?此类现象一般是因为系统设置导致,或者系统固件比支持此功能,今天小编就和大家一起来学习鼠标无法唤醒睡眠中的电脑的解决方法. 电脑进入睡 ...
- 计算机睡眠状态能挂游戏,台式电脑怎么设置WIN7睡眠状态下不断网我要挂游戏。...
优质回答 回答者:WoRRoMOT 1.点击"开始"图标打开"运行"(或者直接快捷键Win+R),输入"regedit"进入"注册 ...
- mac睡眠状态下远程唤醒_如何控制Mac自动进入睡眠状态的时间
mac睡眠状态下远程唤醒 It's often a good idea to let your Mac sleep after a period of time when you're not usi ...
- 计算机睡眠之后无法唤醒,电脑进入睡眠状态后无法唤醒一直黑屏,该如何处理...
大家好,我是波仔,非常高兴又来跟大家分享我微溥的知识,还请各位多多包涵. 很多用户都喜欢设置一个待机或者睡眠状态,这样也可以节约省电,再一个就是在一定的时间内不使用电脑的情况下,电脑自动待机或休眠.当 ...
- win7计算机睡眠后无法唤醒,WIN7进入睡眠状态后无法唤醒-win7唤醒睡眠模式,win7不能唤醒睡眠模式...
如果可以用鼠标唤醒,而不能用键盘唤醒,排查以下的项目: 1)设备管理器中键盘的电源选项中,是否勾选了"允许此装置唤醒",如下图 2)键盘是否连接USB接口松动 3)键盘是否损坏 w ...
- 设置计算机在睡眠状态下能共享,使用wifi共享精灵的过程中电脑会自动休眠锁屏的解决方法...
我在使用wifi共享精灵的过程中经常是这样做:电脑一直开着,然后自己躺在床上用手机看小说.看韩剧.但几十分钟之后,电脑会因为长期没人操作而自动休眠,从而导致wifi连接不上,要是每次重启软件又太费事, ...
- win10睡眠状态下唤醒花屏
原因是前一天更新过Windows,显卡驱动版本过高与自身电脑并不适配. 一.下载一个驱动精灵 体检之后进入驱动管理,再显卡那里根据他的提示下载最合适的显卡并安装即可. 有一点恶心的是会有捆绑安装 二. ...
最新文章
- 万能的Entry,两个变量的Model/JavaBean再也不用写了!
- C++下关于XML开源库的使用
- 采购申请的评估价格的来源
- 2016秋季阅读计划
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十一)地图遮罩层的实现
- 计算机硬件技术基础5章在线,《计算机硬件技术基础》试题(D)
- 工作变得简单又高效 试试这八个WebApp
- hbase1.1.1 连接集群_HBase-1.2.1集群搭建
- 【语音识别】基于matlab高斯混合模型(GMM)说话人识别【含Matlab源码 574期】
- java 读取properties配置文件内容乱码 --日文乱码对应方法
- OverflowError: Python int too large to convert to C long 在Windows环境下Python报错
- MATLAB2016笔记(十一):基本粒子群优化算法(PSO)的MATLAB实现
- 2014年沈航817
- Mac OSX 苹果电脑 安装 MacPorts
- freemarker根据模板生成word文档,换行
- 页面通过js获取并加载远程html文件,移除html文件中不需要的内容,修改html文件中img图片的路径
- 山西中考计算机知识点,2018年山西省中考必考语文知识点
- 分布式计算(网络和网际互连)
- linux中vsc是什么作用,在Linux上开始使用Visual Studio代码(VSC)
- 【附源码】计算机毕业设计java学生档案管理系统设计与实现