[APM32F4] 【APM32F411V Tiny Board测评】-03-串口测试

[复制链接]
 楼主| shenxiaolin 发表于 2024-5-21 08:33 | 显示全部楼层 |阅读模式
本帖最后由 shenxiaolin 于 2024-5-21 08:34 编辑

哎呀,今天终于更新了,昨天的时候遇到点问题,还是网友们帮忙找的问题,今天就直接上来说一下这个串口的事情哈,串口做为一个常用的通信接口,扮演着非常重要的角色,是对外信息的一个常见接口,APM32的开发板上是有两个对外串口可以使用的,串口一和串口2,通过板子上的跳线就可以实现串口介入DAP的选择。我们这里就简单一点,直接就上代码吧。
  1. #include "DRV_UART.h"

  2. #include "bsp_delay.h"




  3. void USART_Init(void)
  4. {
  5.         
  6.         
  7.             GPIO_Config_T GPIO_configStruct;
  8.             USART_Config_T usartConfigStruct;

  9.         
  10.      
  11.              RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOA);
  12.                    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_USART1);
  13.             
  14.              GPIO_ConfigStructInit(&GPIO_configStruct);
  15.              USART_ConfigStructInit(&usartConfigStruct);//UART恢复默认
  16.         
  17.         
  18.                         /* Connect PXx to USARTx_Tx */
  19.                         GPIO_ConfigPinAF(GPIOA,GPIO_PIN_SOURCE_9 , GPIO_AF_USART1);
  20.                         /* Connect PXx to USARTx_Rx */
  21.                         GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_10, GPIO_AF_USART1);

  22.                         /* Configure USART Tx as alternate function push-pull */
  23.                         GPIO_configStruct.mode = GPIO_MODE_AF;
  24.             GPIO_configStruct.otype= GPIO_OTYPE_PP;
  25.             GPIO_configStruct.pupd = GPIO_PUPD_UP;
  26.                         GPIO_configStruct.pin  = GPIO_PIN_9;
  27.                         GPIO_configStruct.speed = GPIO_SPEED_50MHz;
  28.                         GPIO_Config(GPIOA, &GPIO_configStruct);

  29.                         /* Configure USART Rx as input floating */
  30.                         GPIO_configStruct.mode = GPIO_MODE_AF;
  31.                         GPIO_configStruct.pin = GPIO_PIN_10;
  32.                         GPIO_configStruct.pupd = GPIO_PUPD_UP;
  33.                         GPIO_configStruct.speed = GPIO_SPEED_50MHz;
  34.                         GPIO_Config(GPIOA, &GPIO_configStruct);

  35.         
  36.   
  37.     usartConfigStruct.baudRate = 115200;
  38.     usartConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
  39.     usartConfigStruct.mode = USART_MODE_TX_RX;
  40.     usartConfigStruct.parity = USART_PARITY_NONE;
  41.     usartConfigStruct.stopBits = USART_STOP_BIT_1;
  42.     usartConfigStruct.wordLength = USART_WORD_LEN_8B;
  43.         /* USART configuration */
  44.     USART_Config(USART1,&usartConfigStruct);
  45.     USART_Enable(USART1);
  46.     Delay_ms(50);
  47.     /* Enable USART1 RXBNE interrput */
  48.     USART_EnableInterrupt(USART1, USART_INT_RXBNE);
  49.     USART_ClearStatusFlag(USART1, USART_FLAG_RXBNE);
  50.     NVIC_EnableIRQRequest(USART1_IRQn,1,0);
  51.    
  52.         
  53. }




  54. void USART1_SendData(uint8_t *dat, uint32_t count)
  55. {
  56.     while(count--)
  57.     {
  58.         while(USART_ReadStatusFlag(USART1, USART_FLAG_TXBE) == RESET);
  59.         USART_TxData(USART1, *dat++);
  60.     }
  61. }



  62. void  USART1_IRQHandler(void)
  63. {
  64.     /* USART1 Recieve Data */
  65.     if(USART_ReadStatusFlag(USART1, USART_FLAG_RXBNE) == SET)
  66.     {
  67.        USART_TxData( USART1,(uint8_t)USART_RxData(USART1));
  68.                          USART_ClearStatusFlag(USART1, USART_FLAG_RXBNE);
  69.     }
  70. }





  71. void UART_Test(void)
  72. {
  73.                 unsigned char Data[]={"This is APM32F411 USART Demo!\r\n"};
  74.                 USART1_SendData(Data,31);
  75. }








  76. 我们这里测试的是直接上电之后先发送一个AMP的串口例程,然后中断接收到了数据之后直接返回传送回来。





1.png

szt1993 发表于 2024-5-23 17:03 | 显示全部楼层
串口调试以及发送数据非常清晰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:运达电气-产品经理
简介:毕业于西南科技大学,从事MCU、MPU开发工作近8年,熟悉嵌入式软硬件开发流程,产品管理以及现场项目管理。

94

主题

1351

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:运达电气-产品经理
简介:毕业于西南科技大学,从事MCU、MPU开发工作近8年,熟悉嵌入式软硬件开发流程,产品管理以及现场项目管理。

94

主题

1351

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部