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 */

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

相关推荐
长安第一美人6 小时前
算能 BM1688 低延迟推流:Qt+WebSocket 直出 H5/HDMI
开发语言·网络·嵌入式硬件·websocket·交互
yongui478346 小时前
STM32 三相电机FOC驱动方案(三电阻单电阻双模式)
stm32·单片机·嵌入式硬件
WeeJot嵌入式7 小时前
【串口】初始串口-轮询模式
stm32·单片机·嵌入式
yong99908 小时前
基于 51 单片机配合霍尔传感器实现计数 + 转速测量
单片机·嵌入式硬件
崇山峻岭之间8 小时前
单片机时钟配置01
单片机·嵌入式硬件
LongRunning9 小时前
【BLE】STM32WB55_资料链接(八)
stm32
踏着七彩祥云的小丑9 小时前
嵌入式——面试题
单片机·嵌入式硬件
椰羊~王小美10 小时前
STM32加密
stm32·单片机·嵌入式硬件
Wave84510 小时前
STM32 启动模式与固件更新机制 (底层深度解析)
stm32·单片机·嵌入式硬件
EVERSPIN10 小时前
国产异步SRAM单片机外扩专用存储芯片
单片机·嵌入式硬件·sram·国产sram·异步sram·国产异步sram