你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
张亚飞 发表于 2017-6-2 16:31 肯定是关了中断的,不然也不会每次在回调函数里边/HAL_UART_Receive_IT(&huart2,Uart2Data,1); 开启下一 ...
安 发表于 2017-6-3 09:51 我改过是可以的。可以通过判断接收剩余字数,这样来确定当前已经接收到多少。 ...
深谷幽泉 发表于 2017-6-4 19:19 DMA +空闲中断接收数据是正解,不过没试过你们说的cube库,我都是用的标准库 ...
安 发表于 2017-6-5 08:57 我是把下面代码中的关闭中断部分 __HAL_UART_DISABLE_IT(huart, UART_IT_RXNE);去掉了。 if(--huart->RxXf ...
安 发表于 2017-6-5 09:38 这样改就会导致一直在收数据,执行一次就可以了。
张亚飞 发表于 2017-6-5 10:35 我是那么改的驱动,为什么就是不行呢。 怎么都做不到发送几个字节就收到几个字节。 下边我贴一下代码,您 ...
Your UAT Feedback is needed within today.
5.18活动板子会不会是STM32L4呢
STM32隐藏
STM32 CUBE软件中找不到STM32L4系列单片机
应用
AAA
tiwen
BBBB
aaa
2222
我觉得每次中断后,没有关闭中断,执行这个函数 HAL_UART_Receive_IT(&huart2,Uart2Data,1); 只是重新设置了下一个数据存放的位置还是从Uart2Data[0] 开始。
能否贴一下代码,现在工程改的有点乱即使改对了也可能某个地方导致接收中断出现问题,间接导致改驱动不成功。 谢谢。
if(--huart->RxXferCount == 0)
{
__HAL_UART_DISABLE_IT(huart, UART_IT_RXNE);
/* Check if a transmit process is ongoing or not */
if(huart->State == HAL_UART_STATE_BUSY_TX_RX)
{
huart->State = HAL_UART_STATE_BUSY_TX;
}
else
{
/* Disable the UART Parity Error Interrupt */
__HAL_UART_DISABLE_IT(huart, UART_IT_PE);
/* Disable the UART Error Interrupt: (Frame error, noise error, overrun error) */
__HAL_UART_DISABLE_IT(huart, UART_IT_ERR);
huart->State = HAL_UART_STATE_READY;
}
HAL_UART_RxCpltCallback(huart);
return HAL_OK;
}
标准库的接收不用定长接收吧。
这样改了有别的副作用吗? 比如影响发送。如果关闭了中断的话,那么接收完数据也就没必要再HAL_UART_Receive_IT(&huart1,&RxData,1); 执行这个函数开启下一次中断了吧。
我是那么改的驱动,为什么就是不行呢。 怎么都做不到发送几个字节就收到几个字节。 下边我贴一下代码,您帮忙看下有问题嘛。
Uart2Data 是 uint8_t UartData[20];