这个我懂了,看了眼接到数的时候D寄存器里就会有显示,但是把这个数赋值给C又有什么用呢?
而且我在串口初始化之后加上了
UART0_C2|=UART_C2_RIE_MASK;
UART4_C2|=UART_C2_RIE_MASK;
UART5_C2|=UART_C2_RIE_MASK;
在主函数前面也加上了三个串口的中断服务函数:
/*UART0*/
static volatile unsigned char c;
void UART0_RX_TX_IRQHandler(void)
{
// UART_DRV_IRQHandler(0);
if (UART0_S1&UART_S1_RDRF_MASK)
{
c = UART0_D;
}
}
/*UART4*/
static volatile unsigned char c4;
void UART4_RX_TX_IRQHandler(void)
{
// UART_DRV_IRQHandler(0);
if (UART4_S1&UART_S1_RDRF_MASK)
{
c4 = UART4_D;
}
}
/*UART5*/
static volatile unsigned char c5;
void UART5_RX_TX_IRQHandler(void)
{
// UART_DRV_IRQHandler(0);
if (UART5_S1&UART_S1_RDRF_MASK)
{
c5 = UART5_D;
}
}
然后从串口4和5手动发数据,从串口0,也就是USB那根线连在电脑上的串口助手调试,仍然不能做到预期效果,即做不到某个串口收到数据后在屏幕上显示。
请问我以上贴的修改的代码哪里出问题了么?而且我发现D寄存器明明收到数据,但是receiveBuff里却没有东西的情况,请问该怎么解决? |