- #include "FreeRTOS.h"
- #include "task.h"
- #include "platform.h"
- #include <stdio.h>
- #define LED_TASK_STACK_SIZE 128
- #define PRINT_TASK_STACK_SIZE 256
- void vLED1Task(void *pvParameters) {
- while(1) {
- PLATFORM_LED_Toggle(LED1);
- printf("LED1 TASK 100MS!\r\n");
- vTaskDelay(pdMS_TO_TICKS(100));
- }
- }
- void vLED2Task(void *pvParameters) {
- while(1) {
- PLATFORM_LED_Toggle(LED2);
- printf("LED2 TASK 500MS!\r\n");
- vTaskDelay(pdMS_TO_TICKS(500));
- }
- }
- void vPrintTask(void *pvParameters) {
- while(1) {
- printf("Hello MM32F0121 FreeRTOS!\r\n");
- vTaskDelay(pdMS_TO_TICKS(2000));
- }
- }
- void vApplicationMallocFailedHook(void)
- {
- printf("Malloc failed!\r\n");
- taskDISABLE_INTERRUPTS();
- while(1);
- }
- void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
- {
- printf("Stack overflow in task: %s\r\n", pcTaskName);
- taskDISABLE_INTERRUPTS();
- while(1);
- }
- void freeRTOS_Demo(void)
- {
- xTaskCreate(vLED1Task, "LED1", LED_TASK_STACK_SIZE, NULL, 2, NULL);
- xTaskCreate(vLED2Task, "LED2", LED_TASK_STACK_SIZE, NULL, 2, NULL);
- xTaskCreate(vPrintTask, "Print", PRINT_TASK_STACK_SIZE, NULL, 3, NULL);
-
- vTaskStartScheduler();
-
-
- printf("Scheduler failed to start.\r\n");
- while(1);
- }
编译器一定要选择版本5的。
配置头文件路径:
运行结果: