[其他ST产品] 【STM32G4评测+01+MDK+Stm32cube搞定多串口】

[复制链接]
 楼主| dami 发表于 2021-3-27 17:21 | 显示全部楼层 |阅读模式
本帖最后由 dami 于 2021-3-29 09:46 编辑

【STM32G4评测+01+MDK+Stm32cube实现多串口】
1,打开Stm32cube,升级到最新的6.20(吃硬盘)。
2,配置板子为nucleo-STM32G491RE。
3,配置串口3,4,(因为是选的板子所以串口一默认打开的,ld2也是配置好了的)。
    设置为接收中断,发送不中断。波特率115200.
4,生成代码。
5,用mdk打开。
6,工程中startup_stm32g491xx.s没加上所以编译有错。加上。
7,实验目标:串口3,4,定时发送数据,串口3,4收到数据都送到串口1     把串口3或者4的RX和TX连起来就可以通过串口1看到CPU发送的数据了。
8,增加接收处理语句。  
  1. //main.c 前面加
  2. uint8_t uart3sv[4],uart4sv[4];
  3. uint8_t uart3buf[100],uart4buf[100];
  4. static uint8_t p_uart3=0,p_uart4=0;
  5. static uint16_t uart3_sent_tim=0,uart4_sent_tim=0;
  6. void delayms(uint32_t x)
  7. {
  8.         for(uint32_t i=0;i<x;i++)
  9.         {
  10.                 for(uint32_t j=0;j<50000;j++){};
  11.         }
  12. }
  13. //加串口回调函数
  14. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  15. {
  16.         if(huart->Instance == USART3)         
  17.   {
  18.                 uart3buf[0]=uart3sv[0];
  19.                 HAL_UART_Receive_IT(&huart3,&uart3sv[0],1);
  20.                 HAL_UART_Transmit(&hlpuart1,uart3buf,1,0xffff);
  21.         }
  22.   if(huart->Instance == UART4)         
  23.   {
  24.                 uart4buf[0]=uart4sv[0];
  25.                 HAL_UART_Receive_IT(&huart4,&uart4sv[0],1);
  26.                 HAL_UART_Transmit(&hlpuart1,uart4buf,1,0xffff);
  27.         }
  28. }
  29. //main.c的main函数中加
  30. /* USER CODE BEGIN 2 */
  31.         HAL_UART_Receive_IT(&huart3,&uart3sv[0],1);
  32.         HAL_UART_Receive_IT(&huart4,&uart4sv[0],1);
  33.         uint8_t buf_T[]={"uart3 uart3 :\n\r"};
  34.         uint8_t buf_H[]={"uart4 uart4 :\n\r"};
  35.         uint8_t buf1[200];
  36.   /* USER CODE END 2 */

  37.   /* Infinite loop */
  38.   /* USER CODE BEGIN WHILE */
  39.   while (1)
  40.   {
  41.                 HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
  42.                 delayms(300);
  43.                 HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
  44.     delayms(300);
  45.                 HAL_UART_Transmit(&huart3,buf_T,sizeof(buf_T),0xffff);
  46.                  delayms(30);
  47.           HAL_UART_Transmit(&huart4,buf_H,sizeof(buf_H),0xffff);
  48.           delayms(30);
  49.     /* USER CODE END WHILE */   
  50.     /* USER CODE BEGIN 3 */
  51.   }
9,编译调试。
10,用putty观察串口1输出的数据。
如果连接了串口3的RX,TX 串口1就会打印出 uart3 uart3....
如果连接了串口4的RX,TX 串口1就会打印出 uart4 uart4....

不知道为啥贴不了图片。只好作罢。 STM32G491-uart.rar (679.91 KB, 下载次数: 4)

                               ------------------------完-----------------------------







caizhiwei 发表于 2021-3-28 13:09 | 显示全部楼层
楼主能把工程附上来吗?我昨天串口中断接收搞了半天没搞定,想借鉴一下~

评论

上传了  发表于 2021-3-29 09:47
 楼主| dami 发表于 2021-3-28 20:06 | 显示全部楼层
本帖最后由 dami 于 2021-3-29 09:46 编辑

上传了
564956060711fb71ed.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

1077

帖子

6

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