|
楼主 |
发表于 2010-5-26 20:34:23
|
显示全部楼层
楼上的朋友,谢谢你回复,你说的情况我注意到了,关键是我把其他串口相关任务都屏蔽了,只留串口1还是只能收到部分数据就
退出中断了,真是奇怪之极。所以我开始怀疑我的初始化代码,我把代码贴出来,希望得到大家提点意见。需要说明的是串口1是
全功能串口,我初始化的时候我配置成普通串口在用,以下是这4个串口初始化的代码
/*
*********************************************************************************************************
*
* Added by Xiongpinghai, 3/27/2010. $ Multi-serial can be INIT
*
*********************************************************************************************************
*/
void UART_InitTarget (INT32U baud_rate, INT8U uart_x)
{
INT16U div;
INT8U divlo;
INT8U divhi;
INT32U pclk_freq;
pclk_freq = BSP_PM_PerClkFreqGet(BSP_PM_PER_NBR_UART0);
div = (INT16U)(((2 * pclk_freq / 16 / baud_rate) + 1) / 2);
divlo = div & 0x00FF;
divhi = (div >> 8) & 0x00FF;
switch (uart_x)
{
#if (LPC17_CFG_UART0_EN == DEF_ENABLED)
case LPC17_UART_0:
BSP_PM_PerClkEn(BSP_PM_PER_NBR_UART0);
BSP_GPIO_Cfg(BSP_GPIO_PORT0_FAST,
USER_SER_U0_PINS,
BSP_GPIO_OPT_FNCT_2);
U0LCR = DEF_BIT_07;
U0DLL = divlo;
U0DLM = divhi;
U0LCR = 0x03;
U0IER = 0x00;
U0FDR = 0x00;
U0FCR = 0x01;
BSP_IntVectSet((INT8U )BSP_INT_SRC_NBR_UART0,
(CPU_FNCT_VOID)UART0_ISR_Handler);
BSP_IntEn(BSP_INT_SRC_NBR_UART0);
break;
#endif
#if (LPC17_CFG_UART1_EN == DEF_ENABLED)
case LPC17_UART_1:
BSP_PM_PerClkEn(BSP_PM_PER_NBR_UART1);
BSP_GPIO_Cfg(BSP_GPIO_PORT0_FAST,
USER_SER_U1_PINS,
BSP_GPIO_OPT_FNCT_2);
U1LCR = DEF_BIT_07;
U1DLL = divlo;
U1DLM = divhi;
U1LCR = 0x03;
U1IER = 0x00;
U1FDR = 0x00;
U1FCR = 0x01;
BSP_IntVectSet((INT8U )BSP_INT_SRC_NBR_UART1,
(CPU_FNCT_VOID)UART1_ISR_Handler);
BSP_IntEn(BSP_INT_SRC_NBR_UART1);
break;
#endif
#if (LPC17_CFG_UART2_EN == DEF_ENABLED)
case LPC17_UART_2:
BSP_PM_PerClkEn(BSP_PM_PER_NBR_UART2);
BSP_GPIO_Cfg(BSP_GPIO_PORT0_FAST,
USER_SER_U2_PINS,
BSP_GPIO_OPT_FNCT_2);
U2LCR = DEF_BIT_07;
U2DLL = divlo;
U2DLM = divhi;
U2LCR = 0x03;
U2IER = 0x00;
U2FDR = 0x00;
U2FCR = 0x01;
BSP_IntVectSet((INT8U )BSP_INT_SRC_NBR_UART2,
(CPU_FNCT_VOID)UART2_ISR_Handler);
BSP_IntEn(BSP_INT_SRC_NBR_UART2);
break;
#endif
#if (LPC17_CFG_UART3_EN == DEF_ENABLED)
case LPC17_UART_3:
BSP_PM_PerClkEn(BSP_PM_PER_NBR_UART3);
BSP_GPIO_Cfg(BSP_GPIO_PORT4_FAST,
USER_SER_U3_PINS,
BSP_GPIO_OPT_FNCT_4);
U3LCR = DEF_BIT_07;
U3DLL = divlo;
U3DLM = divhi;
U3LCR = 0x03;
U3IER = 0x01;
U3FDR = 0x00;
U3FCR = 0x01;
BSP_IntVectSet((INT8U )BSP_INT_SRC_NBR_UART3,
(CPU_FNCT_VOID)UART3_ISR_Handler);
BSP_IntEn(BSP_INT_SRC_NBR_UART3);
break;
#endif
default:
break;
}
} |
|