Fork me on GitHub

一 概述
在嵌入式小系统领域,freertos是一个非常厉害的角色。它和小芯片结合,能迸发出非常大的威力。这里在H730上使用了这个freertos,是应该做一个总结和备忘。
二 实例解析
1 线程初始化:
freertos最大的优势就是多任务,所以,多线程非常重要,怎么定义一个线程呢?
下面给出一个例子:
  /* definition and creation of Task_ADS1299 */
  osThreadDef(Task_ADS1299, StartTask_ADS1299, osPriorityHigh, 0, 2*512);
  Task_ADS1299Handle = osThreadCreate(osThread(Task_ADS1299), NULL);

  /* definition and creation of Task_MPU6050 */
  osThreadDef(Task_MPU6050, StartTask_MPU6050, osPriorityNormal, 0, 512);
  Task_MPU6050Handle = osThreadCreate(osThread(Task_MPU6050), NULL);

 

这里面其实都是标准的,每个参数的含义可以看函数即可,没有太复杂的逻辑存在。
2 运行
下面这个函数是freertos启动的标志。
  /* Start scheduler */
  osKernelStart();

 

3 线程内部,
线程内部其实是一个非常标准的流程,
初始化加主循环。
void StartTask_ADS1299(void const * argument)
{
  /* USER CODE BEGIN StartTask_ADS1299 */
  //EXTI_PIN_1_Init();
    mprintf("StartTask_ADS1299 success start \n\r");
    static uint32_t ads_task_cnt = 0;

    
  /* Infinite loop */
  for(;;)
  {
    
      osDelay(200);
      ads_task_cnt++;


      //if((ads_data_cnt%10) == 0)
      {
          mprintf("ads_task_cnt is:%d \n\r",ads_task_cnt);
      }
        

  }
  /* USER CODE END StartTask_ADS1299 */
}

 

三 总结
 
1 freertos系统其实非常简介,想要看配置的话,就参考文件:FreeRTOSConfig.h文件。
想要看一下系统的整个流程,也就是看一下queue.c task.c几个文件,如下图所示:
 
 
posted on 2023-11-17 10:01  虚生  阅读(59)  评论(0编辑  收藏  举报