MTK之外部中断篇

简介: MTK之外部中断篇

例子:添加一个按键,按下时响应中断函数,这里的功能为按下后系统进入睡眠。

1)在interface\hwdrv\Eint.h的eint_channel_type中添加

sleep_eint_chann

2)在custom\drv\misc_drv\CUSTOMER_BB\Eint_def.c中添加

extern const kal_uint8 SLEEP_EINT_NO;

kal_uint8    eint_sleep_handler = 0xFF;

注:一般都会有__CUST_NEW__这个宏定义,所以应在该宏条件下添加,最好先确认编译条件中是否有这个宏。

在函数custom_eint_get_channel的switch语句中添加

      case sleep_eint_chann:

             return ((kal_uint8)SLEEP_EINT_NO);

3)在custom\drv\misc_drv\CUSTOMER_BB\Eint_var.c中设定中断号,这里设置为EINT2

const unsigned char SLEEP_EINT_NO = 2;

4)在custom\drv\misc_drv\CUSTOMER_BB\auxmain.c的aux_task_main函数中注册中断

eint_sleep_handler = L1SM_GetHandle(); //获取睡眠控制句柄
      L1SM_SleepDisable(eint_sleep_handler); //Disable睡眠
      //注册睡眠模式处理外部中断
      EINT_Registration(SLEEP_EINT_NO,
                                    KAL_TRUE,
                                    sleep_state,
                                    SLEEP_EINT_HISR,
                                    KAL_FALSE);

在该文件中实现中断函数:

kal_bool                 sleep_state = LEVEL_LOW;
extern const kal_uint8  SLEEP_EINT_NO;//外部中断号
void SLEEP_EINT_HISR(void);//中断函数
void SLEEP_EINT_HISR(void)
{
              if(sleep_state == LEVEL_HIGH)
              {
          L1SM_SleepDisable(eint_sleep_handler);
              }
              else
              {
                     L1SM_SleepEnable(eint_sleep_handler); //睡眠使能
              }
              sleep_state = !sleep_state;
              EINT_Set_Polarity(SLEEP_EINT_NO, sleep_state);//设置中断方式
              EINT_UnMask(SLEEP_EINT_NO);
}
相关文章
|
9月前
|
安全 Ubuntu Linux
Linux重要知识点
掌握以上Linux重要知识点可以帮助你高效地使用和管理Linux系统。这些知识不仅在日常使用中非常重要,而且在系统维护、网络配置和安全管理等方面也非常关键。通过不断实践和深入学习,可以进一步提高对Linux系统的理解和掌握。
172 22
|
11月前
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
芯片
MTK平台驱动调试指南 GPIO设置篇
MTK平台驱动调试指南 GPIO设置篇
925 1
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
454 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
Java Android开发
android 长按power键的触发时间
android 长按power键的触发时间
418 0
|
编解码 调度 Android开发
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
1600 0
|
Web App开发 前端开发 安全
flex布局轻而易举实现页面布局;超详细解析轻松掌握
flex布局轻而易举实现页面布局;超详细解析轻松掌握
238 0
|
前端开发 NoSQL Java
1、若依(前后端分离)框架的使用
1、若依(前后端分离)框架的使用
1175 0
|
存储 Linux 数据处理
【阿里云】对象存储 OSS 产品评测
对象存储服务的全流程使用体验,带你由浅入深玩转 OSS 的日常操作
4691 4
【阿里云】对象存储 OSS 产品评测
|
机器学习/深度学习 JSON 文字识别