HAL库STM32串口2发送数组给串口1异常
刚结束STM32,所以想请教一下。就是我想用串口2接收数据然后发送给串口1,串口1接收后再发送出去,可是怎么调试也不对,下面贴上我的代码,请大佬们帮个忙,纠结死了。(这部分是接收)HAL_UART_Receive_DMA(&huart2,u1buf,21);下面是判断部分的代码
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
UNUSED(huart);
if(huart->Instance == USART1) //判断由哪个串口触发中断
{
HAL_UART_Transmit_DMA(&huart1,u1buf,21,0xFFFF);//接收到数据马上用串口1发送
HAL_UART_Receive_DMA(&huart1,u1buf,21); //串口1重新使能
}
if(huart->Instance == USART2)
{
HAL_UART_Transmit_DMA(&huart2,u2buf,21,0xFFFF); //接收到数据马上用串口2发送
HAL_UART_Receive_DMA(&huart2,u2buf,21); //串口2重新使能
}
}
是用Cubemx直接工程生成的代码,其他部分基本都是直接生成,就没贴上去。 不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。 安 发表于 2018-10-24 11:33
不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。 ...
百度查询发现DMA发送不会丢数据,所以我就使用了这个。那请问一下,如果用DMA发送的话,我这串代码是否有需要更改的地方 安 发表于 2018-10-24 11:33
不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。 ...
说可以找官方例程,可是我刚接触,暂时不清楚哪里可以找到我所用芯片信号的例程 使用上没有问题。主要是看是否进入了回调函数。确定发送失败的原因。 版主的意思是说HAL_UART_Transmit_IT才是用在中断回调函数中的,HAL_UART_Transmit_DMA用的不合适,对吧? 建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有例程可参考:
wenyangzeng 发表于 2018-10-24 13:57
建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有 ...
谢谢! wenyangzeng 发表于 2018-10-24 13:57
建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有 ...
基本通讯已经今天调通了,就是在好奇如何用串口助手给串口2发数据,串口2再把这个数据发给串口1,串口1最后再发出来。
页:
[1]