creep 发表于 2015-7-2 17:49:09

Nick20150702 发表于 2015-7-2 17:45
哎,可是还必须用这个.所以是不是只能用我上边的做法啊?

为什么必须要这个,你必须要用DMA接收吗?

Nick20150702 发表于 2015-7-2 17:52:51

creep 发表于 2015-7-2 17:49
为什么必须要这个,你必须要用DMA接收吗?

对啊, 要用DMA缓存..

creep 发表于 2015-7-2 17:59:22

Nick20150702 发表于 2015-7-2 17:52
对啊, 要用DMA缓存..

那就使用那个DMA接收模式的函数吧,然后打开DMA中断,传送完成后在中国暖中处理数据。

Nick20150702 发表于 2015-7-2 18:04:47

creep 发表于 2015-7-2 17:59
那就使用那个DMA接收模式的函数吧,然后打开DMA中断,传送完成后在中国暖中处理数据。 ...

就是说 我要一直调用这个HAL_UART_Receive_DMA, 然后在callback里 处理数据..哎..

creep 发表于 2015-7-2 18:09:21

Nick20150702 发表于 2015-7-2 18:04
就是说 我要一直调用这个HAL_UART_Receive_DMA, 然后在callback里 处理数据..哎..

这个函数调用一次就可以了,接收到你设定的个数的数据后会进入中断函数。不用一直调用。你进到函数里面看看那它的处理就明白了。

Nick20150702 发表于 2015-7-2 18:11:50

creep 发表于 2015-7-2 18:09
这个函数调用一次就可以了,接收到你设定的个数的数据后会进入中断函数。不用一直调用。你进到函数里面看 ...

那我如果RX一直 有数据送来,还只调用一次吗?

creep 发表于 2015-7-2 18:35:03

Nick20150702 发表于 2015-7-2 18:11
那我如果RX一直 有数据送来,还只调用一次吗?

理论上你可以设置一个很大的数组用于一直接收发送来的数据。

Nick20150702 发表于 2015-7-2 18:39:56

creep 发表于 2015-7-2 18:35
理论上你可以设置一个很大的数组用于一直接收发送来的数据。

对呀,确实有一个很大的buffer 接受数据, 可是我不确定HAL_UART_Receive_DMA怎么用呢..

chifen 发表于 2015-7-2 19:48:31

:)路过



watershade 发表于 2015-7-2 22:11:28

DMA也使用IT的回掉,不过你需要配置好DMA中断。
页: 1 [2] 3 4
查看完整版本: HAL_UART_Receive_DMA 和 HAL_UART_Transmit_DMA 怎么用 在线等呢.