最近在wince平台下使用到了外部中断功能,做个记录,使用的是飞思卡尔的IMX515芯片
1、配置管脚为GPIO管脚
DDKIomuxSetPinMux(DDK_IOMUX_PIN_CSI1_D9, DDK_IOMUX_PIN_MUXMODE_ALT3, DDK_IOMUX_PIN_SION_REGULAR);
DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI1_D9, DDK_IOMUX_PAD_SLEW_SLOW, DDK_IOMUX_PAD_DRIVE_NORMAL,
DDK_IOMUX_PAD_OPENDRAIN_DISABLE, DDK_IOMUX_PAD_PULL_UP_100K,
DDK_IOMUX_PAD_HYSTERESIS_ENABLE, DDK_IOMUX_PAD_INMODE_CMOS, DDK_IOMUX_PAD_OUTVOLT_LOWVOLT);
2、配置管脚的中断触发模式,下降沿。
DDKGpioSetConfig(DDK_GPIO_PORT3, 13,DDK_GPIO_DIR_IN,DDK_GPIO_INTR_FALL_EDGE);//DDK_GPIO_INTR_HIGH_LEV
//先清除下中断
DDKGpioClearIntrPin(DDK_GPIO_PORT3, 13);
3、创建中断对应的事件
IntrEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
4、取中断号
irq = IRQ_GPIO3_PIN13;
5、创建系统中断事件
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &irq,
sizeof(DWORD),&m_Intr, sizeof(DWORD), NULL)
InterruptInitialize(m_Max3100Intr, m_h3100IntrEvent, NULL, 0)
KernelIoControl(IOCTL_HAL_ENABLE_WAKE, &m_Max3100Intr,
sizeof(m_Max3100Intr), NULL, 0, NULL);
ResetEvent(m_h3100IntrEvent);