蓝桥杯嵌入式串口uart

news2024/11/15 20:10:58

文章目录

  • 前言
  • 一、板子串口原理图
    • 2.cubeMx配置
    • 3.波特率的简单讲解
    • 4.代码编写
    • 一、发送数据函数
    • 二、开启接收中断函数
    • 三、中断回调函数
    • 四、具体使用
  • 总结


前言

本篇文章将带大家了解串口的编程,串口在比赛当中和实际工程中都是非常重要的,串口的难度也比较大一点,希望大家可以好好理解。

一、板子串口原理图

串口一共有两个引脚
PA9—串口发送引脚(TX)
PA10—串口接收引脚(RX)
在这里插入图片描述

2.cubeMx配置

1.按照原理图配置引脚
在这里插入图片描述
2.开启串口中断和波特率设置
这里模式选择异步通信
波特率选择115200即可,波特率越大串口发送数据越快。
在这里插入图片描述
在这里插入图片描述

3.波特率的简单讲解

波特率主要就是影响数据的发送速率。一般串口发送数据都是8个数据位,一个开始位,一个停止位。
波特率的单位是bps,比如115200bps,就是说明一秒能够发送115200位数据。
发送一共字节一共需要10位8个数据位,一个开始位,一个停止位。
所以使用115200的波特率一秒能够发送 115200/10=11520字节。

4.代码编写

一、发送数据函数

函数参数解析

HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);

huart://使用哪个串口
pData://发送的数据
Size://发送数据字节大小
Timeout://超时时间

相信大家对于上面的参数都能理解,可能对于Timeout的理解有点模糊。
Timeout:代表超时时间,什么叫超时时间呢?
举个简单的例子:当有其他的函数影响到了HAL_UART_Transmit发送数据时,这个函数会在这里等待一段时间,时间到了返回错误,跳过这个函数的执行。

二、开启接收中断函数

每接收一次数据都需要重新调用该函数开启接收中断。

HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);

huart://使用哪个串口
pData://接收的数据
Size://接收数据大小

三、中断回调函数

当发生中断时会调用到该函数。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{

}

四、具体使用

uint8_t uart_buf[2];
HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart_buf, 1);

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	
	HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart_buf, 1);
}

HAL_UART_Transmit(&huart1, (uint8_t*)"hi\r\n", sizeof("hi\r\n") - 1, 50);

总结

串口中断是非常重要的一部分,大家下去多实验,使用HAL_UART_Transmit来发送数据会感觉很不方便,大家可以看我前面的文章:串口重定向

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

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

相关文章

微信小程序自定义tabbar底部菜单

自定义 tabBar 可以让开发者更加灵活地设置 tabBar 样式,以满足更多个性化的场景。 在自定义 tabBar 模式下,为了保证低版本兼容以及区分哪些页面是 tab 页,tabBar 的相关配置项需完整声明,但这些字段不会作用于自定义 tabBar 的渲…

UC伯克利提出AIGC图像编辑新利器InstructPix2Pix,AI模型P图更加精细

原文链接:https://www.techbeat.net/article-info?id4375 作者:seven_ 最近的一些工作向我们展示了AIGC在创造性生成图像、视频等方面的潜力,相信已有很多研究者在沿着这一方向进行拓展式的挖掘和创新。目前已有很多衍生应用出现在了大家眼前…

Java中的类和对象

