一 概述 在嵌入式小系统领域,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几个文件,如下图所示: 标签:Task,freertos,ADS1299,解决方案,StartTask,task,stm32H730,ads From: https://www.cnblogs.com/dylancao/p/17838019.html