STM32CubeMX | STM32使用HAL库串口收发

2023-05-16

一、串口实现printf

1.hal配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.重定向代码

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
int fputc(int ch, FILE *f)
{
   HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,5,0xffff);//20220113
	//串口重定向,执行任意长度字符发送到串口
//	HAL_UART_Transmit_IT(&huart1,(uint8_t*)&ch,1);
//	HAL_Delay(1);
	return 0;
}

int fgetc(FILE *f)
{
	uint8_t ch;
	//HAL_UART_Receive_IT(&huart1,(uint8_t*)&ch,1);//20220113
	HAL_UART_Receive(&huart1,(uint8_t*)&ch,1,5,0xffff);//20220113
	
	return ch;
}

二、串口2中断收发

配置同上
在这里插入图片描述

1.l轮循环方式发送

uint8_t uart3_txbuf[] = "UART3 Test\r\n";
 HAL_UART_Transmit(&huart3, uart3_txbuf,sizeof(uart3_txbuf),100);	

2.中断接收

初始化后先执行一次

HAL_UART_Receive_IT(&huart3, uart3_rxbuf, 1);

相关变量

#define  MAX_RECV_LENGTH  100  //定义接收缓冲区大小 

 uint8_t uart2_rxbuf[MAX_RECV_LENGTH];
 uint16_t uart2_cnt = 0;
 uint8_t uart3_rxbuf[MAX_RECV_LENGTH];
 uint16_t uart3_cnt = 0; 

添加回调函数

//接收到1字节数据,回调函数如下
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart->Instance==USART2)
  {
	
	if(uart2_cnt<MAX_RECV_LENGTH){
        uart2_cnt++;   		
		HAL_UART_Receive_IT(&huart2,uart2_rxbuf+uart2_cnt,1);
		
	}
  } 
  else if(huart->Instance==USART3)
  {
	
   	if(uart3_cnt<MAX_RECV_LENGTH){ 
        uart3_cnt++;  		
		HAL_UART_Receive_IT(&huart3,uart3_rxbuf+uart3_cnt,1);
		
	}
  } 
// printf("resive data \r\n");
}

可通过超时判断一帧数据是否接收完成,完成后清空缓存 重启接
不能用HAL_UART_Receive_IT 重置 不生效遇到过坑。

		memset(uart3_rxbuf, 0, sizeof(uart3_rxbuf));
		uart3_cnt = 0;
		UART_Start_Receive_IT(&huart3,uart3_rxbuf+uart3_cnt,1); //不是HAL_UART_Receive_IT 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32CubeMX | STM32使用HAL库串口收发 的相关文章

