|
芯片:STM32L496 库:HAL库 问题描述:在使用HAL库时发现串口在进行DMA发送数据的同时接收DMA数据,有时候会出现串口ORE错误。 通过查阅手册和网上相关问题的资料,发现是DMA发送和接收的HAL库函数都会给DMA上锁(都会调用HAL_DMA_Start_IT 这里边会有__HAL_LOCK(hdma))。然后当出现ORE错误的时候这个锁就无法解开了,然后接收的数据会出现接收到0并且不再向接收数组后边插入值而是往前面插入值。 我发现当我在检测这个到这个错误手动将DMA的Lock和State恢复,就可以避免此问题,串口DMA恢复正常接收数据。 我这样做是对的嘛?为什么这里使用HAL库会给DMA上锁,这不就相当于全双工变为了半双工。 |
关于外部事件(EXTI0)触发SPI读取数据
STM32H7A3 怎样配置MDMA的硬件触发MDMA_REQUEST_DMA1_Stream0_TC将数据再次转运
STM32F429突然死机
stm32u575 gpdma burst length=1 配置其他数值不工作
STM32H725S没有硬件双缓冲吗?
请教STM32F103的DMA空闲接收问题
stm32使用hal库数据疑问
stm32使用hal库开发串口通讯问题
STM32U5系列上电时序
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
微信公众号
手机版