OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2442|回复: 1

STM32F429 cubeMX单链表串口问题

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-4-30
在线时间
5 小时
发表于 2020-6-21 15:22:03 | 显示全部楼层 |阅读模式
我设计了一个SMT32f429的串口的接收数据并重新打印数据在屏幕上的程序,不定长型,用的是单链表解决。但不知道为什么,数据发送超过31之后,会接受到null值,现在不知道是什么原因,请大佬们帮助解答下.
这个是接受不定长的17个数据的图像
不定长数据1.png
这个是接受不定长数据21个的图像
不定长2.png
这个是31个
不定长3.png
到这里都很完美,单链表数据存储也没有出错,内存这么数据也不可能爆表。
但就是发送超过31后的数据,只能输出打印31个,不知道问题出在哪里,查过串口接受部分的确接受了41个,但在串口回调函数处却表明有接受过一次null值,输出表明第31个后有null值,实在不知道怎么解决。复位重启后直接输出41个也是这样,求大佬帮忙解答下。
发送错误丢失数据.png
串口回调函数部分:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  /* Prevent unused argument(s) compilation warning */
  if(huart->Instance == USART1){
                numss++;
    creatPointer(BuffPtr);//创建单链表,添加数据
    if(BuffPtr == 0x0a){
      overFalg = 1;
      BuffPtr = 0;
    }
                if(BuffPtr == NULL){
     HAL_UART_Transmit(&huart1,(uint8_t*)"\r\n====\r\n",8,100);
    }
    HAL_UART_Receive_IT(&huart1, &BuffPtr, 1);
  }
  /* NOTE: This function should not be modified, when the callback is needed,
           the HAL_UART_RxCpltCallback could be implemented in the user file
   */
}

单链表添加:
void creatPointer(uint8_t data){
    struct Pointer* pointer = (struct Pointer*)malloc(sizeof(struct Pointer));;
    pointer->data = data;
    pointer->next = NULL;
    if(head == NULL){
        head = pointer;
    }else
        end->next = pointer;
    end = pointer;
}

单链表输出:
void outPointer(){
  struct Pointer *temp = head;
  while (temp !=NULL){
                nums2++;
    HAL_UART_Transmit(&huart1,&(temp->data),1,1000);
    while(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_TC)!=SET);

                        temp = temp->next;
  }

}

2_UART_Chain.rar (19.26 MB, 下载次数: 12)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-4-30
在线时间
5 小时
 楼主| 发表于 2020-6-21 15:22:42 | 显示全部楼层
串口只要在31下都能很好的接受,唯独超过后就不行,郁闷
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-1 07:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表