LPC2378上用ST16C2550扩展串口使用GPIO中断

LPC2378外部中断管脚P2.10~P2.13可用为外部中断,也可以用为GPIO中断。

在LPC2378上用ST16C2550芯片扩展串口时,两种中断都可以用,但看LPC2378文档时,外部中断那块讲的比较晦涩,GPIO中断倒是很明白,我就用GPIO中断去操作,非常好,中断收发通信成功。代码如下,供大家参考:

 /*********************中断处理函数************************/

void ST16_Handler (void) __irq                
{
    BYTE status;
    IENABLE;    /* handles nested interrupt */
    status = EUART_ADDR_ISR;
    
    if ( (status&0x06) == 0x04 ) /* 接收数据 */
    {
   while( EUART_ADDR_LSR & 0x01 )/* Receive Data Ready */
{
    ST16_Buffer[ST16_Count] = EUART_ADDR_RHR;
    ST16_Count++;
    if ( ST16_Count == BUFSIZE )
    {
ST16_Count = 0;
    }
}
    }
 
    else if ( (status&0x06) == 0x02 ) /* 发送数据 */
    {
if ( EUART_ADDR_LSR & 0x20 )
{
    ST16_TxEmpty = 1;

              /********此处可添加发送数据处理程序********/
}
else
{
    ST16_TxEmpty = 0;
}
    }   
    IDISABLE;
IO2_INT_CLR = 1<<10;/*清除IO中断*/
    VICVectAddr = 0x00000000; /* 清除向量中断 */

}

/*******************GPIO中断初始化***********************/

int main (void) 

   EMCInit();
   ST16_Init(115200);
   /*中断设置*/
   IO2_INT_CLR=0xffffffff;      
   IO2_INT_EN_R=1<<10;   //GPIO上升沿中断,中断管脚连接到P2.10
   VICVectCntl17=0x00000000; //中断优先级
   VICVectAddr17=(unsigned)ST16_Handler; //中断向量地址

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值