HAL库使用串口dma问题

2019-07-20 13:07发布

使用HAL库的HAL_UART_Transmit_DMA函数,传输完成后进入dma中断,但是只能进一次,看资料说这个函数进入中断后会关掉中断,如果我想连续用dma传输怎么办,HAL感觉用的十分别扭,用dma传串口数据各种中断很难理解,求教大家解决方案
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
flashtt
2019-07-20 14:56
本帖最后由 flashtt 于 2017-7-26 09:39 编辑

找到解决方法了,查看HAL_UART_Transmit_DMA函数源码,发现在传输完成回调函数中有这么一句:CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAT);在normal模式下这就关掉了dma传输,然后进入dma中断,所以只要在dma中断中重新打开即可实现重复传输:
        SET_BIT(huart2.Instance->CR3, USART_CR3_DMAT);
当然也可以修改库函数,说句意外话不懂这些绕来绕去的回调意义何在,我们这些初学者也不敢乱改,看来还得继续熟悉hal库

一周热门 更多>