我是第一次使用新唐片子,高手不要吐糟哦。
我在使用简单的uart实验,主程序中配置串口,然后使能中断。
主程序如下:
int main (void)
{
SystemInit();
GPIO_Open(GPIOE, GPIO_PMD_PMD6_OUTPUT, GPIO_PMD_PMD6_MASK);
exti_Init();
UART0_Init(115200);
printf(" UART function test \n");
while(1)
{
}
}
串口初始化如下:
void UART0_Init(uint32_t BaudRate)
{
STR_UART_T sParam;
SYS_SelectIPClockSource_1(CLK_CLKSEL1_UART_MASK, CLK_CLKSEL1_UART_HXT); /* 串口时钟为HCLK */
MFP_UART0_TO_PORTB(); /* 设置PB0/PB1为UART接口 */
sParam.u32BaudRate = BaudRate;
sParam.u32cDataBits = DRVUART_DATABITS_8;
sParam.u32cStopBits = DRVUART_STOPBITS_1;
sParam.u32cParity = DRVUART_PARITY_NONE;
sParam.u32cRxTriggerLevel = DRVUART_FIFO_1BYTES;
sParam.u8EnableDiv16 = DISABLE;
UART_Init(UART0,&sParam);
/* 使能相应的中断 */
UART_EnableInt(UART0,( DRVUART_THREINT | DRVUART_RDAINT));
}
现在的情况是:串口能够进入中断,也能输出东西,但是我理解的是UART_EnableInt(UART0,( DRVUART_THREINT | DRVUART_RDAINT));只是使能串口中断,应该不会影响到主程序中断printf函数,也就是说程序执行完串口初始化后应该执行printf函数(如果没有发生串口中断。)然后进入while中等待中断。可是实际下来printf没有执行,如果把UART_EnableInt 屏蔽了就可以执行。
是不是我的理解不对呢?
|