摘要:HAL库(Hardware Abstraction Layer)是目前意法半导体公司主推的单片机开发方式,可以大大节省开发时间,实践来看,还是比较好用的。本文通过一个简单的UART收发程序,演示了HAL库在UART通信中的使用。程序功能:通过中断接收串口数据,在1750us时间内没有收到新的字节的话,将收到的数据原封不动地发送出去,以测试串口的完整收发流程。对使用到的函数进行了说明,阐述了各个函数的调用顺序和调用关系,在目标板上对代码进行了测试,结果表明,可以实现预期功能。

关键词:HAL库;STM32F103C8T6;STM32CubeMX;UART;收发程序设计

1.程序规划

程序基于STM32CubeMX生成基础代码,硬件为:STM32F103C8T6,实现UART1的串口通信。

演示程序的功能:通过中断接收串口数据,在1750us时间内没有收到新的字节的话,将收到的数据原封不动地发送出去,以测试串口的完整收发流程。

之所以选择1750us的时间,是借鉴FreeModbus协议栈,Modbus RTU是以时间间隔作为一帧数据结束的标志,接收的两个字符之间的间隔超过3.5个字符周期,就认为一帧数据结束。在FreeModbus协议栈中,当波特率超过19200bps时,这个时间间隔固定为1750us。

2.函数说明

(1)HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

这是一个配置函数,配置串口号、接收缓存区的指针和每次接收的数量,并使能接收中断。

图1

图1是此测试程序的该函数的调用,每次接收一个字节,存在ucUartTempBuf中。

(2)HAL_StatusTypeDef UART_Receive_IT(UART_HandleTypeDef *huart)

此函数在串口的中断服务程序中调用,作用是将接收到的字节放到接收缓存区,判断整个数据是否已接收完整(是否已达到配置的数量),接收完整的话调用HAL_UART_RxCpltCallback(),并禁止接收中断。

(3)HAL_UART_RxCpltCallback()

此函数是一个回调函数,需要用户编写,在此函数中,可以将收到的数据进行转移,如果需要继续接收的话,还要再次调用HAL_UART_Receive_IT(),由于这个回调函数有可能会被多个串口中断服务程序调用,因此在函数中需要区分串口。

此篇文章的测试程序中,在此函数中启动定时器,用于1750us的定时。代码如图2所示。

图2

(4)HAL_TIM_PeriodElapsedCallback()

此函数是一个回调函数,当定时器产生溢出中断时调用,需要用户编写,此测试程序中,定时1750us的时间到,说明一个完整数据帧已接收完成,调用HAL_UART_Transmit_IT()函数,将收到的数据,原封不动地发送回去。代码如图3所示。

图3

(5)HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

此函数也是一个配置函数,将发送数据指针和数量赋给相应的寄存器,然后使能发送缓存区为空中断,以便通过中断的方式将数据逐个字节的发送出去。

(6)HAL_StatusTypeDef UART_Transmit_IT(UART_HandleTypeDef *huart)

此函数在uart的中断服务程序中调用,将数据发到uart硬件缓存区,并监视已发送数量,发送数量达到目标值后,禁止发送缓存区为空中断。

3. 函数调用顺序

函数调用顺序如图4所示。此图只是大体上展示了各个函数的调用顺序和调用关系,并不完全准确,由于中断的存在,有的进程是并行进行的。

图4

4. 测试结果

准备两帧数据:01 03 00 00 00 0A C5 CD;

01 10 00 00 00 05 0A 00 01 00 02 00 03 00 04 00 05 EA 6A;

各发送两帧,查看目标板的回复数据,如图5所示。自此,uart的收发流程就演示完毕,这也类似于Modbus串口通信的一个基本框架。

图5

