文章目录
- 1、使用FreeRTOS进行多任务创建的时候一般有如下两种风格
- (1)先创建好所有的任务,最后启动调度器开始多任务的调度
- (2)先创建一个启动任务后立马开启调度器,然后在启动任务里面创建各种应用,最后启动任务把自己删除
- 2、FreeRTOS的启动流程
- (1)使用 xTaskCreate() 函数创建任务
- (2)使用vTaskStartScheduler()函数开启调度
- (3)我们在临界区创建任务,所以任务只能在退出临界区后才能执行最高优先级任务
1、使用FreeRTOS进行多任务创建的时候一般有如下两种风格
(1)先创建好所有的任务,最后启动调度器开始多任务的调度
int main (void)
{
HardWare_Init();
RTOS_Init();
taskENTER_CRITICAL();
RTOS_TaskCreate(Task1);
RTOS_TaskCreate(Task2);
taskEXIT_CRITICAL();
RTOS_Start();
}
void Task1( void *arg )
{
while (1){
}
}
void Task1( void *arg )
{
while (1){
}
}
(2)先创建一个启动任务后立马开启调度器,然后在启动任务里面创建各种应用,最后启动任务把自己删除
int main (void)
{
HardWare_Init();
RTOS_Init();
RTOS_TaskCreate(AppTaskCreate);
RTOS_Start();
}
void AppTaskCreate( void *arg )
{
RTOS_TaskCreate(Task1);
taskENTER_CRITICAL();
RTOS_TaskCreate(Task2);
RTOS_TaskDelete(AppTaskCreate);
taskEXIT_CRITICAL();
}
void Task1( void *arg )
{
while (1){
}
}
void Task2( void *arg )
{
while (1){
}
}
2、FreeRTOS的启动流程
(1)使用 xTaskCreate() 函数创建任务
为初始化内存的时候一旦调用创建任务 xTaskCreate()函数,FreeRTOS会自动进行内存的初始化。
(2)使用vTaskStartScheduler()函数开启调度
创建完任务后,我们需要开启调度器。
创建仅仅是把任务添加到系统中,还没真正调度,并且空闲任务也没实现,定时器任务也没实现,这些都是在开启调度函数vTaskStartScheduler()中实现的。
空闲任务不可以被挂起与删除,且其优先级必须是最低的。
空闲任务的优先级与堆栈大小都在 FreeRTOSConfig.h 中由用户定义。
(3)我们在临界区创建任务,所以任务只能在退出临界区后才能执行最高优先级任务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)