我是靠谱客的博主 无情糖豆,最近开发中收集的这篇文章主要介绍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; //中断向量地址

}

最后

以上就是无情糖豆为你收集整理的LPC2378上用ST16C2550扩展串口使用GPIO中断的全部内容,希望文章能够帮你解决LPC2378上用ST16C2550扩展串口使用GPIO中断所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部