STMCubeMx——C8T6的串口调试、接收与发送

一、stmCubeMX串口通信的步骤

1、新建一个文件,选择自己的芯片

2、配置时钟

3、配置串口

串口的模式解析可以跳转到以下文章查看

stmCubemx——配置串口时的几种模式-CSDN博客在STM32CubeMX中配置串口(USART或UART)时,可以设置多种模式来满足不同的通信需求。https://blog.csdn.net/weixin_54210362/article/details/142490631?spm=1001.2014.3001.5502

示例配置

假设你需要配置一个异步模式的USART1,波特率为115200,8个数据位,1个停止位,无奇偶校验,并启用中断:

  1. 选择USART1
  2. 设置模式为异步模式
  3. 设置波特率为115200
  4. 设置数据位为8
  5. 设置停止位为1
  6. 设置奇偶校验为无
  7. 启用中断:在“NVIC Settings”中勾选相应的中断。

4、配置时钟树

5、命名,保存项目

6、选择生成文件配置

二、生成的keil文件处理过程

1、usart.c

#include "stdio.h"
extern UART_HandleTypeDef huart1;   //声明串口

/*** 函数功能: 重定向c库函数printf到DEBUG_USARTx* 输入参数: 无* 返 回 值: 无* 说    明:无*/
int fputc(int ch, FILE *f)
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);return ch;
}/*** 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx* 输入参数: 无* 返 回 值: 无* 说    明:无*/
int fgetc(FILE *f)
{uint8_t ch = 0;HAL_UART_Receive(&huart1, &ch, 1, 0xffff);return ch;}

2、main.c文件

命名一个数组,用来接收存储数据

#include "string.h"//需要额外包含的头文件/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#define RXBUFFERSIZE  256
char RxBuffer[RXBUFFERSIZE];
uint8_t aRxBuffer;				//接收中断缓冲
uint8_t Uart1_Rx_Cnt = 0;		//接收缓冲计数

想要验证输出,直接main函数中的循环里面,用printf串口打印自己想要输出的内容就可以

下面的代码是用来实现串口收发功能的,直接定义在main.c文件中就可以

在main函数的循环以外线调用一次接收中断函数

 HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);//接收中断

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{/* Prevent unused argument(s) compilation warning */UNUSED(huart);/* NOTE: This function Should not be modified, when the callback is needed,the HAL_UART_TxCpltCallback could be implemented in the user file*/if(Uart1_Rx_Cnt >= 255)  //溢出判断{Uart1_Rx_Cnt = 0;memset(RxBuffer,0x00,sizeof(RxBuffer));HAL_UART_Transmit(&huart1, (uint8_t *)"数据溢出", 10,0xFFFF); 	}else{RxBuffer[Uart1_Rx_Cnt++] = aRxBuffer;   //接收数据转存if(HAL_UART_GetState(&huart1) != HAL_UART_STATE_BUSY_RX)  // 检查UART状态,判断是否接收完成{HAL_UART_Transmit(&huart1, (uint8_t *)&RxBuffer, Uart1_Rx_Cnt,0xFFFF); //将收到的信息发送出去while(HAL_UART_GetState(&huart1) == HAL_UART_STATE_BUSY_TX);//检测UART发送结束Uart1_Rx_Cnt = 0;memset(RxBuffer,0x00,sizeof(RxBuffer)); //清空数组}}HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);   //再开启接收中断
}

3、演示结果

三、keil软件配置 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544516.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python连接Kafka并收发数据

目录 一、Kafka 二、发送端(生产者) 三、接收端(消费者) 一、Kafka Apache Kafka 是一个开源流处理平台,由 LinkedIn 开发,并于 2011 年成为 Apache 软件基金会的一部分。Kafka 广泛用于构建实时的数据…

soul怎么改ip地址归属地

在数字化时代,社交应用已成为人们日常生活中不可或缺的一部分。Soul,作为一款深受年轻人喜爱的社交APP,以其独特的灵魂社交理念和丰富的互动功能吸引了大量用户。然而,在使用Soul的过程中,不少用户会关注到一个问题——…

详解Web测试和APP测试的区别

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 最近听到有些朋友说,移动端要比web端稍微难一些,涉及到的细节笔记要多,有转去做web测试的想法,看看在具体测试的…

华为全联接大会2024 | 一文回顾华为云开发者联盟重磅干货

目录 华为开发者空间预置更多工具资源,带来丰富场景案例 携手鲲鹏、鸿蒙、昇腾等根生态,使能开发者创新 学习体验、内容体系全面升级,助力开发者高效学习根技术 参与丰富线上体验活动,赢取精美礼品 在刚刚结束的华为全联接大会…

