本人刚开始学习stm32,从串口的例程开始。 看它介绍说是全双工的,实际一看就是单双工的嘛:因为共用一个寄存器来发送、接收,这样带来很大问题。 实际中,测试方法是:采用中断方式,将接收到的数据立即发送回去。 代码如下: if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { // Read one byte from the receive data register temp = USART_ReceiveData(USART2); USART_SendData(USART2,temp); while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); { ; } } 实际中发现,每次发送一个字节给STM32的话,能正确执行。但是如果发送一串(用串口调试助手),则回来的全是乱码了。 再次测试,用一个数组将接收到的数据存起来,而不发送,则看到接收到的一串数据都是对的。 程序代码细节使用的是lib2.03的提供。 之前用过MSP430或LPC2xxx,做这样的程序都没有问题,这次stm32让人吃惊。请问这是我的程序问题还是stm32固有的? |