/*********************************************************
*Copyright (C), 2018, Shanghai Eastsoft Microelectronics Co., Ltd.
*文件名:  main.c
*作  者:  Jiayc
*版  本:  V1.00
*日  期:  2020/8/24
*描  述:  FreeRTOS_Mutexes演示程序
          MCU：ES8P5088
          FreeRTOS版本：v10.2.1
          创建软件定时器，定时周期1s
          硬件管脚：LED:PA14  UART_TX:PA15 UART_RX:PA16
*备  注:  本软件仅供学习和演示使用，对用户直接引用代码所带来的风险或后果不承担任何法律责任。
**********************************************************/
#include "ES8P508x.h"
#include "stdio.h"
#include "bsp.h"
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"

TimerHandle_t xTimer;

static void vLED_Task(void *pvParameters);
static void vTimerCallback(TimerHandle_t xTimer);


int main()
{
    LED_init();
    UARTInit();

    xTimer = xTimerCreate("Timer",          //创建软件1s定时器
                          1000,
                          pdTRUE,
                          (void *)0,
                          vTimerCallback);
    xTimerStart(xTimer, 0);                 //开始运行定时器

    taskENTER_CRITICAL();                   //进入临界保护

    xTaskCreate(vLED_Task,                  //创建任务
                "LED",
                128,
                NULL,
                5,
                NULL);

    taskEXIT_CRITICAL();                    //退出临界保护

    vTaskStartScheduler();                  //开始任务调度

    for (;;)
    {

    }
}

static void vLED_Task(void *pvParameters)
{

    for (;;)
    {
        LED_toggle();
        vTaskDelay(500);
    }
}

static void vTimerCallback(TimerHandle_t xTimer)    //定时器回调函数
{
    static int times = 0;
    printf("The function 'vTimerCallback' is called back %d times.\r\n", times++);
}