文章目录1.面向对象和面向过程的含义2.类的定义与使用2.1什么是类2.2类的定义和格式2.3类名的修改方法![在这里插入图片描述](https://img-blog.csdnimg.cn/f126dbd47491402e93bc83bc07f51673.png)3.类和对象3.1类的实例化3.2成员的访问4.this引用4.1为何要this引用4.2什么是th…

java和vue的学生健康管理系统疫情打卡系统

需求:关注学生健康数据以及疫情打卡 系统分两个角色:学生和管理员 演示视频 https://www.bilibili.com/video/BV1iD4y1h74F/?share_sourcecopy_web&vd_sourceed0f04fbb713154db5cc611225d92156 技术:springbootvueelementuipagehelperm…

医疗器械实验室设计基本要求SICOLAB

医疗器械实验室设计基本要求SICOLAB 医疗器械实验室设计、医疗器械实验室装修、医疗器械实验室建设SICOLAB 一、实验室分类 (一)基础实验室 生物学评价检验实验室、电气安全检验实验室、环境试验检验实验室、手术医疗器械检验实验室、医用材料检验实…

【图像去噪】双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】

⛄一、稀疏表示模型简介 图像的稀疏表示能够更好地表示出图像的特征, 其理论依据就是, 有用的图像信号是有序的, 而噪声普遍是杂乱无章的, 因此可以提取出能够表示图像特有奇异性特征的信息, 比如边缘、线段、条纹、端点等, 再用特定的过完备字典中的原子进行线性组合, 重构出…

JDK的安装及环境变量配置

一、应用安装 1、可以在官网下载jdk,(http://www.oracle.com/)下载自己适用的版本。 2、双击下载的 .exe安装包文件,如 jdk-8u131-windows-x64.exe。 3、进入安装向导。 4、点击下一步,更改安装路径,我选择安装在d盘…

30分钟看懂linux内核 - page介绍

【推荐阅读】 浅析linux内核网络协议栈--linux bridge 深入理解SR-IOV和IO虚拟化 了解Docker 依赖的linux内核技术 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 内核中最初勾引我好奇心的还是内存管理方面,我们平时编写应用程…

代码随想录训练营第53天|LeetCode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

参考 代码随想录 题目一:LeetCode 1143.最长公共子序列 确定dp数组下标及其含义 dp[i][j]:字符串text1中的0~i字符构成的字符串和字符串text2中的0~j字符构成的字符串的最长 公共子序列 的长度为dp[i][j]。注意和之前做过的Leet…

将postgresql配置为Linux服务管理 systemctl service

发行版安装的数据库在装完后会自动添加数据库服务,但编译安装的不会,需要手动添加。 cd postgresql-14.0/contrib/start-scripts/ cp linux /etc/init.d/postgresql cd /etc/init.d/ vi postgresql 修改以下部分 ## EDIT FROM HERE# Installation pre…

Vuex4.0.0 源码解析

本文章基于以下版本撰写 VUE 版本: 3.0VUEX 版本:4.0.0Vuex仓库:https://github.com/vuejs/vuex/tree/v4.0.0Vux文档:https://vuex.vuejs.org/zh/ 在 vue 中使用 vuex import { createApp } from vue import { createStore } f…

C语言中函数的先后关系,java和C语言的语法区别

以上代码中,sum函数在上面,main函数在下面,在main函数中就可以调用sum函数。 如果sum函数定义在main函数后面,则需要在main函数前面声明sum函数。即在main函数前面写:void sum(int begin, int end); C语言中&#xf…

EMC测试中的电流探头

专栏 专注介绍电磁兼容(EMC)的相关知识,算是对本人浸染 EMC 专业十余年的一个阶段小结 。 本文目录1.EMC测试中的电流探头是什么?2.电流探头的主要指标要求3.什么是转移阻抗?1.EMC测试中的电流探头是什么? …

校园兼职网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 网站前台:关于我们、联系我们、资讯信息、企业信息、职位信息 管理员模块: 1、管理关于我们、联…

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_File

vTESTstudio作为跟CANoe工具并套使用的一个强大的工具,那么想要用好它就得对他有个全面的认识,第一步起码要知道tade工具栏都包含哪些功能要清楚,今天我们就着重分享下vTESTstudio工具栏包含哪些内容,以便在我们编程的时候更好的去…

java 瑞吉外卖day2 笔记 员工增加 员工信息分页查询

PostMapping public R save(HttpServletRequest request,RequestBody Employee employee){log.info("新增员工:{}",employee);//设置初始密码123456 需要进行md5加密employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));em…

homeassistant 接入小米温湿度计2

方法可能有很多种,但是我只用这种方法介入成功了 环境: - 香橙派(自带蓝牙,树莓派应该也可以) - 小米温湿度计2 - 网站:Telink Flasher v4.7 、 Telink Flasher (atc1441.github.io) - 固件&#xff1…

基于java+springmvc+mybatis+vue+mysql的高校普法系统

项目介绍 随着信息化时代的到来,管理系统都趋向于智能化、系统化,高校普法系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而…

堆排序快速排序插入排序

堆排序 数据结构使用的是1 dimension的数组来作为二叉树的堆结构,所以并没有使用结构体,而是直接使用了数组 而且堆是完全二叉树,也就是除了最后一层以外,其他层都是满二叉树,最后一层可能不满,所以1dime…

基于jeecgboot的flowable流程支持服务任务的功能

1、描述 Java服务任务用于调用外部Java类。 2、图形表示法 服务任务可视化为圆角矩形,左上角有一个小齿轮图标,如下图: 3、XML表示 有三种方法声明如何调用Java逻辑,下面分别介绍: 调用固定的类 使用flowable:cla…