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);
}
相关文章
|
芯片
MTK平台驱动调试指南 GPIO设置篇
MTK平台驱动调试指南 GPIO设置篇
964 1
|
9月前
|
安全 Ubuntu Linux
Linux重要知识点
掌握以上Linux重要知识点可以帮助你高效地使用和管理Linux系统。这些知识不仅在日常使用中非常重要,而且在系统维护、网络配置和安全管理等方面也非常关键。通过不断实践和深入学习,可以进一步提高对Linux系统的理解和掌握。
184 22
|
11月前
|
Java Linux Android开发
深入探索Android系统架构:从Linux内核到应用层
本文将带领读者深入了解Android操作系统的复杂架构,从其基于Linux的内核到丰富多彩的应用层。我们将探讨Android的各个关键组件,包括硬件抽象层(HAL)、运行时环境、以及核心库等,揭示它们如何协同工作以支持广泛的设备和应用。通过本文,您将对Android系统的工作原理有一个全面的认识,理解其如何平衡开放性与安全性,以及如何在多样化的设备上提供一致的用户体验。
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
478 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
Linux iOS开发 MacOS
Matplotlib 教程 之 Matplotlib 中文显示 2
Matplotlib 中文显示教程,介绍如何通过设置 Matplotlib 字体参数或下载支持中文的字体库来实现中文显示。适用于 Windows、Linux 和 macOS 系统,确保图表中文本正确呈现。
275 0
|
Java Android开发
android 长按power键的触发时间
android 长按power键的触发时间
450 0
|
Android开发
Android Mediatek USB 核心驱动中增加设备 PID/VID 检查
Android Mediatek USB 核心驱动中增加设备 PID/VID 检查
413 0
|
编解码 调度 Android开发
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
1651 0
|
前端开发 NoSQL Java
1、若依(前后端分离)框架的使用
1、若依(前后端分离)框架的使用
1227 0
|
存储 Linux 数据处理
【阿里云】对象存储 OSS 产品评测
对象存储服务的全流程使用体验,带你由浅入深玩转 OSS 的日常操作
4740 4
【阿里云】对象存储 OSS 产品评测