stm32cube中的HAL库用UART时接收个数参数的提供

2019-07-14 14:48发布

研究了两天cube就发现一个问题,HAL库中UART的操作,有DMA和IT两种方式,发送数据时没有问题,接收数据时的函数
HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
和HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer, RXBUFFERSIZE)中都必须提供接收个数这个参数,接收时谁能确定究竟是收多少个,这个参数没法提供,那这就没法用了,改他的HAL也不是好办法,这就决定了cube这个东西没法用了.
有碰到这个问题的吗,想用cube,但是诸如此类的问题解决不了就没法用啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
sonia87
1楼-- · 2019-07-14 19:41
我也是
dreamAnd
2楼-- · 2019-07-14 21:37
 精彩回答 2  元偷偷看……
keith3000
3楼-- · 2019-07-14 23:26
HAL_UART_Receive_IT 仔细研究了下,接收数必须全部接收到,才会停止接收,才会产生HAL_UART_RxCpltCallback 的确有太多的不确定因素 改了每次接收size为1 ,自己另外定义接收的缓存,每次接收一个,在HAL_UART_RxCpltCallback内往自己的缓存丢,循环中再处理接收的数据就可以了。
keith3000
4楼-- · 2019-07-15 03:01
我调通了,可以参照下
基于stm32cubef4带协议的串口通信在407运行成功
http://www.stmcu.org/module/foru ... &fromuid=130604
(出处: 意法半导体STM32/STM8技术社区)
ke3978
5楼-- · 2019-07-15 05:01
一般不知道个数的都是接收到一个产生中断,然后在中断中放进你的缓存。在主程序中你想怎么整就怎么整。这就是道理。ST的库只是提供了一种方法。用不用用哪个怎么用还是咋自己说了算。
zhoujing_oae
6楼-- · 2019-07-15 07:38
串口通信的话还是用帧同步比较好,没有通信协议确实不太方便处理。

一周热门 更多>