[其他ST产品]

【STM32G4评测+01+MDK+Stm32cube搞定多串口】

[复制链接]
439|3
手机看帖
扫描二维码
随时随地手机跟帖
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,增加接收处理语句。  
//main.c 前面加
uint8_t uart3sv[4],uart4sv[4];
uint8_t uart3buf[100],uart4buf[100];
static uint8_t p_uart3=0,p_uart4=0;
static uint16_t uart3_sent_tim=0,uart4_sent_tim=0;
void delayms(uint32_t x)
{
        for(uint32_t i=0;i<x;i++)
        {
                for(uint32_t j=0;j<50000;j++){};
        }
}
//加串口回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
        if(huart->Instance == USART3)         
  {
                uart3buf[0]=uart3sv[0];
                HAL_UART_Receive_IT(&huart3,&uart3sv[0],1);
                HAL_UART_Transmit(&hlpuart1,uart3buf,1,0xffff);
        }
  if(huart->Instance == UART4)         
  {
                uart4buf[0]=uart4sv[0];
                HAL_UART_Receive_IT(&huart4,&uart4sv[0],1);
                HAL_UART_Transmit(&hlpuart1,uart4buf,1,0xffff);
        }
}
//main.c的main函数中加
/* USER CODE BEGIN 2 */
        HAL_UART_Receive_IT(&huart3,&uart3sv[0],1);
        HAL_UART_Receive_IT(&huart4,&uart4sv[0],1);
        uint8_t buf_T[]={"uart3 uart3 :\n\r"};
        uint8_t buf_H[]={"uart4 uart4 :\n\r"};
        uint8_t buf1[200];
  /* USER CODE END 2 */

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

不知道为啥贴不了图片。只好作罢。 STM32G491-uart.rar (679.91 KB)

使用特权

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

使用特权

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

上传了
564956060711fb71ed.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

1041

帖子

5

粉丝