PB03串口简单应用

[复制链接]
查看610 | 回复5 | 2024-10-28 16:17:23 | 显示全部楼层 |阅读模式
本帖最后由 东东3 于 2024-10-28 16:35 编辑

PB03共支持2路UART,系统日志打印默认使用UART0(P9、P10),可通过DEBUG_INFO配置关闭或打开。当开启休眠模式后系统进入休眠时,UART信息会丢失,唤醒后需要重新配置。初始化串口主要使用uart_Cfg_t进行配置,距离成员介绍如下图:
屏幕截图 2024-10-28 162025.png
工程中已经给我们配置好了串口0,具体函数为LOG_INIT(),这里一配置串口1为例,可使用除TEST_MODE、P16、P17、P1之外的其他GPIO配置为串口1。
  1. void uart1_init(void)
  2. {
  3.         uart_Cfg_t cfg =
  4.         {
  5.                 .tx_pin = P18,//发送GPIO
  6.                 .rx_pin = P0,//接收GPIO
  7.                 .rts_pin = GPIO_DUMMY,
  8.                 .cts_pin = GPIO_DUMMY,
  9.                 .baudrate = 115200,//波特率
  10.                 .use_fifo = TRUE,
  11.                 .hw_fwctrl = FALSE,
  12.                 .use_tx_buf = FALSE,
  13.                 .parity     = FALSE,
  14.                 .evt_handler =  uart2_data,//串口回调函数
  15.         };
  16.         hal_uart_init(cfg, UART1);//初始化
  17. }
复制代码
初始化配置完成后再编写中断回调函数
  1. static void uart1_data(uart_Evt_t* evt)
  2. {
  3.         if(modbus.reflag==1)  //有数据包正在处理
  4.         return;

  5.         memcpy(modbus.rcbuf,evt->data,evt->len);//将接收数据复制到modbus.rcbuf
  6.         modbus.recount = evt->len;//接受数据长度
  7.         modbus.reflag = 1;//接收数据完毕
  8.        
  9.         //清空缓存区
  10.         for(int i=0;i < evt->len;i++)
  11.                 evt->data[i] = NULL;
  12. }
复制代码
发送函数:hal_uart_send_buff(uint8_t *buff,uint16_t len)
uint8_t*  buf  需要发送的数据
uint16_t  len  需要发送的数据长度
Tx 发送数据,如果为同步模式,函数阻塞,发送完成或者发送超时返回,如果为异步模式,函数非阻塞,数据传输完成之后通过回调函数抛出UART_EVT_TYPE_TX_COMPLETED事件。

回复

使用道具 举报

爱笑 | 2024-10-28 16:21:41 | 显示全部楼层
内容是还没填充上去吗?
用心做好保姆工作
回复 支持 反对

使用道具 举报

东东3 | 2024-10-28 16:37:45 | 显示全部楼层
爱笑 发表于 2024-10-28 16:21
内容是还没填充上去吗?

发布再编辑方便传图片
回复 支持 反对

使用道具 举报

爱笑 | 2024-10-28 17:48:30 | 显示全部楼层
不错不错,继续更新!
用心做好保姆工作
回复 支持 反对

使用道具 举报

iiv | 2024-10-28 20:09:23 | 显示全部楼层
学习一哈
回复

使用道具 举报

大猫的鱼 | 2024-10-29 11:31:03 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则