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);
}
相关文章
|
4月前
|
编解码 数据格式
IMX6ULL开发板spi OLED驱动
【8月更文挑战第24天】本文档介绍在IMX6ULL开发板上实现SPI接口OLED显示器驱动的步骤。首先需正确连接OLED至开发板的SPI接口,包括时钟(SCLK)、数据(MOSI)及片选(CS)等线路。理解SPI协议与OLED规格也很关键:SPI为同步串行通信,涉及主从设备交互;OLED参数如分辨率、颜色深度等须明确。接下来配置IMX6ULL的SPI控制器,通过设备树设定时钟频率、数据宽度等参数,并加载内核驱动。最后编写驱动程序,初始化SPI设备、发送控制命令与数据以完成OLED初始化,并实现文本或图像的显示功能。
|
5月前
STM32CubeMX 外部中断
STM32CubeMX 外部中断
179 0
|
存储 传感器 编解码
STM32外设系列—BH1750
本文详细介绍了BH1750的特点,原理图,IIC通信协议。给出了BH1750程序设计,能够实时获取周围环境光照强度。最后,给出了两种拓展应用,并说明了实现思路。
1324 0
STM32外设系列—BH1750
|
7月前
|
传感器 存储
STM32--EXTI外部中断
STM32--EXTI外部中断
|
芯片
STM32F103C8 EXTI外部中断
STM32F103C8 EXTI外部中断
116 0
STM32 EXTI外部中断
外部中断 是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去. 外部中断 是指由 外部设备 发出的 中断请求 ,如键盘、鼠标、计时器、网络数据等。外部中断可以提高系统的效率,使系统能够有效地处理外部设备发出的中断请求,从而改善系统的性能。
161 0
STM32 EXTI外部中断
STM32_NVIC寄存器详解
STM32_NVIC寄存器详解
335 0
|
内存技术
STM32CubeMX外部中断
STM32CubeMX外部中断
171 0
|
编译器
STM32的HAL库开发系列 - GPIO中断/外部中断EXTI
STM32的HAL库开发系列 - GPIO中断/外部中断EXTI
699 0