基于Netty框架的云快充协议+云快充1.5协议+云快充桩直连+桩直连协议

云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 介绍 云快充协议云快充1.5协议云快充1.6云快充协议开源代码云快充底层协议云快充桩直连桩直连协议充电桩协议云快充源码 软件架构 1、提供云快充底层桩直连协…

智能Ai语音机器人的应用价值有哪些?

随着时间的推移,人工智能的发展越来越成熟,智能时代也离人们越来越近,近几年人工智能越来越火爆,人工智能的应用已经开始渗透到各行各业,与生活交融,成为人们无法拒绝,无法失去的一个重要存在。…

Java项目: 基于SpringBoot+mybatis+maven医疗病历交互系统(含源码+数据库+毕业论文)

一、项目简介 本项目是一套基于SpringBootmybatismaven医疗病历交互系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简…

全球网安行业缺少350万安全专家? 志愿你别乱填,缺的是专家,不是0经验的牛马

0x00 首先是这个所谓的“高需求”。企业们天天喊着缺人,但当你打开招聘网站,看到的全是“三年经验起步”、“高级专家”。黑人问号?这是在逗我吗?都只想要高级专家,拒绝新手及应届生,没有新手,哪…

舒服了!学大模型必看的学习书籍来了

最近整理了日前市面上一大波大模型的书,已经打包成pdf了,大家有需要的,可以自行添加获取,纯福利,无套路,添加后说明是哪本书,会直接给大家!(文末获取) 部分书…

用于体积医学图像分割的跨视角差异依赖网络|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割

Title 题目 Cross-view discrepancy-dependency network for volumetric medical image segmentation 用于体积医学图像分割的跨视角差异依赖网络 01 文献速递介绍 医学图像分割的目标是通过为每个像素分配语义类别,从原始图像中描绘出受试者的解剖结构&#x…

Activiti7《第九式:破气式》——流畅驱动工作流进程。面试题大全

冲冲冲!开干 这篇文章将分为九个篇章,带你逐步掌握工作流的核心知识。“破气式”,代表着工作流中的 无形之力,它是贯穿整个流程的 关键驱动 不知不觉已经到了独孤九剑最后一式了,我相信到这里之后各位都已经出神入化…

华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

场景介绍 实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。 通过Push Kit发送的实况窗消息支持三种操作类型,分别是&#xff1a…

云手机推荐:五款热门云手机测评!

在云手机市场中,各个品牌层出不穷,让人难以选择。为了帮助你更好地找到适合的云手机应用,我们整理了五款最受欢迎的云手机进行测评。2024年,哪款云手机是你的不二之选?且慢下结论,看看这五款云手机的真实表…

分享一个非常好用的图片压缩的免费网址,及使用方式

一、图片压缩网址: TinyPNG – Compress WebP, PNG and JPEG images intelligently 二、使用方式(压缩后的图片在1M以内) 1、上传图片 二,下载压缩图片 备注:只能免费压缩5M以内的图片!

Codigger SIDE:Nvim扩展,重新定义编程体验

在当今快速发展的科技时代,软件开发的核心工具之一——代码编辑器,正变得越来越强大和多样化。Codigger,作为新一代的软件开发平台,不断推动着编程工具的创新。其中,Codigger Super IDE(SIDE)的…

超详细超实用!!!AI编程之cursor编写设计模式里氏替换原则实例(五)

云风网 云风笔记 云风知识库 一、设计模式里氏替换原则定义 里氏替换原则是面向对象设计的基本原则之一。 里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件…

企业如何通过加密软件保护敏感信息和客户数据?

1、数据加密:采用先进的加密算法,如AES-256,对敏感信息和客户数据进行加密处理。这样,即使数据被非法获取,未授权人员也无法解密和访问数据内容。 访问控制:设置严格的访问控制策略,确保只有授…

电网绝缘子损坏识别检测数据集

电网绝缘子损坏识别检测数据集 yolo数据集 1600张 电网绝缘子损坏识别检测数据集(Power Grid Insulator Damage Detection Dataset) 数据集概述 该数据集专为电网绝缘子损坏的自动检测任务设计,旨在帮助电力部门和相关研究机构通过图像识别技…

代码随想录算法day39 | 动态规划算法part12 | 115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离

115.不同的子序列 相对于 392.判断子序列,本题有难度了,感受一下本题和 392.判断子序列 的区别。 力扣题目链接(opens new window) 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指&#xff…

电路 - 笔记2

1 555 芯片 2 类比 - pU*I 与 Fm*a 是不是可以与牛顿定律类比 - Fm*a 人的力量(F)有限。 当推大箱子(m)时,加速度(a)就不会很大 当推小箱子(m)时,加速度…