当前位置: 首页 > news >正文

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软件配置 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • android和ios双端应用性能的测试工具
  • 丹摩智算平台体验:AI开发从未如此简单
  • 免费制作证件照的小程序源码
  • Python | Leetcode Python题解之第435题无重叠区间
  • 初识C#(一)
  • node-rtsp-stream、jsmpeg.min.js实现rtsp视频在web端播放
  • vue3 通过 axios + jsonp 实现根据公网 ip, 查询天气信息
  • 0基础学习HTML(十七)字符字体
  • 【Go】Go 环境下载与安装教程(Windows系统)
  • 【环境搭建】MySQL安装部署
  • 数据结构应试-1
  • linux驱动开发-arm汇编基础
  • 用javascript写一个网页,显示日期时间
  • 优化理论及应用精解【11】
  • 爬虫技术初步自学
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • emacs初体验
  • js ES6 求数组的交集,并集,还有差集
  • js正则,这点儿就够用了
  • Less 日常用法
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Node 版本管理
  • RxJS: 简单入门
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 讲清楚之javascript作用域
  • 如何实现 font-size 的响应式
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我感觉这是史上最牛的防sql注入方法类
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​卜东波研究员:高观点下的少儿计算思维
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • # 透过事物看本质的能力怎么培养?
  • #mysql 8.0 踩坑日记
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (1)常见O(n^2)排序算法解析
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (ZT)薛涌:谈贫说富
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (四)c52学习之旅-流水LED灯
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ./configure,make,make install的作用(转)
  • .bat批处理(六):替换字符串中匹配的子串
  • .describe() python_Python-Win32com-Excel
  • .md即markdown文件的基本常用编写语法
  • .net 7 上传文件踩坑
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net Stream篇(六)