工具与软件:
#include <stdlib.h> #include <kernel/dpl/DebugP.h> #include "ti_drivers_config.h" #include "ti_board_config.h" #include "ti_drivers_open_close.h" #include "ti_board_open_close.h" #include "FreeRTOS.h" #include "task.h" #define MAIN_TASK_PRI (configMAX_PRIORITIES-1) #define MAIN_TASK_SIZE (16384U/sizeof(configSTACK_DEPTH_TYPE)) #define I2C_TASK_PRI (configMAX_PRIORITIES-2) #define I2C_TASK_SIZE (4096U/sizeof(configSTACK_DEPTH_TYPE)) #define GPIO_TASK_PRI (configMAX_PRIORITIES-3) #define GPIO_TASK_SIZE (1024U/sizeof(configSTACK_DEPTH_TYPE)) StackType_t gMainTaskStack[MAIN_TASK_SIZE] __attribute__((aligned(32))); StaticTask_t gMainTaskObj; TaskHandle_t gMainTask; StackType_t gI2CTaskStack[I2C_TASK_SIZE] __attribute__((aligned(32))); StaticTask_t gI2CTaskObj; TaskHandle_t gI2CTask; StackType_t gGPIOTaskStack[GPIO_TASK_SIZE] __attribute__((aligned(32))); StaticTask_t gGPIOTaskObj; TaskHandle_t gGPIOTask; void empty_main_i2c(void *arg0); void gpio_led_blink_main(void *args); void *empty_main_spi(void *arg0); void freertos_main(void *args) { int32_t status = SystemP_SUCCESS; /* Open drivers */ Drivers_open(); /* Open flash and board drivers */ status = Board_driversOpen(); DebugP_assert(status == SystemP_SUCCESS); /* Create the hello world task */ gI2CTask = xTaskCreateStatic(empty_main_i2c, /* Pointer to the task function */ "empty_main_i2c", /* Task name for debugging */ I2C_TASK_SIZE, /* Stack size */ NULL, /* Task parameter */ I2C_TASK_PRI, /* Task priority */ gI2CTaskStack, /* Stack buffer */ &gI2CTaskObj); /* Task control block */ configASSERT(gI2CTask != NULL); /* Create the beautiful task */ gGPIOTask = xTaskCreateStatic(gpio_led_blink_main, /* Pointer to the task function */ "gpio_led_blink_main", /* Task name for debugging */ GPIO_TASK_SIZE,/* Stack size */ NULL, /* Task parameter */ GPIO_TASK_PRI, /* Task priority */ gGPIOTaskStack,/* Stack buffer */ &gGPIOTaskObj);/* Task control block */ configASSERT(gGPIOTask != NULL); empty_main_spi(NULL); /* Close board and flash drivers */ Board_driversClose(); /* Close drivers */ Drivers_close(); vTaskDelete(NULL); } int main() { /* init SOC specific modules */ System_init(); Board_init(); /* This task is created at highest priority, it should create more tasks and then delete itself */ gMainTask = xTaskCreateStatic(freertos_main, /* Pointer to the function that implements the task. */ "freertos_main", /* Task name for debugging */ MAIN_TASK_SIZE, /* Stack size */ NULL, /* Task parameter */ MAIN_TASK_PRI, /* Task priority */ gMainTaskStack, /* Stack buffer */ &gMainTaskObj); /* Task control block */ configASSERT(gMainTask != NULL); /* Start the scheduler to start the tasks executing. */ vTaskStartScheduler(); /* This line should never be reached */ DebugP_assertNoLog(0); return 0; }
这可以使用单个主文件来实现吗?