160 lines
4.3 KiB
C
160 lines
4.3 KiB
C
|
|
/* add user code begin Header */
|
||
|
|
/**
|
||
|
|
******************************************************************************
|
||
|
|
* File Name : freertos_app.c
|
||
|
|
* Description : Code for freertos applications
|
||
|
|
*/
|
||
|
|
/* add user code end Header */
|
||
|
|
|
||
|
|
/* Includes ------------------------------------------------------------------*/
|
||
|
|
#include "freertos_app.h"
|
||
|
|
|
||
|
|
/* private includes ----------------------------------------------------------*/
|
||
|
|
/* add user code begin private includes */
|
||
|
|
|
||
|
|
/* add user code end private includes */
|
||
|
|
|
||
|
|
/* private typedef -----------------------------------------------------------*/
|
||
|
|
/* add user code begin private typedef */
|
||
|
|
|
||
|
|
/* add user code end private typedef */
|
||
|
|
|
||
|
|
/* private define ------------------------------------------------------------*/
|
||
|
|
/* add user code begin private define */
|
||
|
|
|
||
|
|
/* add user code end private define */
|
||
|
|
|
||
|
|
/* private macro -------------------------------------------------------------*/
|
||
|
|
/* add user code begin private macro */
|
||
|
|
|
||
|
|
/* add user code end private macro */
|
||
|
|
|
||
|
|
/* private variables ---------------------------------------------------------*/
|
||
|
|
/* add user code begin private variables */
|
||
|
|
|
||
|
|
/* add user code end private variables */
|
||
|
|
|
||
|
|
/* private function prototypes --------------------------------------------*/
|
||
|
|
/* add user code begin function prototypes */
|
||
|
|
|
||
|
|
/* add user code end function prototypes */
|
||
|
|
|
||
|
|
/* private user code ---------------------------------------------------------*/
|
||
|
|
/* add user code begin 0 */
|
||
|
|
|
||
|
|
/* add user code end 0 */
|
||
|
|
|
||
|
|
/* task handler */
|
||
|
|
TaskHandle_t my_task01_handle;
|
||
|
|
|
||
|
|
/* Idle task control block and stack */
|
||
|
|
static StackType_t idle_task_stack[configMINIMAL_STACK_SIZE];
|
||
|
|
static StackType_t timer_task_stack[configTIMER_TASK_STACK_DEPTH];
|
||
|
|
|
||
|
|
static StaticTask_t idle_task_tcb;
|
||
|
|
static StaticTask_t timer_task_tcb;
|
||
|
|
|
||
|
|
/* External Idle and Timer task static memory allocation functions */
|
||
|
|
extern void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer, StackType_t ** ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize );
|
||
|
|
extern void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer, StackType_t ** ppxTimerTaskStackBuffer, uint32_t * pulTimerTaskStackSize );
|
||
|
|
|
||
|
|
/*
|
||
|
|
vApplicationGetIdleTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION
|
||
|
|
equals to 1 and is required for static memory allocation support.
|
||
|
|
*/
|
||
|
|
void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer, StackType_t ** ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize )
|
||
|
|
{
|
||
|
|
*ppxIdleTaskTCBBuffer = &idle_task_tcb;
|
||
|
|
*ppxIdleTaskStackBuffer = &idle_task_stack[0];
|
||
|
|
*pulIdleTaskStackSize = (uint32_t)configMINIMAL_STACK_SIZE;
|
||
|
|
}
|
||
|
|
/*
|
||
|
|
vApplicationGetTimerTaskMemory gets called when configSUPPORT_STATIC_ALLOCATION
|
||
|
|
equals to 1 and is required for static memory allocation support.
|
||
|
|
*/
|
||
|
|
void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer, StackType_t ** ppxTimerTaskStackBuffer, uint32_t * pulTimerTaskStackSize )
|
||
|
|
{
|
||
|
|
*ppxTimerTaskTCBBuffer = &timer_task_tcb;
|
||
|
|
*ppxTimerTaskStackBuffer = &timer_task_stack[0];
|
||
|
|
*pulTimerTaskStackSize = (uint32_t)configTIMER_TASK_STACK_DEPTH;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* add user code begin 1 */
|
||
|
|
|
||
|
|
/* add user code end 1 */
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief initializes all task.
|
||
|
|
* @param none
|
||
|
|
* @retval none
|
||
|
|
*/
|
||
|
|
void freertos_task_create(void)
|
||
|
|
{
|
||
|
|
/* create my_task01 task */
|
||
|
|
xTaskCreate(my_task01_func,
|
||
|
|
"my_task01",
|
||
|
|
128,
|
||
|
|
NULL,
|
||
|
|
0,
|
||
|
|
&my_task01_handle);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief freertos init and begin run.
|
||
|
|
* @param none
|
||
|
|
* @retval none
|
||
|
|
*/
|
||
|
|
void wk_freertos_init(void)
|
||
|
|
{
|
||
|
|
/* add user code begin freertos_init 0 */
|
||
|
|
|
||
|
|
/* add user code end freertos_init 0 */
|
||
|
|
|
||
|
|
/* enter critical */
|
||
|
|
taskENTER_CRITICAL();
|
||
|
|
|
||
|
|
freertos_task_create();
|
||
|
|
|
||
|
|
/* add user code begin freertos_init 1 */
|
||
|
|
|
||
|
|
/* add user code end freertos_init 1 */
|
||
|
|
|
||
|
|
/* exit critical */
|
||
|
|
taskEXIT_CRITICAL();
|
||
|
|
|
||
|
|
/* start scheduler */
|
||
|
|
vTaskStartScheduler();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief my_task01 function.
|
||
|
|
* @param none
|
||
|
|
* @retval none
|
||
|
|
*/
|
||
|
|
void my_task01_func(void *pvParameters)
|
||
|
|
{
|
||
|
|
/* add user code begin my_task01_func 0 */
|
||
|
|
|
||
|
|
/* add user code end my_task01_func 0 */
|
||
|
|
|
||
|
|
/* add user code begin my_task01_func 2 */
|
||
|
|
|
||
|
|
/* add user code end my_task01_func 2 */
|
||
|
|
|
||
|
|
/* Infinite loop */
|
||
|
|
while(1)
|
||
|
|
{
|
||
|
|
/* add user code begin my_task01_func 1 */
|
||
|
|
|
||
|
|
vTaskDelay(1);
|
||
|
|
|
||
|
|
/* add user code end my_task01_func 1 */
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
/* add user code begin 2 */
|
||
|
|
|
||
|
|
/* add user code end 2 */
|
||
|
|
|