单片机/MCU论坛
直播中

笑过就走

10年用户 991经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术
私信 关注
[问答]

uart接收数据,CDC发给电脑总有问题怎么解决?

CDC先给STM32发指令,然后STM32获得uart2的11个数据(数据结构,一位数据长度,跟着10个数据),通过CDC把10位数据发给电脑。
问题,1,发的数据数量总是有问题。这个已经通过中间变量解决,但是目前仍不知道数量改变的机制。
           2,发一次指令有用,但是下一次就没有数据了,然后再发一次才有。经过示波器查看,uart没有动作。所以问题应该是没有触发CDC。应该如何解决呢?


//回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{   

  UNUSED(huart2);
  Rx_temp[R_Num]=aRxBuffer;
   if (R_Num==0)
  {
    Rx_Num=Rx_temp[0];
  }
  R_Num++;
  if (R_Num>Rx_Num)
  {
  Rx_Flag = 1;
  R_Num=0;
  }

  if(R_Num>15)
  {
    Rx_Flag = 1;
    R_Num=0;
  }

  HAL_UART_Receive_IT( huart2 (uint8_t *) aRxBuffer 1);
}


int main(void)
{


//初始化略
HAL_UART_Receive_IT( huart2(uint8_t *) aRxBuffer1);//开启uart中断

while (1)
  {


if (Rx_Flag==1)
{
  TempNum = (uint8_t)Rx_Num;//如果没有这个中间变量,Rx_Num会自己变化,不知道是为什么。
   for (i=0;i=CDC_rx_len)
         {
           CDC_rx_len = 0;
           i=0;
          }

}

回帖(1)

朱虹博

2023-11-6 10:27:12

  • 先看看串口的驱动是不是写好了,调试一下,发纯数据时 ,会不会正常
    再看看协议上你的缓存啊,接收频率啊,中断是不是对的

                   
举报

更多回帖

发帖
×
20
完善资料,
赚取积分