stm32串口hal库

背景

之前使用的都是标准库,包括国产芯片,都是标准库

现在想使用IAP升级:顺便hal库研究一下串口,顺便做笔记;

思路结构

标准库中,使用DMA加串口空闲中断,可以实现不定长接收;

所以使用如上方式;

hal库应用

无论是空闲中断,还是DMA中断,都会调用如下:

HAL_UARTEx_RxEventCallback

读取空闲标记位、和dma传输完成,都不能正常使用,反倒是不需要正常使用;(标准库必须有)

以为标记,会被库提前清除

正常的配置cubemx

省略.....

初始化的时候增加

cpp 复制代码
HAL_UART_Transmit_DMA(&huart1, (uint8_t *)"test_init", sizeof("test_init"));//测试初始化是否正常
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, (uint8_t *)rx_buff, usart_rx_len);

接收回调定义如下

cpp 复制代码
/* USER CODE BEGIN 1 */

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
		if(huart->Instance==USART1)
		{
				//if(__HAL_UART_GET_IT_SOURCE(huart, UART_IT_IDLE)/*||__HAL_DMA_GET_IT_SOURCE(huart->hdmarx, DMA_IT_TC)*/)
				{

						HAL_UARTEx_ReceiveToIdle_DMA(huart, (uint8_t *)rx_buff, usart_rx_len);
						HAL_UART_Transmit_DMA(huart, (uint8_t *)rx_buff, usart_rx_len);
				}
		}
}

/* USER CODE END 1 */

这样就完成了不定长接收的简单用例;

相关推荐
黑妹天下第一乖1 小时前
第 08 讲:阿加犀 AidGenSE 端侧大模型服务化与 OpenAI 兼容接口
人工智能·嵌入式硬件·深度学习·机器人·iot
辰哥单片机设计1 小时前
漏水传感器(STM32)
stm32·单片机·嵌入式硬件
恶魔泡泡糖1 小时前
stm32F103C8T6标准库串口接收之多串口基础应用5
stm32·单片机·嵌入式硬件
木子单片机2 小时前
基于51单片机计步器—无线蓝牙APP上传
单片机·嵌入式硬件·51单片机·keil
智者知已应修善业2 小时前
【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15
c++·经验分享·笔记·单片机·蓝桥杯·硬件架构
恒锐丰科技林技术员2 小时前
EG2123A 三相独立半桥驱动芯片解析与工程应用
经验分享·嵌入式硬件·硬件工程
硅基手札2 小时前
【Linux 内核专栏 13】快IO层
linux·服务器·嵌入式硬件
李日华大战鸡红3 小时前
滑膜观测器(学习记录)
stm32·单片机·学习·matlab·机器人
白搞电子3 小时前
ESP32-S31 项目如何制作 Windows 一键烧录包:完整镜像、esptool 与数据边界
windows·stm32·单片机
xiangw@GZ4 小时前
纽扣电池型号
嵌入式硬件