蓝桥杯嵌入式第六课--串口收发

news/2024/11/17 0:08:23/

前言

串口作为一个考试中考察频率较高的考点,其套路比较固定,因此值得我们仔细把握。本节课主要着眼于快速配置实现 串口收发与串口的中断。

CubeMX配置

  • 选择串口2

  • 配置异步收发模式

  • 基本参数设置(波特率、校验位等等)

  • 开启串口收发中断

Keil编程

串口的配置不难,因此重点集中在编程上,需要细心把握。

一、串口接收

由于我们不知道什么时候数据会被发送到我们的单片机上,因此,串口数据的接收主要是在中断中进行的。

首先我们要在串口初始化后,开启串口接收中断:

HAL_UART_Receive_IT(&huart2,Rx_Data,5);
第一个参数是串口的句柄
第二个参数*pData为接收的数据的存放地址,常用数组名称     
第三个参数,Size:接收的数据的大小
每当串口接收到Size个数据就会完成接收,进入接收中断。

其次是中断回调函数:

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{语句;HAL_UART_Receive_IT(&huart2,Rx_Data,5); //最后一定不要忘记添加这句话,要不然只能接收一次数据
}

特别注意:回调函数的结尾一定要再开启中断!要不然串口只会接收一次数据!

二、串口发送

串口发送不需要使用中断,因此比较简单,就是一句代码:

* @param huart   UART handle. //函数句柄,例如&huart1 * @param pData   Pointer to data buffer (u8 or u16 data elements). //要发送的数据地址,常为数组名* @param Size    Amount of data elements (u8 or u16) to be sent. //发送的数据大小* @param Timeout Timeout duration. //发送有效时间HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)

例句:

HAL_UART_Transmit(&huart2,str,strlen(str),500); //发送str数组内的内容

小结

目前串口的最基本使用总结来说就是:

  1. CubeMX配置串口

  1. 打开串口中断

  1. 程序开头开启串口接收中断:HAL_UART_Receive_IT();

  1. 编写回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

  1. 编写发送函数 HAL_UART_Transmit();

后记

  1. http://t.csdn.cn/SPA8y (关于串口收发异常)

  1. https://blog.csdn.net/weixin_54358182/article/details/129645086?spm=1001.2014.3001.5501(关于字符串比较的技巧)


http://www.ppmy.cn/news/35232.html

相关文章

1、DRF实战总结:DRF特点、序列化与RESTful API规范

Django这种基于MVC开发模式的传统框架,非常适合开发基于PC的传统网站,因为它同时包括了后端的开发(逻辑层、数据库层) 和前端的开发(如模板语言、样式)。现代网络应用Web APP或大型网站一般是一个后台,然后对应各种客户端(iOS, android, 浏览…

香橙派5使用NPU加速yolov5的实时视频推理(二)

三、将best.onnx转为RKNN格式 这一步就需要我们进入到Ubuntu20.04系统中了,我的Ubuntu系统中已经下载好了anaconda,使用anaconda的好处就是可以方便的安装一些库,而且还可以利用conda来配置虚拟环境,做到环境与环境之间相互独立。…

Linux文件编程(二)

1.O_NONBLOCK阻塞与非阻塞(1)如果一个函数是阻塞式的,则我们调用这个函数时当前进程有可能被卡住(阻塞住,实质是这个函数内部要完成的事情条件不具备,当前没法做,要等待条件成熟),函…

JavaScript 基础 - 第3天

文章目录JavaScript 基础 - 第3天笔记数组数组的基本使用定义数组和数组单元数据单元值类型数组长度属性操作数组JavaScript 基础 - 第3天笔记 数组 数组的基本使用 定义数组和数组单元 <script>// 1. 语法&#xff0c;使用 [] 来定义一个空数组// 定义一个空数组let…

PMP项目管理-【第一章】引论

项目知识体系&#xff1a; 项目管理知识体系&#xff1a; 1.1 项目特性 独特性&#xff1a;独特性会带来不确定性(风险) 临时性&#xff1a;1> 任何项目都有起始终止时间 2> 项目具备临时性&#xff0c;项目成果可能是永久的 1.2 项目驱动变革 从商业角度来看&#xff0c…

【算法基础】一篇文章彻底弄懂Dijkstra算法|多图解+代码详解

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;算法、数据结构、Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: 算法 &#xff1b;该专栏专注于蓝桥杯和ACM等算法竞赛&#x1f525;近期目标&…

C# 计算方差

50&#xff0c;100&#xff0c;100&#xff0c;60&#xff0c;50 计算他们的方差 为了计算这些数的方差&#xff0c;需要进行以下步骤&#xff1a; 1. 计算平均值&#xff0c;即将这些数相加&#xff0c;然后除以它们的数量。 平均值 (50 100 100 60 50) / 5 72 2. 计…

ESP8266WiFi模块与Android APP实现数据传输(一)---硬件接线

前言&#xff1a;本文主要介绍一下ESP8266WiFi模块与Andriod APP实现数据传输采用的硬件、接线、注意事项等。所需器件&#xff1a;序号器件型号1安可信ESP8266-12F&#xff08;AT MQTT固件&#xff09;2龙邱多电源模块&#xff08;12V1A转换线&#xff09;3TTL转USB模块4面包板…