您好,欢迎进入u8国际电动伸缩门有限公司官网!
u8国际|u8国际官方网站|u8国际网址最新

联系我们

邮箱:youweb@admin.com
电话:@HASHKFK
地址:广东省广州市番禺经济开发区 在线咨询

u8国际常见问题

HAL 库串口(USARTUART)驱动 BUGU8国际- U8国际官方网站- 体育APP下载 及解决方法

发布日期:2025-09-22 14:13 浏览次数:

  u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口如果在DMA发送过程中,出现串口错误(可能是发送错误,也可能是接收错误),将进入HAL的中断处理函数,但是处理函数中只处理了DMA的接收部分(将DMA关闭,清除串口的接收标志CR3-DMAR),而对于发送的DMA标志(CR3-DMAT)则没有处理,这样重新初始化后,CR3-DMAT先于DMA通道使能,就导致了再次配置完串口启用DMA发送时出现错误。因此 必须在错误回调函数中,显式清除CR3-DMAT

  关于错误回调函数的调用问题:在DMA模式下,出现错误时,根据HAL库的设计,错误回调函数是在DMA中断处理函数中被调用的。具体流程为:串口接收产生错误 - 关闭使用的DMA - DMA传输完成 - 产生完成中断 - 进入DMA中断处理函数并发现有错误,则调用串口错误处理函数。这就导致了在正常传输时,DMA接收中断是用不到的,但是一旦产生错误时,则会产生DMA传输完成中断。 因此,DMA接收中断只在产生错误时使用。 寄存器的值具体如下所示:

  在HAL库的设计上,调用对应的反初始化函数是非常有必要的!例如:对于串一般需要根据波特率等信息反复初始化。但是,在使用了DMA时,HAL库在设计上将DMA作为MSP部分,而一旦初始化过之后,MSP便不会再次初始化。这就导致了,DMA接收不会复位(NDTR寄存器不会重装)。进一步导致DMA接收存放数据位置有偏移。但是,又不可能先调用反初始化,再调用初始化(没初始化之前,对应的外设的Handle还没有赋值)。反初始化必须在初始化后调用,所以对于HAL库的该问题需要进行额外处理。以下以串口为例(仅仅是两处例子,其他库函数也可能有问题),说明如下:

联系方式

全国服务热线

@HASHKFK

手 机:@HASHKFK

地 址:广东省广州市番禺经济开发区

扫一扫,加微信

Copyright © 2002-2024 u8国际电动伸缩门有限公司 版权所有 非商用版本 备案号: