zoukankan      html  css  js  c++  java
  • stm32 hal库串口通信资料汇集

    串口的发送接收函数:
    HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制。
    HAL_UART_Receive();串口轮询模式发送,使用超时管理机制。
    HAL_UART_Transmit_IT();串口中断模式发送,
    HAL_UART_Receive_IT();串口中断模式发送
    HAL_UART_Transmit_DMA();串口DMA模式发送
    HAL_UART_Receive_DMA();串口DMA模式发送

    串口相关的中断函数:
    HAL_UART_TxHalfCpltCallback():一半数据(half transfer)发送完成后,通过中断处理函数调用。
    HAL_UART_TxCpltCallback():发送完成后,通过中断处理函数调用。
    HAL_UART_RxHalfCpltCallback():一半数据(half transfer)接收完成后,通过中断处理函数调用。
    HAL_UART_RxCpltCallback():接收完成后,通过中断处理函数调用。
    HAL_UART_ErrorCallback():传输过程中出现错误时,通过中断处理函数调用。

    可看到串口发送和就是有三种通信模式:
           第一种是上面用到的轮询的模式。CPU不断查询IO设备,如设备有请求则加以处理。例如CPU不断查询串口是否传输完成,如传输超过则返回超时错误。轮询方式会占用CPU处理时间,效率较低。
           第二种就是中断控制方式。当I/O操作完成时,输入输出设备控制器通过中断请求线向处理器发出中断信号,处理器收到中断信号之后,转到中断处理程序,对数据传送工作进行相应的处理。
           第三种就是直接内存存取技术(DMA)方式。所谓直接传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出“传送块数据”的命令,然后通过中断来得知过程是否结束和下次操作是否准备就绪。

    相关参考资料的网址有:

     https://www.cnblogs.com/ChurF-Lin/p/10793111.html

    HAL库UART的几个常用函数讲解+中断处理过程讲解

    HAL库UART按DMA方式发送和接收函数简析及测试

    STM32CubeMX系列教程5:串行通信(USART)

    HAL串口死机原因分析及其解决方法

  • 相关阅读:
    spring+mybatis+druid+xml
    springboot run(),bean注册
    linux命令之cat
    linux命令之more
    linux中配置maven环境
    linux中配置Java环境
    linux命令之nohup
    在Eclipse中创建Maven多模块工程的例子
    MINA之心跳协议运用
    Java动态代理
  • 原文地址:https://www.cnblogs.com/long5683/p/12013762.html
Copyright © 2011-2022 走看看