[MCU] 【AT32F421测评】+串行通讯测试

jinglixixi   2021-5-3 16:58 楼主

在AT32F421的例程中,提供了多种串口通讯的示例,这就为用户的各种需求带来了极大的便利。

这里仅举2个示例来测试,一个是进行片内2个串口间的数据通讯,另一个则是向外发送信息,并由电脑来接收显示。

1. 片内的串口通讯

开发板的串口1所使用的引脚为:

Tx--- PA.9

Rx---PA.10

串口2所使用的引脚为:

Tx--- PA. 2

Rx---PA. 3

由于是进行片内的串口通讯,故2个串口间的连接应交叉连接。在程序下载后,其运行效果如图1所示(3个LED灯被点亮),若断开测试连接,则如图2所示(3个LED熄灭)。

image-20210503165804-1.png

图1 正常效果

 

image-20210503165804-2.png

图2 异常效果

 

实现该功能的主体程序为:

  while(TxCounter < TxBufferSize)

  {

    USART_SendData(USART1, TxBuffer[TxCounter++]);

    while(USART_GetFlagStatus(USART1, USART_FLAG_TDE) == RESET);

    while(USART_GetFlagStatus(USART2, USART_FLAG_RDNE) == RESET);

    RxBuffer[RxCounter++] = (USART_ReceiveData(USART2) & 0x7F);

  }

  TransferStatus = Buffercmp(TxBuffer, RxBuffer, TxBufferSize);

  if(TransferStatus == PASSED)

  {

    AT32_LEDn_ON(LED2);

    AT32_LEDn_ON(LED3);

    AT32_LEDn_ON(LED4);

  }

 

就是将存放在数组TxBuffer的内容由串口1发送给串口2,若收发一致则点亮3个LED灯。

uint8_t TxBuffer[] = "Buffer Send from USART1 to USART2 using Flags";

值得一提还有通讯的波特率,竟达到230400bps,如果用一般的串口助手,恐怕都找不到这个值。

USART_InitStructure.USART_BaudRate = 230400;

 

2. 向外发送数据

在进行该测试时,需使用USB转串口模块,并与串口1的引脚交叉连接,见图3所示。

image-20210503165804-3.png

图3 测试连接

 

这次的通讯波特率就不同于片内通讯了,不过也不低,为115200bps,其执行效果见图4所示。

image-20210503165804-4.png

图4 测试效果

 

其主程序极为简单,只有区区几行语句。

int main(void)

{    

  UART_Print_Init(115200);

  printf("\n\rUSART Printf Example: retarget the C library printf function to the USART\n\r");

  while (1);

}

 

本帖最后由 jinglixixi 于 2021-5-3 17:00 编辑

回复评论 (4)

串口测试的主程序本来就不多

很顺利完成串口测试了

点赞  2021-5-4 21:10

谢谢分享,期待后续!

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-5-6 16:19

谢谢楼主的分享,期待后续更新,,,,,,,

点赞  2021-5-6 17:46

谢谢分享,期待后续!

点赞  2021-5-7 10:26
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复