一 概述
在嵌入式小系统领域,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几个文件,如下图所示:
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |