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

server/2024/10/15 4:28:33/

一、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.ppmy.cn/server/123195.html

相关文章

【机器学习】——决策树以及随机森林

文章目录 1. 决策树的基本概念与结构1.1 决策树的构建过程 2. 决策树的划分标准2.1 信息增益(Information Gain)2.2 信息增益比(Information Gain Ratio)2.3 基尼指数(Gini Index)2.4 均方误差(…

mac-m1安装nvm,docker,miniconda

1.安装minicondaMAC OS(M1)安装配置miniconda_mac-mini m1 conda-CSDN博客 2.安装nvm(用第二个方法)Mac电脑安装nvm(node包版本管理工具)-CSDN博客 3.安装docker dmg下载链接docker-toolbox-mac-docker-for-mac安装包下载_开源镜像站-阿里云 教程MacOS系…

10个Android性能优化工具

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 在Android性能优化方面,以下是一些常见工具: Android Studio Profiler:这是一个集成在Android Studio中的性…

Python爬虫bs4基本使用

一、bs4 1、bs4获得标记的子集或父集或兄弟节点 (1)子集: 通过contents和children可以获得子集,前者获得的是字符串列表,后者获得的是一个列表迭代器对象,需要遍历获得内容 比如我们有以下代码和数据&a…

Android—ANR日志分析

获取ANR日志: ANR路径:/data/anrADB指令:adb bugreport D:\bugrep.zip ANR日志分析步骤: “main” prio:主线程状态beginning of crash:搜索 crash 相关信息CPU usage from:搜索 cpu 使用信息…

MySQL高阶之存储过程

什么是存储过程? 存储过程可称为过程化SQL语言,是在普通SQL语句的基础上增加了编程语言的特点,把数据操作语句(DML)和查询语句(DQL)组织在过程化代码中,通过逻辑判断、循环等操作实现复杂计算的程序语言。 换句话说,存储过程其实…

阿里云函数计算 x NVIDIA 加速企业 AI 应用落地

作者:付宇轩 前言 阿里云函数计算(Function Compute, FC)是一种无服务器(Serverless)计算服务,允许用户在无需管理底层基础设施的情况下,直接运行代码。与传统的计算架构相比,函数…

信息安全工程师(13)网络攻击一般过程

前言 网络攻击的一般过程是一个复杂且系统化的行为,其目标往往在于未经授权地访问、破坏或窃取目标系统的信息。 一、侦查与信息收集阶段 开放源情报收集:攻击者首先会通过搜索引擎、社交媒体、论坛等公开渠道获取目标的基本信息,如姓名、地址…