随机推荐

  • 【单片机笔记】PWM信号与PPM信号简单理解

    PPM信号是航模遥控器输出的一种标准信号 xff0c 从PPM信号中可以获取7 9个通道的遥控指令数据 PPM看起来很像PWM xff0c 很多模型爱好者对于它们产生了误解 xff0c 有些朋友认为PPM和PWM就是一回事 xff0c 其实
  • /etc/init.d/rcS 导致无法进入系统

    使用putty 和 pscp 自制了一个生产脚本 xff0c 脚本中从windows复制程序和启动文件至linux系统中 xff0c 系统重启后 xff0c 提示如下信息 xff0c 找不到 etc init d rcS文件 can spa
  • C语言实现linux环境UDP协议接收发送数据

    C语言实现linux环境UDP协议接收发送数据 说明上代码运行结果 说明 闲来无事 xff0c 写了个C语言的UDP小程序 xff0c 程序新建了两个线程 xff0c 分别用来实现UDP数据到发送和接收 需要的直接拿去用 上代码 inclu
  • 【随问】网址中的www是什么意思?HTTPS和HTTP的区别是什么?

    一旦某个单位拥有了一个域名 xff0c 它就可以自己决定是否要进一步划分其下属的子域而不需要上级结构批准 所以 xff0c 当一个单位申请到一个域名后 xff0c 如腾讯申请了一个qq com xff0c 他就可以自己划分子域 这里就出现了
  • HTTP身份认证

    文章目录 HTTP身份认证概述BASIC认证DIGEST认证SSL客户端认证基于表单认证 HTTP身份认证 概述 某些Web页面只想让特定的人浏览 xff0c 或者仅本人可见 xff0c 未达到这个目标 xff0c 必不可少的就是认证功能
  • 不应该不知道C++的常用库

    非常惭愧 xff0c 我过去也仅仅了解boost STLport这样的库 xff0c 以及一些GUI库 xff0c 但是居然有如此众多的C xff0b xff0b 库 xff0c 其实令我惊讶 当然 xff0c 这个问题应该辩证的看 xff
  • Nginx配置完毕后不准发请求头header的解决办法

    目前项目架构是vue 43 springboot前后端分离的 xff0c 前端部署在nginx上 xff0c 后端启动接口服务 xff0c 并用nginx进行反向代理 部署完毕后 xff0c 后端就是怎么收取不到shiro的header中的
  • Win10问题篇:解决AMD家CPU机械,固态硬盘混用导致的卡顿(爆音)问题。

    有的朋友使用AMD Cpu机械固态混用会有的卡顿问题 xff0c 卡顿包括 爆音 xff0c 硬盘占用突然100 xff0c 游戏卡屏 我冷静分析加百度 xff0c 是IDE ATA ATAPI控制器驱动不一致导致 xff0c 换成一样的驱
  • ARM 搭建开源NAS平台

    最近用闲置的电脑配件装了台黑群晖 xff0c 从使用角度以及省电方面考虑 xff0c 个人认为ARM架构的NAS平台相较于X86更加省电 xff0c 正好手里有一块之前调试全志T3平台闲置下来的开发板 xff0c 开发板上正好有个SATA接
  • BMP085气压传感器驱动 &MS5611经验

    BMP085是新一代的小封装气压传感器 主要用于气压温度检测 在四轴飞行器上可以用作定高检测 该传感器属于IIC总线接口 依然沿用标准IIC驱动程序 使用该传感器需要注意的是我们不能直接读出转换好的二进制温度数据或者气压数据 必须先读出一整
  • PotPlayer下载与使用

    下载安装 说起来 xff0c Potplayer的下载其实并不轻松 xff0c 它在国内是没有自己的官网 xff1b 虽然你简单百度下 xff0c 总能找到下载网站 xff0c 但是并不能保证其安全和纯净 xff0c 个人建议从这个官网下载
  • QT多界面切换(登录跳转)

    多界面切换 xff08 QT登录跳转 xff09 应用程序中经常需要在多个界面中跳转切换 xff0c 最常见的就是登录跳转 xff0c 下面是简单过程实现 程序运行时 xff0c 显示登录界面 xff0c 点击登录后跳转至界面2执行具体业务
  • STM32 GPIO简单使用

    STM32 GPIO简单使用 IO初使化配置 GPIO Init xff08 xff09 span class token punctuation span GPIO InitTypeDef GPIO InitStructure span
  • L298电机驱动模块STM32程序封装

    L298电机驱动模块STM32程序封装 程序可以控制电机驱动模块实现 前进 后退 左右转 停止 PWM速度调节 适用于多种电机奁动模块 1 适用模块 xff1a L298N电机驱动模块 TB6612F电机驱动模块 L293D电机驱动模块 2
  • C#,生成字符串整数校验码(Checksum)的谷歌(Google)算法与源代码

    如题 校验码系统是产生校验码并校验包括校验码在内的字符串的一套规则 它可以防止在抄录和键入字符串时产生的错误 一般生成 MD5 校验 xff0c 也可以生成 进行简单 快速的 整数 校验 谷歌开源 xff0c 很实用的整数校验码生成代码 u
  • AD常用快捷键(自用)

    走线角度切换 xff1a shift 43 空格 走线线宽切换 xff1a shift 43 W 快速查找元件 xff1a J 43 C 快速对齐 xff1a a 查看相同网络连接 xff1a Alt 43 单击网络 切换单层显示和多层显示
  • stm32软件仿真调试

    下面是一个单片机STM32RCT6的PA8 xff0c PA9 xff0c PA10引脚输出PWM波形的仿真步骤 xff0c 此外还展示了软件运行过程 xff0c 如何查看全局变量的实时数据 每一步我都做了截图 xff0c 大家照着一步步来
  • 电容种类特性

  • STM32F103 PB3,PB4,PA15,IO不可控问题

    STM32默认启动时PB4 PB3 PA15三个引脚不是普通IO xff0c 而是JTAG的复用功能 xff0c 分别为JNTRST JTDI JTDO 由上可以知要使PB3可以用 须关闭JTAG DP SW DP 可以不管 添加以下配置即
  • STM32CubeMX | STM32使用HAL库串口收发

    一 串口实现printf 1 hal配置 2 重定向代码 span class token comment USER CODE BEGIN Includes span span class token macro property span