9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
#include "gd32h7xx.h"
|
||
#include "sys_drv_init.h"
|
||
#include "FreeRTOS.h"
|
||
#include "task.h"
|
||
#include "app_init/app_init.h"
|
||
|
||
/** IAP 占用 0x08000000..0x08007FFF(32KB),APP 链接 @ 0x08008000(见 GD32H759_APP.sct) */
|
||
#define APP_VECTOR_TABLE_OFFSET 0x8000U
|
||
|
||
int main(void)
|
||
{
|
||
/* SystemInit 默认 VTOR=0x08000000;在此重定位到 APP 向量表,不修改 CMSIS 库文件 */
|
||
nvic_vector_table_set(NVIC_VECTTAB_FLASH, APP_VECTOR_TABLE_OFFSET);
|
||
|
||
//初始化
|
||
v_sys_hardware_init();
|
||
|
||
// 初始化应用任务并启动调度器
|
||
app_os_init();
|
||
vTaskStartScheduler();
|
||
|
||
// 理论上不会执行到这里;若调度器异常返回,则进入运行灯闪烁兜底
|
||
while(1)
|
||
{
|
||
RUN_LED_TOGGLE();
|
||
delay_ms(1000U);
|
||
}
|
||
}
|
||
|
||
/* FreeRTOS 空闲任务钩子函数:当系统无就绪任务时会反复进入此回调。
|
||
* 当前用于输出“系统空闲心跳”(慢闪运行灯),便于观察系统仍在正常调度。 */
|
||
void vApplicationIdleHook(void)
|
||
{
|
||
/* Run LED heartbeat moved to timer ISR (v_app_tim_tick_1ms). */
|
||
}
|
||
|
||
/* FreeRTOS 栈溢出钩子:检测到任务栈溢出时回调。
|
||
* 处理策略:关闭中断并进入故障灯循环,故障码为 5。 */
|
||
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
|
||
{
|
||
(void)xTask;
|
||
(void)pcTaskName;
|
||
/* 编码 5:FreeRTOS 栈溢出 */
|
||
taskDISABLE_INTERRUPTS();
|
||
v_fault_blink_code_loop(5U);
|
||
}
|
||
|
||
/* FreeRTOS 内存申请失败钩子:pvPortMalloc 分配失败时回调。
|
||
* 处理策略:关闭中断并进入故障灯循环,故障码为 6。 */
|
||
void vApplicationMallocFailedHook(void)
|
||
{
|
||
/* 编码 6:FreeRTOS malloc 失败 */
|
||
taskDISABLE_INTERRUPTS();
|
||
v_fault_blink_code_loop(6U);
|
||
}
|
||
|
||
|
||
|