首页 > 其他分享 >按键低功耗,按键唤醒

按键低功耗,按键唤醒

时间:2023-07-11 15:23:26浏览次数:37  
标签:SET 中断 低功耗 键盘 ResetUserTimer 按键 唤醒

1.设置按键为键盘唤醒,按键为低,触发按键中断,唤醒MCU

void KbAppInit(void)
{	
SET_COL_ALL_IN; //列输入
SET_ROW_ALL_OUT1; //行输出高电平
RemoteGroup=0;
RollingCode=0;
ResetUserTimer(&KeyUpTimer); //更新按键抬起时间
ResetUserTimer(&KeyDownTimer);			
ResetUserTimer(&EnterSleepTimer);	
KeyDown=0;
KeyReleaseSendEn=0;
UpdataKeyReleaseSendBufEn=0;
KeyDownNoSendEn=0;
UpdataKeyDownStepEn=1;
}

2.MCU唤醒后执行主程序,在键盘唤醒中不做处理。当检测到某个引脚满足中断条件,并且该引脚的在键盘控制寄存器KBCON中被允许,则设置键盘中断标志位KBF。当按键释放时KBF被自动清0.任何一个被允许的键盘中断都可以将器件从空闲、停止或睡眠模式中唤醒

3.按键松开后重新进入休眠状态

void EnterSleep(void)
{
uint8_t IE0Data;
uint8_t IE1Data;

IE0Data=IE0;
IE1Data=IE1;

SET_COL_ALL_IN;       //设列为输入
SET_ROW_ALL_OUT0;     //设行为输出0
SET_ROW0_OUT0;
KbScanWaitIOConfigSteady();

if((COL1==0) || (COL2==0)||(COL3==0)||(COL4==0))
{
	return;
}

//LED_OFF;

TCON=0;     //关闭定时器
WdtDis();		//关闭看门狗

PSFT |= 0x18;  //int0b,int1b移位控制
PSFT1|=0x08;    //键盘接口移位控制
KBCON=(BIT0|BIT1);      //设置kb1,kb0中断有效
TCON &= ~(BIT0|BIT2);   //int0b,int1b 低电平触发


IE0=0x85;       //允许外部中断int0b,int1b
IE1=0x10;       //允许键盘中断

if(((IRCON&0x10)==0)&&((TCON&0x08) == 0)&&((TCON&0x02)== 0))   //键盘中断标志位为0,外部中断0,1为0
{		
	Sleep();
}

PSFT &= ~0x18;       //清除int0b,int1b移位标志
PSFT1&=~0x08;         //清除键盘接口移位标志
KBCON=0;              //清除键盘中断控制位

IE0=IE0Data;
IE1=IE1Data;

WdtInit(WDT_2S_INT);	
SysTickInit();
PrfAppInit();
PrfSleep();
ResetUserTimer(&KeyUpTimer); //更新按键松开时间KeyUpTimer
ResetUserTimer(&KeyDownTimer);	//更新按键按下时间KeyDownTimer
ResetUserTimer(&EnterSleepTimer);	 //更新睡眠时间EnterSleepTimer
}

标签:SET,中断,低功耗,键盘,ResetUserTimer,按键,唤醒
From: https://www.cnblogs.com/logicexpression/p/17544778.html

