OpenEdv-开源电子网

 找回密码
 立即注册
查看: 2629|回复: 0

移植littlevgl后FreeRTOS创建的任务执行异常

[复制链接]

3

主题

6

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-1-2
在线时间
7 小时
发表于 2021-1-18 13:52:14 | 显示全部楼层 |阅读模式
8金钱
使用的是stm32f407zg芯片,采用stm32cubemx添加了LWIP,FREERTOS,移植了LittleVGL,创建了1个闪灯的任务和lvgl任务。如果把下面StartLvglTask任务的lv_chart_test_start()去掉;
测试LWIP的UDP收发功能都正常。如果把lv_chart_test_start();加上,下载后液晶屏幕可以显示图像。
但是闪灯任务只进行了一次。后面是用串口打印的日志。发现StartLvglTask执行了几次就没执行了。
不知道是什么原因?附件有整个代码
[13:24:41.099]收←◆StartLed1Task1
StartLed1Task2
StartLvglTask1
StartLvglTask2

[13:24:41.218]收←◆StartLvglTask3
StartLvglTa
[13:24:41.240]收←◆sk4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTa
[13:24:41.297]收←◆sk1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
[13:24:41.396]收←◆
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3
StartLvglTask4
StartLvglTask1
StartLvglTask2
StartLvglTask3




void StartLvglTask(void const * argument)
{

        lv_chart_test_start();

  for(;;)
  {
          printf("StartLvglTask1\r\n");
        XPT2046_Scan(0);       
          printf("StartLvglTask2\r\n");
        lv_task_handler();
          printf("StartLvglTask3\r\n");
        //osDelay(2);
        vTaskDelay(pdMS_TO_TICKS(1));
          printf("StartLvglTask4\r\n");
  }
  /* USER CODE END StartDefaultTask */
}

void MX_FREERTOS_Init(void) {
  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* USER CODE BEGIN RTOS_MUTEX */
  /* add mutexes, ... */
  /* USER CODE END RTOS_MUTEX */

  /* USER CODE BEGIN RTOS_SEMAPHORES */
  /* add semaphores, ... */
  /* USER CODE END RTOS_SEMAPHORES */

  /* USER CODE BEGIN RTOS_TIMERS */
  /* start timers, add new ones, ... */
  /* USER CODE END RTOS_TIMERS */

  /* USER CODE BEGIN RTOS_QUEUES */
  /* add queues, ... */
  /* USER CODE END RTOS_QUEUES */

  /* Create the thread(s) */
  /* definition and creation of defaultTask */
  //osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
  //defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);

  /* USER CODE BEGIN RTOS_THREADS */
  /* add threads, ... */
  osThreadDef(led1Task, StartLed1Task, osPriorityHigh, 0, 128);
  led1TaskHandle = osThreadCreate(osThread(led1Task), NULL);

  osThreadDef(lvglTask, StartLvglTask, osPriorityNormal, 0, 128);
  lvglTaskHandle = osThreadCreate(osThread(lvglTask), NULL);
}


void StartLed1Task(void const * argument)
{
  /* init code for LWIP */

  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
          printf("StartLed1Task1 \r\n");
        HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_RESET);
        printf("StartLed1Task2\r\n");
        osDelay(500/portTICK_RATE_MS);
        printf("StartLed1Task3\r\n");
        HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,GPIO_PIN_SET);
        osDelay(500/portTICK_RATE_MS);
        printf("StartLed1Task4\r\n");
  }
  /* USER CODE END StartDefaultTask */
}




testLWIP.7z.gz

13.31 MB, 下载次数: 1

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则

关闭

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

正点原子公众号

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

GMT+8, 2024-6-9 17:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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