STM32L0 HAL库 UART 串口读写功能
串口发送功能:
uint8_t TxData[]= "01234abcde";
HAL_UART_Transmit(&huart2,TxData,,0xffff);//把TxData的内容通过uart2发送出去,长度是10,timeout的时间是最大值0xffff
串口接收功能1:
uint8_t value='F';
HAL_UART_Receive(&huart2,(uint8_t *)&value,,);//在这个语句停留1000ms内等待接收1个字节数据,把数据存放在value中
串口接收功能2:
HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,);//程序不会在这个语句停留,直接会按照中断方式把接收数据存放在value中,但是这个语句只能使能一次串口中断。所以要在中断服务函数或者回调函数中重新使能
串口接收功能3:
if(HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,) != HAL_OK){ //这一句写在main函数的while(1)上面。用于启动程序启动一次中断接收
HAL_UART_Transmit(&huart2, (uint8_t *)&"ERROR\r\n",,);
while();
}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
HAL_UART_Transmit(&huart2, (uint8_t *)&"\r\ninto HAL_UART_RxCpltCallback\r\n",,0xffff); //验证进入这个函数了
HAL_UART_Transmit(&huart2,(uint8_t *)&value,,0xffff); //把接收到的数据通过串口发送出去
HAL_UART_Receive_IT(&huart2,(uint8_t *)&value,); //重新打开串口中断
}
串口DMA发送
DMA的TX要这样设置

uint8_t txData[] = {"HelloWorld\r\n"};
HAL_UART_Transmit_DMA(&huart2,txData,sizeof(txData));//可以通过DMA把数据发出去
DMA接收
if(HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-) != HAL_OK)//main函数while(1)前,启动一次DMA接收
{
Error_Handler();
}
串口回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle){
uint8_t temp[] = {"\r\nin Callback\r\n"};
HAL_UART_Transmit_DMA(&huart2,temp,sizeof(temp)-);//可以通过DMA把数据发出去
HAL_UART_Receive_DMA(&huart2, (uint8_t *)rxData, sizeof(rxData)-); //重新使能接收
}
main函数while(1)中不断输出rxData值
HAL_UART_Transmit_DMA(&huart2,rxData,sizeof(rxData)-);//可以通过DMA把数据发出去
STM32L0 HAL库 UART 串口读写功能的更多相关文章
- STM32 HAL库 UART 串口读写功能笔记
https://www.cnblogs.com/Mysterious/p/4804188.html STM32L0 HAL库 UART 串口读写功能 串口发送功能: uint8_t TxData[10 ...
- (4)STM32使用HAL库实现串口通讯——理论讲解
一.查询模式 1. 二.中断模式 1.中断接收. 1.1先看中断接收的流程(以 USART2 为例) 在启动文件中找到中断向量 USART2_IRQHandler 找到USART2_IRQHandle ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
- STM32F072从零配置工程-基于HAL库的串口UART中断配置
先上一个采用串口直接传输的Demo: 此处的思路是完全采用HAL库来实现的,核心是运用HAL_UART_Transmit_IT和HAL_UART_Receive_IT两个函数来实现的,可以作为一个De ...
- STM32基于HAL库通过DMA读写SDIO
通过STM32CUBEMX生成DMA读写sdio的工程,再读写过程中总会卡死在DMA中断等待读写完成的while中,最终发现while等待的标志在SDIO的中断里置位的,而SDIO中断优先级如果小于或 ...
- STM32L0 HAL库 IO读写功能
开发环境使用 MDK5.16a + CUBEMX生成代码 开发板使用:NUCLEO-L053R8 核心芯片:STM32L053R8 今天主要学习了下最基础的IO的读写,IO使用 PA5 LED输出 ...
- STM32L0 HAL库 TIM定时1s
STM32L0的定制器资源: 本实验使用TIM6 HSI频率是16Mhz,则单指令周期是1/16Mhz 预分频设置为1600,则每跑1600下,定时器加1,相当于定时器加1的时间是1600*(1/16 ...
- STM32 HAL库之串口详细篇
一.基础认识 (一) 并行通信 原理:数据的各个位同时传输 优点:速度快 缺点:占用引脚资源多,通常工作时有多条数据线进行数据传输 8bit数据传输典型连接图: 传输的数据是二进制:11101010, ...
- STM32 HAL库 UART使用printf
// 添加这个函数 int fputc(int ch,FILE *f) { uint8_t temp[]={ch}; HAL_UART_Transmit(&UartHandle,temp,,) ...
随机推荐
- How to Configure an SSIS Package to Access a Web Service using WCF
This information is from:http://blogs.msdn.com/b/dbrowne/archive/2010/07/08/how-to-configure-an-ssis ...
- 利用gulp构建你的项目
gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大 ...
- Django——基于类的视图(class-based view)
刚开始的时候,django只有基于函数的视图(Function-based views).为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Funcation-based generic vie ...
- Android_编程规范与经常使用技巧
一.Android编码规范 1.java代码中不出现中文,最多凝视中能够出现中文 2.局部变量命名.静态成员变量命名 仅仅能包括字母,单词首字母出第一个外.都为大写,其它字母都为小写 3.常量命名 仅 ...
- Mysql的建表规范与注意事项
一. 表设计规范 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储 ...
- 改变UITextField的Placeholder颜色
通过 attributedPlaceholder 属性来改变 if([textField respondsToSelector:@selector(setAttributedPlaceholder:) ...
- Rabbitmq消息队列(一) centos下安装rabbitmq
1.简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的 ...
- eclipse 开发 scala
(环境:jdk1.7,scala插件scala-2.1.1.2-site.zip) 1:下载scala插件 http://download.scala-ide.org/sdk/helium/e38/s ...
- oracle高性能的SQL语句的写法
1.当多表查询的时候,把数据量小的表放在最后面,ORACLE会把最后面的表当作基础表,因为表间连接时,最右边的表会被放到嵌套循环的最外层.最外层的循环次数越少,效率越高. 2.Oracle采用自下而上 ...
- Debian Epson L455 打印机
要使用打印机必须要在本机(或局域网其他机器)上安装打印服务,L455是网络打印机,需要IPP协议,而mDNS-scan和avahi-utils是用来发现网络打印机的服务,由于我是摸索着安装的,没太研究 ...