我在用K10的UART做串行通讯时,遇到以下几个问题,向各位大侠请教:
1. 当程序(通过USBDM)下载到芯片之后,在PC机上用通过串口调试软件和串行接口(与芯片的RS232相连接),对串口发送字符时,发现不成功,但是,将USBDM 调试器与芯片的接口断开时,去可以成功地发送和接受字符,不知道这是什么原因?
2. 我在PC机上给利用串口通讯软件,给UART 发送字符,然后让UART把字符发送回来,但是在调试的过程中发现,返回的过程偶尔会中断,将芯片重启,或者断电都无法解决。不知道这又是什么原因?
3. 我参考别人编写的程序,采用查询方式接受和发送字符的语句如下:
tom = uart0_getchar();
uart0_putchar(tom + 1);
其中uart0_getchar()和uart0_putchar(tom + 1)的函数如下:
unsigned char uart0_getchar (void)
{
/* Wait until character has been received */
while (!(UART0_S1 & UART_S1_RDRF_MASK));
/* Return the 8-bit data from the receiver */
return UART0_D;
}
void uart0_putchar (unsigned char data)
{
/* Wait until space is available in the FIFO */
while(!(UART0_S1 & UART_S1_TDRE_MASK));
/* Send the character */
UART0_D = data;
}
我的问题时,为什么接受到的字符 tom ( uart0_getchar();)
后,发送的字符却为 tom +1 (uart0_putchar(tom + 1);)。
谢谢!