请问LPC11系列的IO口怎么设置中断

2019-03-25 20:23发布

我现在想把一根引脚设置为中断源,请问这个要怎么做呢? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
zhaojun_xf
1楼-- · 2019-03-25 23:15
_NXP LPC1000_ /**************************************************************************************
* FunctionName   : GPIOSetInterrupt()
* Description    : 设置管脚中断:0-边沿触发;1-电平触发
* EntryParameter : port num, bit position, sense, single/doube, polarity
* ReturnValue    : None
**************************************************************************************/
void GPIOSetInterrupt(uint8 portNum, uint8 bitPosi, uint8 sense, uint8 single, uint8 event)
{
        if (sense == 0)                      // 触发模式: 0-边沿触发;1-电平触发
        {
            LPC_GPIO[portNum]->IS &= ~(0x1<<bitPosi);           // 边沿触发
            /* single or double only applies when sense is 0(edge trigger). */
            if (single == 0)                               // 双边沿触设置
                {
                    LPC_GPIO[portNum]->IBE &= ~(0x1<<bitPosi); // 通过寄存器GPIOnlEV控制管脚PIOn_x上的中断
            }
                else
                {                         
                    LPC_GPIO[portNum]->IBE |= (0x1<<bitPosi);  // 双边沿触发
                }
        }
        else
        {
            LPC_GPIO[portNum]->IS |= (0x1<<bitPosi);           // 电平触发
        }

        if (event == 0)                                                // 触发电平设置
        {
            LPC_GPIO[portNum]->IEV &= ~(0x1<<bitPosi);           // 0-低电平/下降沿
        }
        else
        {                       
            LPC_GPIO[portNum]->IEV |= (0x1<<bitPosi);           // 1-高电平/上升沿,
        }
}

一周热门 更多>