首页 > 其他分享 >hal库中串口常用函数介绍

hal库中串口常用函数介绍

时间:2023-09-01 13:32:05浏览次数:36  
标签:HAL 形参 UART 中断 HandleTypeDef 库中 串口 hal

串口常用函数介绍

串口发送**/****接收函数:**HAL_UART_Transmit(); 串口发送数据,使用超时管理机制

HAL_UART_Receive(); 串口接收数据,使用超时管理机制

HAL_UART_Transmit_IT(); 串口中断模式发送

HAL_UART_Receive_IT(); 串口中断模式接收

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart,

uint8_t *pData, uint16_t Size, uint32_t Timeout)

作用:以阻塞的方式发送指定字节的数据

形参 1 :UART_HandleTypeDef 结构体类型指针变量

形参 2:指向要发送的数据地址

形参 3:要发送的数据大小,以字节为单位

形参 4:设置的超时时间,以ms单位

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

作用:以中断的方式接收指定字节的数据

形参 1 是 UART_HandleTypeDef 结构体类型指针变量

形参 2 是指向接收数据缓冲区

形参 3 是要接收的数据大小,以字节为单位

此函数执行完后将清除中断,需要再次调用以重新开启中断。

串口中断回调函数:

*HAL_UART_IRQHandler(UART_HandleTypeDef \huart); //串口中断处理函数

*HAL_UART_TxCpltCallback(UART_HandleTypeDef \huart); //发送中断回调函数

*HAL_UART_RxCpltCallback(UART_HandleTypeDef \huart); //接收中断回调函数

状态标记变量:

USART_RX_STA从0开始,串口中断接收到一个数据(一个字节)就自增1。当数据读取全部OK时候(回车和换行

符号来的时候),那么 USART_RX_STA的最高位置1,表示串口数据接收全部完毕了,然后main

函数里面可以处理数据了。

\4. 使用MicroLIB库

从魔术棒打开,这个勾勾一定要打上,否则 printf 无法重映射!

使用printf输出字符串,需要重写fputc函数

int fputc(int ch, FILE *f)
{
unsigned char temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,0xffff);
return ch;
}

标签:HAL,形参,UART,中断,HandleTypeDef,库中,串口,hal
From: https://blog.51cto.com/u_16152459/7321631

相关文章

  • Close,application.Terminate与halt有什么区别
    当Close是一个主窗体时,程序会退出.Close会发生FormClose事件,FormCloseQuery事件Halt会发生FormDestory事件,Application.Terminate以上三个事件都不会发生Application.Terminate就是程序结束了。整个程序结束运行,系统强行收回系统资源当主窗口关闭时或WM_QUIT消息触发时,Termina......
  • (原创)解决串口上无登录提示符,无法登录的问题
    问题描述:      制作好rootfs后,kernel能够引导rootfs进入到系统,但是串口上最终却没有登入提示符。使用SSH或者Telnet可以登入系统。无法使用串口进行登录系统,使用起来不方便。问题分析:      对照启动流程梳理,发现所设置的运行级别为3下的所有启动脚本均已执行(rc3.d),......
  • 数据库中字段名的命名规范
    使用有描述性的名称:字段名应该能清楚地描述该字段所代表的含义,尽量避免使用模糊或不具有明确含义的名称。使用小写字母:使用小写字母能提高可读性,并且在某些数据库中,字段名是大小写敏感的。此外,建议使用下划线(_)来分隔单词,而不是使用空格或驼峰命名法。避免保留字和关键字:避免使......
  • SHT20温湿度传感器数据读取/HAL/硬件I2C
    SHT20CommandHold/NoHoldMasterModeHoldMasterMode:SHT20在测量完之前会拉低SCL,暂停通信。NoHoldMastermode:测量未完成,SHT20只回应NACK*数据最后两位是状态位,计算时置0#include"S_SHT20.h"#include"S_IIC.h"#include"stdio.h"/**SHT20地址:100000......
  • 数据库中字段无符号和自动递增
    无符号(unsigned):无符号属性用于指定数值类型字段的取值范围。通常,数值类型(如整数)的字段可以存储正数和负数。但是,如果将字段声明为无符号(unsigned),则该字段只能存储非负数(即正数和零)。无符号字段扩展了字段的正数范围,但不能存储负数。例如,对于整数类型的字段,可以使用INT表示有符号......
  • 数据库中什么是主键
    在数据库中,主键就像是每个记录的独特标识符,就像每个人都有自己的名字一样。它帮助区分不同的记录,就像名字帮助我们区分不同的人一样。想象一下,你有一个装满了糖果的罐子。为了区分每颗糖果,你会给每颗糖果贴上一个标签,上面写着它的名字或编号。这个标签就像是糖果的主键,确保每颗糖......
  • 【STM32】5_1 串口通信 printf映射
    串口通信配置完成后,在主函数中添加stdio.h的头文件#include"stdio.h" 在主函数main()之前添加一下函数#ifdef__GNUC__#definePUTCHAR_PROTOTYPEint__io_putchar(intch)#else#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)#endifPUTCHAR_PROTOTYPE{......
  • 嵌入式串口应用编程
    1.串口概述常见的数据通信的基本方式可分为并行通信与串行通信两种。并行通信是指利用多条数据传输线将一个字数据的各比特位同时传送。它的特点是传输速度快,适用于传输距离短且传输速度较高的通信。串行通信是指利用一条传输线将数据以比特位为单位顺序传送。特点是通信线路......
  • 封装Modbus串口通讯之SerialPort类
    前言C#为我们更好的与设备进行通讯,提供了SerialPort类于我们进行设备通讯,我们只需要将参数给与这个类并且实例化该类就可以通讯1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Data;4usingSystem.IO.Ports;5usingSystem.Linq;6usingSys......
  • oracle数据库中插入特殊符号'&'
    在plsql里边执行:updateuserinfosetpageurl='myjsp?page=1&pagesize=10'whereid='test'这条sql语句往数据库的pageurl字段放进去了一个url地址,但是执行的时候却并非那么理想,因为这其中有一个oracle的特殊字符,需要进行转义,那就是字符'&'.怎么处理上例中的特殊字符?两个办法:  ......