1. Task 생성 API
BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const configSTACK_DEPTH_TYPE usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask )
설명
TaskFunction_t pxTaskCode : Task로 쓸 함수!
const char * const pcName : Task를 설명할 String
const configSTACK_DEPTH_TYPE usStackDepth : 스택 메모리 설정(word단위 byte가 아닙니다!)
void * const pvParameters : Task에 전달될 데이터의 포인터
UBaseType_t uxPriority : 우선순위 설정
TaskHandle_t * const pxCreatedTask : Task의 Handle로 전달할 값이며 Null로 지정 가능
2. 소스코드
#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"
void task1_handler(void* parameters);
void task2_handler(void* parameters);
int main(void)
{
TaskHandle_t task1_handle;
TaskHandle_t task2_handle;
BaseType_t status;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
status = xTaskCreate(task1_handler, "Task_1", 400, "Hello world from Task-",2,&task1_handle);
configASSERT(status == pdPASS); //Task 생성 확인
status = xTaskCreate(task1_handler, "Task_2", 400, "Hello world from Task-",2,&task2_handle);
configASSERT(status == pdPASS); //Task 생성 확인
//start freertos
vTaskStartScheduler();
}
void task1_handler(void* parameters) //Java와 달라서 한번실행되고 끝나기 때문에 무한루프를 걸어줘야 한다!
{
while(1)
{
printf("%s\n", (char*)parameters);
}
vTaskDelete(NULL);}void task2_handler(void* parameters)
{
while(1)
{
printf("%s\n", (char*)parameters);
}
vTaskDelete(NULL);
}
void task2_handler(void* parameters) //Java와 달라서 한번실행되고 끝나기 때문에 무한루프를 걸어줘야 한다!
{
while(1)
{
printf("%s\n", (char*)parameters);
}
vTaskDelete(NULL);}void task2_handler(void* parameters)
{
while(1)
{
printf("%s\n", (char*)parameters);
}
vTaskDelete(NULL);
}
참고사이트(freeRtos.org)
'하드웨어 > STM32(FreeRTOS)' 카테고리의 다른 글
5.STM32 FreeRTOS - preemptive, non-preemptive 설정하기 (0) | 2021.10.20 |
---|---|
4.STM32 FreeRTOS - CUBEIDE, Truestudio printf()함수로 디버깅 하기 (0) | 2021.10.20 |
2.STM32 FreeRTOS - systick Timer를 변경해주기 (0) | 2021.10.18 |
1. STM32 FreeRTOS - 직접 포팅하기 (0) | 2021.10.18 |
FreeRtos - CMSIS1과 CMSIS2의 차이점 (0) | 2021.10.12 |