MTK中断控制器简单记录

void ModulePwronCheck(void)
{
#ifdef TELIT
    GPIO_WriteIO(0, MODULE_PWR_GPIO_ID);
    ModuleRingInit();           //电话短信中断初始化
#if defined(__TELIT_LE910_SUPPORT__)    
    ModulePowerOnDetInit();     //用于诊断模块是否掉电的中断初始化
#endif    
    //ModuleCTSInit();
    L1SM_SleepDisable(mc_sleep_handle);

    if(IsModulePwron())
    {   
        tr_debug("ModulePwron OK!");
#if defined(__TRACKER_PTCRB__) && defined(__PA30_SUPPORT__)
        Module_VbusSwitch(KAL_TRUE);
#endif
   }
    else
        tr_debug("ModulePwron FAIL!");
#endif
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
在中断初始化函数中注册中断
void ModuleRingInit(void)
{
      GPIO_ModeSetup(EXT_MODULE_RING_GPIO_ID, 0);   //工作模式设置为GPIO
      GPIO_InitIO(0, EXT_MODULE_RING_GPIO_ID);      //初始化GPIO的工作方向 0 输入
      module_ring_state = GPIO_ReadIO(EXT_MODULE_RING_GPIO_ID); //读取GPIO脚状态

      EINT_SW_Debounce_Modify(EXT_MODULE_RING_EINT_ID, 10);  //软件去抖(防止电平变化过程中有抖动)
      tr_debug("module_ring_init %d\r\n",module_ring_state);
      EINT_Set_HW_Debounce(EXT_MODULE_RING_EINT_ID, 10);     //硬件去抖   
      EINT_Registration(EXT_MODULE_RING_EINT_ID,KAL_TRUE, !module_ring_state, ModuleRingHisr, KAL_TRUE);    //注册中断 

      GPIO_ModeSetup(EXT_MODULE_RING_GPIO_ID, EXT_MODULE_RING_GPIO_MODE);   //工作模式设置为中断
}
1
2
3
4
5
6
7
8
9
10
11
12
13
中断响应函数
//中断响应函数
void ModuleRingHisr(void)
{
    ilm_struct *  ring_ilm;
        
    module_ring_state = GPIO_ReadIO(EXT_MODULE_RING_GPIO_ID);        
    tr_debug(" module ring_HISR %d\r\n",module_ring_state);

    if(!module_ring_state)
    {
        #if defined(__L200_SUPPORT__)
            if(GetTelitCallStatus() != TELIT_CALL_STATUS_CONNECTED)
            {
                ModuleCodecOn(2);    
                AW8736SettingModeOneOrClose(KAL_FALSE);
            }
        #endif
        
        tr_debug(" module ring_HISR -SleepDisable");
        L1SM_SleepDisable(mc_sleep_handle);         //
            
        ModuleSlpModeSetting(KAL_FALSE);
        ModuleStartEnterSleepTimer(20);
    }
    else
    {
        tr_debug(" module ring_HISR -SleepEnable");
        //L1SM_SleepEnable(mc_sleep_handle);        //睡眠使能
    }
    EINT_Set_Polarity(EXT_MODULE_RING_EINT_ID, !module_ring_state);            //设置中断方式(反向设置中断触发方式)

}
--------------------- 
作者:半个月儿上来 
来源:CSDN 
原文:https://blog.csdn.net/qq_17017545/article/details/83026482 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值