相关文章

  • java 线程等待和唤醒方法
    java线程状态变迁图从图中可以看出Java线程等待方法是将线程从Runnable状态转换为Waiting状态,Java线程的唤醒方法是将线程从Waiting状态唤醒进入Runnable状态在Java中线程的等待和唤醒主要是分为3组:Object.wait()和Object.notify()LockSupport.park()和LockSupport.unp......
  • 按键控制数码管闪烁
    (文章目录)一、数码管闪烁#include<STC15F2K60S2.H>unsignedcharmode=0;//模式变量unsignedcharstat=0;//闪烁位变量unsignedintcount_smg=0;//数码管闪烁计数变量unsignedcharf_open=0;//闪烁标志sbitS7=P3^0;unsignedcharcodetable[]={0xc0,0xf9,0xA4,0xB0,0......
  • RV1126按键中断驱动和应用调试
     本人使用的调试平台是荣品的rv1126开发板,最近在调试按键中断。经过查看原理图,发现竟然没有一个空闲的IO,所以使用UART1的RX作为按键中断引脚。    驱动部分:     因为UART1原先已经在设备树中已经有了定义,需要将kernel/arch/arm/boot/dts/rongpin/rv1126_11......
  • CC2541是功率优化的真正系统级芯片(SoC)解决方案,适用于蓝牙低功耗(BLE)和专用的2.4GH
    CC2541是功率优化的真正系统级芯片(SoC)解决方案,适用于蓝牙低功耗(BLE)和专用的2.4GHz应用.该SOC芯片集成性能极好RF收发器以及标准工业级增强型8051内核,支持系统编程Flash,8KRAM及强大功能支持跟外设。微信号:13632658391 深圳市动能世纪科技有限公司成立于2000年,是一家IC集成......
  • UM2082F08三通道低频无线唤醒ASK接收芯片
    UM2082F08是基于单周期8051内核的超低功耗8位、具有三通道低频无线唤醒ASK接收功能的SOC芯片。芯片可检测30KHz~300KHz范围的LF(低频)载波频率数据并触发唤醒信号,同时可以调节接收灵敏度,确保在各种应用环境下实现可靠唤醒,其拥有的三个独立通道可配置成不同的唤醒模式......
  • 加湿助眠仪语音方案,低功耗语音芯片NV040C-SOP8
    随着生活水平的提高,人们对于居住环境的要求也越来越高,不仅要求舒适、温馨的居住环境,同时还需要一些高科技产品来提高生活质量。比如,加湿助眠仪就是一款非常受欢迎的高科技产品。加湿助眠仪语音方案的基本设计思路是,通过语音交互的方式,让用户可以轻松控制加湿助眠仪的工作状态,可以......
  • Wake-on-LAN(WoL)是一种网络协议,允许通过局域网上的电脑发送特定的网络包来唤醒处于休眠
    Wake-on-LAN(WoL)是一种网络协议,允许通过局域网上的电脑发送特定的网络包来唤醒处于休眠或关机状态的计算机。然而,Wake-on-LAN并没有明确的版本概念,因为它是一个通用的协议,不受特定厂商或组织的控制。因此,没有针对Wake-on-LAN的具体版本和功能更新。Wake-on-LAN的基本原理是通过发......
  • 超低功耗待机血压计语音IC方案,智能提示NV080C-S8
    随着我国步入21世纪的步伐和改革开放的不断深入,我国医疗水平和人民的生活水平不断提高,致使我国已经成为了全球老龄化为严重的国家,老年人占据的比重越来越大,一些常见的却不容易治愈的老年性疾病的预防工作已成为现今确保老年人生活质量的重要的举措。高血压位列老年人常见病发症的“......
  • DPU54——低功耗4口全速USB集线器芯片
    DPU54是一款高性能、低功耗4口全速USB1.1HUB控制器,上行端口兼容全速12MHz模式,4个下行端口兼容全速12MHz、低速1.5MHz两种模式。DPU54采用状态机单事务处理架构,而非单片机架构,多个事务缓冲区,这样减小了芯片的系统响应时间,用最少的硬件资源实现了USB1.1全速传输。 01主要特性......
  • 【解决方法】按键精灵 实现 狂野飙车9 自动领取每日广告卡牌包 (1)
    环境:工具:手机/安卓模拟器,按键精灵手机助手系统版本:android10问题描述:描述:通过编程实现自动领取每日广告卡牌包,分享思路和使用到的代码,并进行解析。本文章仅仅只是个人学习所用,记录并复习所用的知识,并未对软件进行非法篡改和破坏行为。提示:若按照教程还是无法完成操......