MT2503 外部中断

中断引脚配置
void mt2503_eint15_init(void)
{
    /*-------------------------------------------------------------------------*/
    /* Local Variables                                                         */
    /*-------------------------------------------------------------------------*/
    DCL_HANDLE gpio_handle;

    /*-------------------------------------------------------------------------*/
    /* Code Body                                                               */
    /*-------------------------------------------------------------------------*/
    gpio_handle = DclGPIO_Open(DCL_GPIO, BMI160_INT_PINNUM);
    DclGPIO_Control(gpio_handle, GPIO_CMD_SET_MODE_4, NULL);
    DclGPIO_Control(gpio_handle, GPIO_CMD_SET_DIR_IN, NULL);
    DclGPIO_Control(gpio_handle, GPIO_CMD_ENABLE_PULL, NULL);
    DclGPIO_Control(gpio_handle, GPIO_CMD_SET_PULL_LOW, NULL);

    EINT_Mask(BMI160_INT_CHANN);
    EINT_Set_HW_Debounce(BMI160_INT_CHANN, 10);
    EINT_SW_Debounce_Modify(BMI160_INT_CHANN, 10);
    EINT_Set_Sensitivity(BMI160_INT_CHANN, LEVEL_SENSITIVE);
    EINT_Registration(BMI160_INT_CHANN, KAL_TRUE, KAL_TRUE, Bmi160EintCallBack, KAL_TRUE);
    EINT_UnMask(BMI160_INT_CHANN);
}

前面一部分是将IO配置EINT模式,为什么MODE_4是EINT呢,看一下drvgen工具里的配置就知道了。冒号前面是4,所以选MODE_4。


后一部分是配置中断的参数及注册终端处理函数。

  • BMI160_INT_CHANN是中断号,也就是EINT15里的15
  • EINT_Set_Sensitivity设置中断触发条件,这里是电平触发。
  • EINT_Registration注册中断处理函数,其原型为void EINT_Registration(kal_uint8 eintno, kal_bool Dbounce_En, kal_bool ACT_Polarity, void (reg_hisr)(void), kal_bool auto_umask)ACT_Polarity为触发极性,KAL_TRUE为高,反之为低。
中断处理函数
void Bmi160EintCallBack(void)
{
    /*-------------------------------------------------------------------------*/
    /* Local Variables                                                         */
    /*-------------------------------------------------------------------------*/

    /*-------------------------------------------------------------------------*/
    /* Code Body                                                               */
    /*-------------------------------------------------------------------------*/
    EINT_Mask(BMI160_INT_CHANN);
    
    /* 增加处理代码 */

    EINT_UnMask(BMI160_INT_CHANN);
}

你可能感兴趣的:(MT2503 外部中断)