HAL库配置STM32串口

这篇具有很好参考价值的文章主要介绍了HAL库配置STM32串口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

总结使用HAL库的方法,以供自己后续回顾,如有错误,欢迎指正。

首先,使用STM32CubeMax配置串口,记得打开中断。

HAL库配置STM32串口

然后,在串口初始化函数void  MX_USART1_UART_Init(void)中加入 使能接收中断函数,没有这一步,将无法接收数据。  HAL_UART_Receive_IT(&huart1,&Buffer,1)这个函数在每次进入接收中断时都要使能一遍。

HAL库配置STM32串口

 查看中断函数USART1_IRQHandler(void),这个函数里面包含了所有的UART1中断状态,HAL_UART_IRQHandler(&huart1)会在进入串口中断后,查询当前的中断是什么情况下的中断(如发送中断、接收中断、错误报警中断等...)。这个函数主要判断是由什么中断响应的,有错误则处理,或者响应要调用的接收或者发送。

 HAL库配置STM32串口

  然后,我们如需要接收数据,需找到其中的RX回调函数,在其中写入我们在接收中断时的执行命令。

HAL库配置STM32串口

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)就是RX回调函数,将这个函数写在中断文件中,红色部分是本次中断时我们自己写的操作代码。 记得使能HAL_UART_Receive_IT(&huart1,&Buffer,1)。 

基本的串口接收就配置完毕了。

注意区别 UART_Receive_IT 和 HAL_UART_Receive_IT。

HAL_UART_Receive_IT在初始化和每次进入中断时要执行一遍,只是配置了一下参数:存储在pData指向位置、空间大小RxXferSize 、接收计数RxXferCount ; 接收状态忙;并且使能接收中断

UART_Receive_IT存在中断处理函数HAL_UART_IRQHandler(&huart1)里面,上面提过,这个函数主要判断是由什么中断响应的,有错误则处理,或者响应要调用的接收或者发送。UART_Receive_IT是HAL_UART_IRQHandler内部处理时调用的,主要处理收到的数据(此函数在最后会关闭中断,需要我们重新使能)

总结,HAL_UART_Receive_IT是配置和使能;UART_Receive_IT是接收数据处理。文章来源地址https://www.toymoban.com/news/detail-433455.html

到了这里,关于HAL库配置STM32串口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】HAL库UART含校验位的串口通信配置BUG避坑

    【STM32】HAL库UART含校验位的串口通信配置BUG避坑 UART通过一条线就能完成数据的发送 另外一条线则完成数据的接收 所以一共是两条线 TX RX UART在空闲时为低电平 时钟周期由波特率确定 通常是115200bit/s UART协议由四个部分组成: 起始位: 固定低电平 1个时钟周期 数据域: 通常

    2024年01月20日
    浏览(50)
  • stm32(HAL库)使用printf函数打印到串口

    目录 1、简介 2.1 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合   4、效果测试 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库中进行printf函数。 2.1.1 SYS配置  2.1.2 RCC配置 在usart.c函数最下方复制如下代码 接着在

    2024年02月14日
    浏览(45)
  • 【STM32】基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗所有配置汇总)

    【STM32】基于HAL库建立自己的低功耗模式配置库(STM32L4系列低功耗所有配置汇总) 此文章是讨论将先前所有的低功耗配置功能整合起来的一个库(适用于STM32L4系列) 目前除了普通唤醒方式外 加入了UART唤醒和RTC唤醒配置 如果后续有更多唤醒加入(如I2C等 将直接在后续的文章

    2024年02月19日
    浏览(46)
  • STM32系列(HAL库) ——使用串口打印的3种方式

    1、硬件: STM32C8T6最小系统板 USB-TTL串口模块 ST-Link下载器 2、软件: keil5-IDE cubeMX 1、配置RCC——选择外部时钟源 2、配置SYS—— Serial Wire模式   3、时钟树拉满72M          ......  4、配置串口1      5.创建工程         ...... 1.方式一:使用微库(Use MicroLIB) ①:需要在 u

    2024年01月25日
    浏览(44)
  • STM32F4_HAL库_串口阻塞/中断/DMA三种方式发送数据的配置

    串口阻塞发送的意思就是,发送一段数据,在没有发送完所有数据之前,一直停留在此发送函数(可设定阻塞时间),这个过程中会阻塞别的程序运行; HAL库的配置分为两个层次,一个是HAL库内部调用的、与MCU硬件相关的初始化xxx_MspInit,一个是我们外部调用的初始化xxx_In

    2023年04月25日
    浏览(54)
  • STM32使用HAL库,串口收发一段时间后出错问题及解决

    当STM32使用HAL库进行开发时,偶尔会遇到串口收发数据量大时,会出现问题。比如同时串口同时收发,一段时间后就只能发送,接收不工作。或是只接收,但数据量大时也不工作。下面对这些问题和其解决办法进行整理。 当数据量过大且传输频率快时,串口可能会因为溢出,

    2024年02月16日
    浏览(42)
  • STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

    能够点进这篇文章的小伙伴肯定是对STM32串口DMA空闲中断接收数据感兴趣的啦,今天用这一功能实现串口解析航模遥控器sbus信号时,查阅了很多网友发布的文章(勤劳的搬运工~),包括自己之前写过一篇博客 STM32_HAL库_CubeMx串口DMA通信(DMA发送+DMA空闲接收不定长数据)。本文

    2024年02月09日
    浏览(66)
  • STM32机器人控制开发教程No.4 使用串口通信控制电机(基于HAL库)

    在机器人控制中,单片机(Arduino/STM32)与上位机(Raspberry Pi/NVIDIA Jetson nano)之间的通信经常采用串口通信的方式,那应该如何使用STM32的串口通信以及根据自己定义的协议来完成数据的接收与发送呢?在本篇文章中将给你演示如何通过自定协议来完成对电机的控制以及获取编码

    2023年04月25日
    浏览(58)
  • STM32开发中printf利用重定向方法输出到串口(CubeMX 基于HAL库方法,带实际项目应用技巧 巧用goto语句)

    在stdio.h中的printf 原本输出到控制台, 在单片机应用中一般将其改到串口, 并利用串口输出信息来调试程序,非常方便。(本文以USART1为例) 此外CubeMX及CubeIDE 由于自动生成基础代码,因此每当更改硬件配置的时候, 都会被重置生成的基础代码。 这里使用goto语句来避免部分

    2024年02月04日
    浏览(84)
  • STM32(HAL)串口中断接收

    目录 1、简介 2 基础配置 2.1.1 SYS配置  2.1.2 RCC配置 2.2 串口外设配置  2.3 项目生成  3、KEIL端程序整合 本文对HAL串口中断函数进行介绍。 2.1.1 SYS配置  2.1.2 RCC配置 首先在main.c文件中进行接受变量声明。  接着在主函数的while循环中进行接收中断,如下所示:  最后在主函数

    2024年02月14日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包