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; //中断向量地址
}
上一篇:STM32Cube的时钟配置步骤
下一篇:STM32F1系列单片机硬件设计方法
推荐阅读最新更新时间:2024-03-16 16:22