104 lines
2.8 KiB
C++
104 lines
2.8 KiB
C++
#include <ti_msp_dl_config.h>
|
||
#include <FreeRTOS.h>
|
||
#include <task.h>
|
||
|
||
/************* 用户模块引入部分 ************/
|
||
|
||
#include <include/user/Led.h>
|
||
|
||
// TODO
|
||
|
||
/**************** 测试部分 ***************/
|
||
|
||
// TODO
|
||
|
||
/************ FreeRtos 任务定义区 ************/
|
||
|
||
[[noreturn]] void vLedTask(void *pvParameters) {
|
||
while (true) {
|
||
Led::on(LED0);
|
||
vTaskDelay(pdMS_TO_TICKS(500)); // 每500毫秒切换一次LED状态
|
||
Led::off(LED0);
|
||
vTaskDelay(pdMS_TO_TICKS(500)); // 每500毫秒切换一次LE+D状态
|
||
}
|
||
}
|
||
|
||
// TODO
|
||
|
||
/***************** 主函数 ******************/
|
||
|
||
int main() {
|
||
/*** SysConfig 初始化 ***/
|
||
SYSCFG_DL_init();
|
||
|
||
/*** 模块初始化 ***/
|
||
|
||
/*** FreeRtos 任务初始化 ***/
|
||
xTaskCreate(vLedTask, "TestLedTask", 32, nullptr, 1, nullptr);
|
||
|
||
/*** 启动 FreeRtos ***/
|
||
vTaskStartScheduler();
|
||
|
||
return 0;
|
||
}
|
||
|
||
/************ FreeRtos 错误处理部分 ************/
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName) {
|
||
/* 栈溢出时的处理代码 */
|
||
/* 例如,打印错误信息并重置系统 */
|
||
|
||
/* 参数:
|
||
* xTask - 发生栈溢出的任务句柄
|
||
* pcTaskName - 发生栈溢出的任务名称
|
||
*/
|
||
|
||
/* 通常在这里添加一些错误处理和系统恢复的代码 */
|
||
while (1) {
|
||
/* 可以在此处添加错误处理代码,如闪烁LED或输出调试信息 */
|
||
}
|
||
}
|
||
|
||
/* 在全局范围内定义存储空间 */
|
||
static StaticTask_t xIdleTaskTCB;
|
||
static StackType_t uxIdleTaskStack[configMINIMAL_STACK_SIZE];
|
||
|
||
/* 实现所需的函数 */
|
||
void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,
|
||
StackType_t **ppxIdleTaskStackBuffer,
|
||
uint32_t *pulIdleTaskStackSize) {
|
||
/* 传递静态分配的空闲任务数据结构的地址 */
|
||
*ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
|
||
|
||
/* 传递静态分配的空闲任务堆栈的地址 */
|
||
*ppxIdleTaskStackBuffer = uxIdleTaskStack;
|
||
|
||
/* 传递堆栈大小 */
|
||
*pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
|
||
}
|
||
|
||
|
||
/* 为定时器任务定义静态内存 */
|
||
static StaticTask_t xTimerTaskTCB;
|
||
static StackType_t uxTimerTaskStack[configTIMER_TASK_STACK_DEPTH];
|
||
|
||
void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,
|
||
StackType_t **ppxTimerTaskStackBuffer,
|
||
uint32_t *pulTimerTaskStackSize) {
|
||
/* 传递静态分配的定时器任务数据结构的地址 */
|
||
*ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
|
||
|
||
/* 传递静态分配的定时器任务堆栈的地址 */
|
||
*ppxTimerTaskStackBuffer = uxTimerTaskStack;
|
||
|
||
/* 传递堆栈大小 */
|
||
*pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
|
||
}
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif |