打印
[STM32U3]

【每周分享】【STM32U385RG 测评】+串口发送、接收数据

[复制链接]
248|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 LiuDW091 于 2025-7-17 21:08 编辑

#有奖活动# #申请原创# #每日话题# #申请开发板#
上篇串口通讯只是打印叔数据,这篇更进一步,将串口发送什么,就打印什么出来
一、查看原理图,确定自己需要的串口信息

还是一样的串口1
二、开始配置软件
     
上面基础配置结束之后,增加DMA以及NVIC配置
  
时钟可以根据自己情况,去调整,也可以默认。
到此配置结束,开始生成代码
三、代码调试
1、usart.c中增加如下代码
#include <stdio.h>
/* USER CODE BEGIN 1 */
#ifdef _GNUC_
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE

{

HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//阻塞方式打印

return ch;

}
/* USER CODE END 1 */



2、main.c中增加如下代码
#include <stdio.h>
#define RXBUFFERSIZE 256 //最大接收字节数
  char RxBuffer[RXBUFFERSIZE]; //接收数据

   uint8_t aRxBuffer; //接收中断缓冲

        uint8_t Uart8_Rx_Cnt = 0; //接收缓冲计数
/* USER CODE END Includes */




  HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //启动串口中断




/* USER CODE BEGIN 0 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  {

  /* 防止未使用的参数编译警告 */

  UNUSED(huart);

  /* 注意: 需要回调时,不应修改该函数、

     可在用户文件中实现 HAL_UART_TxCpltCallback */
  if(Uart8_Rx_Cnt >= 255) //溢出判断
  {
  Uart8_Rx_Cnt = 0;
  memset(RxBuffer,0x00,sizeof(RxBuffer));
  HAL_UART_Transmit(&huart1, (uint8_t *)"数据溢出", 10,0xFFFF);
  }
  else
  {
  RxBuffer[Uart8_Rx_Cnt++] = aRxBuffer;   //接收数据转存
  if((RxBuffer[Uart8_Rx_Cnt-1] == 0x0A)&&(RxBuffer[Uart8_Rx_Cnt-2] == 0x0D)) //判断结束位
  {
      printf("USART1收到的数据:\n\r");
      HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuffer, Uart8_Rx_Cnt,0xFFFF); //将收到的信息发送出去
      while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);//检测UART发送结束
      Uart8_Rx_Cnt = 0;
      memset(RxBuffer,0x00,sizeof(RxBuffer)); //清空数组
  }
  }
  HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //再开启接收中断
}

/* USER CODE END 0 */


四、运行效果
将程序下载demo板后,打开串口软件,查看效果

  

后续继续努力,争取早日完成测评
代码: 代码Core.zip (22.88 KB)



使用特权

评论回复
沙发
LiuDW091|  楼主 | 2025-7-18 10:53 | 只看该作者

使用特权

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

本版积分规则

16

主题

129

帖子

0

粉丝