DMA计算接收长度和发送中断的用法

2019-07-20 17:15发布

已实现阻塞的发送接收,非阻塞的接收中断。现在实现UART的DMA数据传送,已实现定长数据接收,并用阻塞式发送出来;但是用非阻塞式中断接收的方式计算长度,目前没有调通,就是DMA接收1个数据,再在回调函数中把数据放入另一个数组并计算长度并再开启DMA接收。  
问题一:DMA中断如何算出计算的长度     难道是DMA的原理不允许一个一个的发送吗?百度上的帖子说过DMA中断相比uart中断次数少
问题二:DMA或者transmit_IT发送中断怎么用,不能理解   比如 发送中断是在while(1)前调用一次,再在callback中继续调用;当板子接收到数据时,从第一个receive_IT进入,并在回调函数中再次调用;那发送中断就是用transmit_IT发送一个数据时进入中断处理函数;写在这里好像明白点了;那么发送时在中断函数里做些什么好呢,大家举个实例好吗?比如接收中断里是接收数据到指定的数组并计算长度。

大家给下思路,谢谢啦!(前面轮询和接收中断都发帖了 ,没人理,一个是没多少其他板子经验,就用过MSP432和STM32F7 都是新板子  第一次接触cube和HAL  学了一周了)  大家给下思路 ,我继续在板子上下程序  看效果  搞通为止    PS:用到了UART  DMA  RS485
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
为我的心
1楼-- · 2019-07-21 16:26
请问空闲中断应该在那个函数里设置? 主函数   接收指定数据比如100个HAL_UART_Receive_DMA  (); 接收数据到一半和完全接收会分别进入一次 DMA1_Stream3_IRQHandler();完全接收进入 HAL_UART_RxCpltCallback()   

一周热门 更多>