gmydsg 发表于 2018-10-24 11:24:08

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重新使能
                        }
}

gmydsg 发表于 2018-10-24 11:27:59

是用Cubemx直接工程生成的代码,其他部分基本都是直接生成,就没贴上去。

发表于 2018-10-24 11:33:29

不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。

gmydsg 发表于 2018-10-24 11:36:43

安 发表于 2018-10-24 11:33
不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。 ...

百度查询发现DMA发送不会丢数据,所以我就使用了这个。那请问一下,如果用DMA发送的话,我这串代码是否有需要更改的地方

gmydsg 发表于 2018-10-24 11:38:23

安 发表于 2018-10-24 11:33
不用DMA发送,直接用查询发送,可以发出去吗?另外注意下,是否进入回调函数。 ...

说可以找官方例程,可是我刚接触,暂时不清楚哪里可以找到我所用芯片信号的例程

发表于 2018-10-24 11:38:28

使用上没有问题。主要是看是否进入了回调函数。确定发送失败的原因。

奏奏奏 发表于 2018-10-24 13:38:59

版主的意思是说HAL_UART_Transmit_IT才是用在中断回调函数中的,HAL_UART_Transmit_DMA用的不合适,对吧?

wenyangzeng 发表于 2018-10-24 13:57:31

建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有例程可参考:


gmydsg 发表于 2018-10-24 15:20:55

wenyangzeng 发表于 2018-10-24 13:57
建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有 ...

谢谢!

gmydsg 发表于 2018-10-24 15:22:11

wenyangzeng 发表于 2018-10-24 13:57
建议楼主如果是刚接触STM32,应该先从最基本的例程开始,USART使用DMA等基本通讯调试成功后再进阶。ST官方有 ...

基本通讯已经今天调通了,就是在好奇如何用串口助手给串口2发数据,串口2再把这个数据发给串口1,串口1最后再发出来。
页: [1]
查看完整版本: HAL库STM32串口2发送数组给串口1异常