#include#include "board.h" #include "led.h" #include "uart.h" const uint32_t OscRateIn = MAIN_OSC_XTAL_FREQ_HZ; const uint32_t ExtRateIn = EXT_CLOCK_IN_FREQ_HZ; //系统复位 #define System_restart (LPC_SWM->PINENABLE0 = 0xffffffffUL) #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" static TaskHandle_t LED1_Task_Handle; static TaskHandle_t LED2_Task_Handle; static TaskHandle_t LED3_Task_Handle; static TaskHandle_t LED4_Task_Handle; static TaskHandle_t LED5_Task_Handle; static TaskHandle_t LED6_Task_Handle; static TaskHandle_t LED7_Task_Handle; static TaskHandle_t LED8_Task_Handle; #define TASK_STACK_SIZE 32 static void prvSetupHardware(void) { SystemCoreClockUpdate(); DEBUGINIT(); led_Init() ; Board_UARTPutSTR("build date: " __DATE__ " build time: " __TIME__ "n"); } static void vLED1_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(0, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED2_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(1, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED3_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(2, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED4_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(3, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED5_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(4, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED6_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(5, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED7_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(6, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void vLED8_Task (void *pvParameters) { bool LedState = false; while (1) { Board_LED_Set(7, LedState); LedState = (bool) !LedState; vTaskDelay(500); } } static void AppTaskCreate() { baseType_t xReturn =pdPASS; taskENTER_CRITICAL();//进入临界区,禁止中断打断 // xReturn=xTaskCreate(vLED1_Task, "vLED1_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (TaskHandle_t *) &LED1_Task_Handle); xReturn=xTaskCreate(vLED2_Task, "vLED2_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (TaskHandle_t *) &LED2_Task_Handle); xReturn=xTaskCreate(vLED3_Task, "vLED3_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 1UL), (TaskHandle_t *) &LED3_Task_Handle); //只能创建3个任务或者更少时,是堆空间不够,需要扩大 configTOTAL_HEAP_SIZE 或者第三个参数的大小。 xReturn=xTaskCreate(vLED4_Task, "vLED4_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2UL), (TaskHandle_t *) &LED4_Task_Handle); xReturn=xTaskCreate(vLED5_Task, "vLED5_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2UL), &LED5_Task_Handle); xReturn=xTaskCreate(vLED6_Task, "vLED6_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2UL), &LED6_Task_Handle); xReturn=xTaskCreate(vLED7_Task, "vLED7_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2UL), &LED7_Task_Handle); xReturn=xTaskCreate(vLED8_Task, "vLED8_Task", TASK_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2UL), &LED8_Task_Handle); if(pdPASS==xReturn) { // printf("创建LED_Task任务成功rn"); } // vTaskDelete(LED1_Task_Handle);//删除AppTaskCreate任务 // vTaskDelete(LED2_Task_Handle);//删除AppTaskCreate任务 // vTaskDelete(LED3_Task_Handle);//删除AppTaskCreate任务 // vTaskDelete(LED4_Task_Handle);//删除AppTaskCreate任务 taskEXIT_CRITICAL(); //退出临界区 } int main(void) { prvSetupHardware(); // Board_UARTPutSTR("FreeRTOS 动态创建任务nr"); // xTaskCreate((TaskFunction_t)AppTaskCreate,//任务入口 // (const char*)"AppTaskCreate",//任务名字 // configMINIMAL_STACK_SIZE,//任务栈大小 // (void*)NULL,//任务参数 // (UbaseType_t)0,//任务优先级 // (TaskHandle_t)&AppTaskCreate_Handle // ); AppTaskCreate(); vTaskStartScheduler();//任务调度 while (1) {} }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)