해결된 질문
작성
·
266
1
여기서 priority = 6으로 되어있는데 10이 아니라 왜 그런걸까요
TASK_1_PRIO = 10으로 되어있고
TASK_1_PRIO 를 다른값으로 변경해도 6으로 출력됩니다.
답변 2
0
2번 질문에 대해서 원인을 찾아서 공유드리고자 글남깁니다.
.ioc 설정 middleware쪽 freertos 관련 설정에 MAX_PRIORITES 설정에서 MAX값이 기본 7로되어있어서
소스코드에서 설정한 값인 10을 출력을 못하는 상황입니다. MAX값 32MAX로 해놓으면 됩니다.
0
안녕하세요. 김영선님!
제 영상을 시청해주셔서 감사드립니다 :)
두 가지 질문 주셨네요. 하나씩 설명드리겠습니다.
ANS1) FreeRTOSConfig.h 파일이나 FreeRTOSConfig_base.h 파일에 원하시는 내용(e.g. INCLUDE_eTaskGetState) 을 추가하시면 됩니다.
FreeRTOS 는 이와 같은 헤더 파일을 통해서 사용자가 RTOS 을 커스터마이징 할 수 있도록 돕고 있습니다.
ANS2) 제가 실습 예제(01_TASKMAN) 을 실행해보면 아래와 같이 출력됩니다.
------- Task1 information -------
task1 name = Task1
task1 priority = 10
task1 status = 0
아래와 같이 동일 실습 예제의 정답지로 실행해보시고 비교해보시면 좋을 것 같습니다.
STM32freeRTOS-answer
|---- 01_TASKMAN
이처럼 해보시고, 그래도 문제가 발생하면 제 이메일 주소(guileschool@gmail.com)로 파일을 보내주시면 확인해 보겠습니다.
가급적 ioc 파일의 수정은 비추드립니다. 수정하면 안되는 이유는 다음 강좌 참고 소스코드 분석-FreeRTOSConfig
ioc 파일에 변경을 가하면 말씀하셨던 상수값이 아래와 같이 'FreeRTOSConfig.h' 파일내에 자리하게 됩니다.
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 7 ) <--- 요기
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)3072)
그렇게되면 말씀하셨던것처럼 우선순위의 표현에 제약 사항(PRIO 6 까지 가능)이 발생하게되죠.
기타 궁금한 점 있으시면 글 남겨주세요.