例子:添加一个按键,按下时响应中断函数,这里的功能为按下后系统进入睡眠。
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;标签:EINT,NO,中断,MTK,state,sleep,eint,SLEEP,外部 From: https://blog.51cto.com/u_15070324/6088360
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);
}