首页 > 其他分享 >野火FreeRTOS第九章(任务延时列表)实验意外解决办法

野火FreeRTOS第九章(任务延时列表)实验意外解决办法

时间:2023-02-14 13:12:08浏览次数:52  
标签:Task1 Task2 野火 优先级 FreeRTOS 初始化 void 任务 延时

书中说:main()函数内容与第8章一样,无需改动。

但实际代码中,添加了在开启调度前关闭中断的函数,如下红色代码所示:

int main(void)
{	
    /* 硬件初始化 */
	/* 将硬件相关的初始化放在这里,如果是软件仿真则没有相关初始化代码 */
    
    /* 创建任务 */
    Task1_Handle = xTaskCreateStatic( (TaskFunction_t)Task1_Entry,   /* 任务入口 */
					                  (char *)"Task1",               /* 任务名称,字符串形式 */
					                  (uint32_t)TASK1_STACK_SIZE ,   /* 任务栈大小,单位为字 */
					                  (void *) NULL,                 /* 任务形参 */
                                      (UBaseType_t) 2,               /* 任务优先级,数值越大,优先级越高 */
					                  (StackType_t *)Task1Stack,     /* 任务栈起始地址 */
					                  (TCB_t *)&Task1TCB );          /* 任务控制块 */
                                
    Task2_Handle = xTaskCreateStatic( (TaskFunction_t)Task2_Entry,   /* 任务入口 */
					                  (char *)"Task2",               /* 任务名称,字符串形式 */
					                  (uint32_t)TASK2_STACK_SIZE ,   /* 任务栈大小,单位为字 */
					                  (void *) NULL,                 /* 任务形参 */
                                      (UBaseType_t) 2,               /* 任务优先级,数值越大,优先级越高 */                                          
					                  (StackType_t *)Task2Stack,     /* 任务栈起始地址 */
					                  (TCB_t *)&Task2TCB );          /* 任务控制块 */
                                      
    
    /* 在启动调度器前,关闭中断 */                                  
    portDISABLE_INTERRUPTS();
                                      
    /* 启动调度器,开始多任务调度,启动成功则不返回 */
    vTaskStartScheduler();                                      
    
    for(;;)
	{
		/* 系统启动成功不会到达这里 */
	}
}

  如果不加这段代码,会产生错误。

标签:Task1,Task2,野火,优先级,FreeRTOS,初始化,void,任务,延时
From: https://www.cnblogs.com/FBsharl/p/17119238.html

相关文章