minifly_v1.3学习笔记(一)main.c

main.c文件主要包括了初始化各外设的main函数,以及freertos的任务创建函数。

1. main函数

int main()
{
    systemInit();			/*底层硬件初始化*/

    xTaskCreate(startTask, "START_TASK", 300, NULL, 2, &startTaskHandle);	/*创建起始任务*/

    vTaskStartScheduler();	/*开启任务调度*/

    while(1) {};
}

systemInit();函数即为硬件初始化函数,较为复杂,此处不深入讨论了。

**

2. 任务创建函数

**

minifly_v1.3学习笔记(一)main.c_第1张图片

创建了10个任务

与开发手册的流程图对比一下,参数配置,电源管理,拓展模块就没有给出了。

stabilizerTask:四轴平衡控制任务。该任务运行的内容比较多,也是比较关键的内容。
包括传感器数据读取,数据融合,获取控制数据,空翻检测,异常检测,PID 控制,PWM 输出控制等。

minifly_v1.3学习笔记(一)main.c_第2张图片

**

3. 看门狗

**
main.c的最后,在空闲任务的钩子函数中,设置了一个150ms的看门狗,如下:

void vApplicationIdleHook( void )
{
    static u32 tickWatchdogReset = 0;

    portTickType tickCount = getSysTickCnt();

    if (tickCount - tickWatchdogReset > WATCHDOG_RESET_MS)
    {
        tickWatchdogReset = tickCount;
        watchdogReset();
    }

    __WFI();	/*进入低功耗模式*/
}

你可能感兴趣的:(minifly)