你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HAL库串口空闲中断不定长接收

[复制链接]
likang1202 发布时间:2020-11-20 16:20
HAL库的封装提高了代码的可移植性,但是对常用到串口的不定长接收没有做封装,下面实现一下串口的不定长接收!1、创建工程,使用CUBEIDE创建原始工程,填入文件名选择芯片,启动CUBEMX(以L0为例);
创建工程.png 2、使能RCC和SWD调试接口,配置系统时钟频率
2rcc配置.png
2RCC使能.png
2调试接口使能.png
3、配置串口,使能串口中断,串口接收DMA中断
3usart1配置.png
3usart1使能.png

4、生成源代码
代码生成.png
5、修改stm32l0xx_hal_uart.h文件,先声明串口接收缓存区的大小
idle长度定义.png
在UART_HandleTypeDef结构体中添加接收长度和接收缓存区
长度和缓存区定义.png
6、修改stm32l0xx_hal_uart.c文件,先修改HAL_UART_Receive_DMA函数,使能空闲中断,
HAL_UART_Receive_DMA函数修改前.png
HAL_UART_Receive_DMA修改后.png
再修改HAL_UART_IRQHandler函数,
由于DMA结构体DMA_Channel_TypeDef在F4(NDTR)和L0(CNDTR)中定义不一样,所以F4和L0在修改时有一定差别
HAL_UART_IRQHandler修改前.png HAL_UART_IRQHandler修改后.png
F4的DMA寄存器.png
接着修改HAL_UART_AbortReceive_IT函数
HAL_UART_AbortReceive_IT修改前.png
HAL_UART_AbortReceive_IT修改后.png
最后修改HAL_UART_AbortReceiveCpltCallback函数,该函数是HAL库留给用户的回调函数,可以在重新定义,该例程主要将接收到的数据通过该串口发出去,用户可在该函数中处理数据
HAL_UART_AbortReceiveCpltCallback修改前.png
HAL_UART_AbortReceiveCpltCallback修改后.png
最后在main函数中调用接收DMA函数HAL_UART_Receive_DMA(&huart1, huart1.rxbuf, USART_IDLE_MAX_LENGTH),
编译工程,下载;在串口助手端发送字符串,长度不大于USART_IDLE_MAX_LENGTH,串口助手显示
main函数添加.png
串口助手显示.png
到此工程已实现串口不定长接收功能,但是如果要更改CUBEMX的配置,修改后的文件会被HAL库的标准文件覆盖,如果想将修改后的文件应用到以后的工程中,可以将修改后的文件替换掉原始的HAL库文件,方法如下,在CUBEMX首页,点击Help,选择updater Settings选项,会出现以下界面,图中红框标记的就是HAL库存放位置,进入该文件夹
cubemx源码地址.png
按照以下路径进入STM32L0xx_HAL_Driver文件夹,将stm32l0xx_hal_uart.h文件放入Inc文件夹中,覆盖原先的stm32l0xx_hal_uart.h文件;将stm32l0xx_hal_uart.c文件放入Src文件夹并覆盖,
最终目录.png
验证 现在创建新的L0工程,按照以前CUBEMX配置,生成工程,在main函数中添加函数
HAL_UART_Receive_DMA(&huart1, huart1.rxbuf, USART_IDLE_MAX_LENGTH),编译,下载
串口助手信息.png



HAL_UART_Receive_DMA函数修改前.png
收藏 评论1 发布时间:2020-11-20 16:20

举报

1个回答
呵呵1991 回答时间:2020-11-21 15:13:41
很棒,
大部分人都不是回调,直接按照标准库的处理方式 处理了。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版