uart串口通信_听说UART与STM32的HAL库更配哦相关推荐

  1. hal库开启中断关中断_(2)STM32使用HAL库操作外部中断——理论讲解

    1.中断触发过程 对主程序压栈--把中断服务函数的地址写入到程序计数器(PC)--执行中断服务函数 2.中断向量表 中断服务函数的地址在STM32的手册上的中断向量表中(如下是一部分): 如上表所示, ...

  2. android 串口通信_使用UART与ZYBO进行通信常用外设设计方案

    作者:Wilson Qiu,Xilinx工程师 常用外设设计 使用UART与ZYBO进行通信 ZYNQ学习过程中一个重要环节是进行调试,当然在SDK中进行调试时,设置断点进行单步调试非常高效.但是ZY ...

  3. linux编译运行uart,嵌入式Linux裸机开发(七)——UART串口通信

    嵌入式Linux裸机开发(七)--UART串口通信 一.UART串口通信简介 通用异步收发器简称UART,即UNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTE ...

  4. STM32学习——UART串口通信学习

    1.UART简介 UART(Universal Asyvhronous Receiver Transmitter)统称为通用异步收发器,是一种通用的串行.异步通信总线,有两条数据线,可以实现全双工的发 ...

  5. NXP(I.MX6uLL) UART串口通信原理————这个未复习

    参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...

  6. 单片机:11.UART串口通信

    原文地址:https://blog.csdn.net/Qingzhusshuiyun/article/details/78236798 通信按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与 ...

  7. Android 模拟Uart 串口通信

    下载串口工具 1.下载模拟串口工具:模拟串口工具 模拟串口工具用于生成模拟的两个串口,而不需要真实的物理串口. 2.下载串口调试工具:串口调试工具 串口调试工具用于直接通过串口发送数据 我这里有整合过 ...

  8. UART串口通信浅谈之(一)--基础概述

    通信按照传统的理解就是信息的传输与交换.UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用 ...

  9. 【蓝桥杯】单片机学习(7)——UART串口通信

    UART串口通信 一.基础知识介绍 1.通信方式的分类 2.RS232通信接口 3.UART模块介绍 (1)串口控制寄存器SCON(可位寻址) (2)电源控制寄存器PCON(不可位寻址) (3)辅助寄 ...

最新文章

  1. 一文详解激光雷达感知方案
  2. linux配置文件语法错误,linux vim配置文件(语法高亮)
  3. 百度:请叫我卡车新势力
  4. linux平台 一个简单的helloworld动态库的制作与使用
  5. IDA无法反编译 and 提示错误
  6. linux c段错误,Linux C中段错误
  7. Palo Doris不会用?(基础指南)
  8. 学完HTML5后可以开发哪些互联网产品呢?
  9. go语言第一个程序-hello world
  10. 【NOI2019】回家路线【无后效性dp状态设计】【斜率优化】
  11. tfs 内网和外网切换的方法。
  12. NoticeBoard 一个仿原生UI的消息通知控件
  13. java url参数值替换_修改url中参数的值
  14. SpringBoot 整合 kaptcha + redis 实现 图形验证码登录
  15. 已解决raise JSONDecodeError(“Expecting value”, s, err.value) from None
  16. pada mysql
  17. 2021年推土机司机(建筑特殊工种)考试及推土机司机(建筑特殊工种)找解析
  18. Springboot面向全球电子商城系统3v50f计算机毕业设计-课程设计-期末作业-毕设程序代做
  19. 前端技术探索 - 你不知道的JS 沙箱隔离
  20. TM1650代码记录(基于51单片机)

热门文章

  1. SSL请求trustStore的两种注册方式
  2. SciTE文本编辑器初体验
  3. java国际化服务器不识别_国际化踩坑记录java.util.MissingResourceException:
  4. 灰色关联分析_R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标...
  5. 2017.9.24 虔诚的墓主人 思考记录
  6. 大数据平台在分布式服务中的应用
  7. Memcached概述
  8. wow修改人物模型_玻璃钢气球狗模型景观雕-东莞气球树脂雕塑
  9. ios打包ipa的四种实用方法(.app转.ipa)
  10. 图形学理论 光照模型