stm32的hal之串口库函数总结复习
1、串口的使用方法
在hal库中,有三个串口发送的函数
a、HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
b、HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
c、HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
其中,HAL_UART_Receive会超时的变量,就是说发送5给字节,如果一个字节发送需要5ms(假设),如果超时设置为20ms,那么只能发送4给字节,后续的字节就不发送了,通信就不正常了,而且是阻塞式的发送,只有发送完成了,才能执行后续的代码。所以通常只能用于
数据量比较少的地方。
HAL_UART_Receive_IT和HAL_UART_Transmit_DMA两个函数,没有超时,说明是非阻塞式发送,基本上不会占用cpu的太多的资源,而且发送完成有出发中断的功能。另外DMA的方式还有发送一半的中断,因此控制起来有多了一层功能。
2、串口接收也有三个函数
a、HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
b、HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
c、HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
HAL_UART_Receive是阻塞式的接受函数,因此不建议使用,通常在开发过程中,基本上使用HAL_UART_Receive_IT和HAL_UART_Receive_DMA两个函数
目前我使用中断接受数据,dma发送数据,基本没有问题,如果加上定时器来判断空闲,基本上就实现了modbus的数据协议了。
最新文章
- dump、cpio、tar、dd四种备份工具比较
- 如何解决ASP.NET网站'__doPostBack' is undefined的脚本错误
- 1121 if条件语句练习--输入年月日判断执行
- [转载] 根据多年经验整理的《互联网MySQL开发规范》
- ubuntu下安装jdk(rpm版)错误: 找不到或无法加载主类 解决方法
- WP7应用版本升级的实现方法
- uvaIrrelevant Elements
- JS遍历对象或者数组
- 『SQL注入』 User-Agent 手工注入的探测与利用分析
- <;item.../>;元素可指定如下常用属性
- Redis分布式缓存 教程以及DEMO
- C#多线程实践——创建和开始使用
- 加密解密工具类(Java,DES)
- Mybatis学习(8)逆向工程
- Docker自动补全容器名
- Maven入门指南⑥:将项目发布到私服
- Asp.net Mvc Ajax.BeginForm提交表单
- cookie和session必须了解的东西
- Java里的String类为什么是final的
- 【转】chrome devtools protocol——Web 性能自动化