0

FreeRTOS 작업 예약 설명서에 따르면 커널은 작업이 현재 실행 중이거나 차단 기능을 호출하지 않았더라도 작업을 스왑 할 수 있습니다. 따라서 커널이 시계 틱 인터럽트를 받고 ISR을 실행하면 다른 작업이 실행되도록 예약 할 수 있습니다.FreeSTOS 작업이 절대로 교환되지 않음

내 시스템에서 FreeRTOS를 사용하면 5 개의 태스크를 실행할 수 있습니다. 각 태스크는 어느 시점에서 지연되도록 프로그래밍되어 있으므로 모든 태스크가 스왑 아웃되고 스왑 아웃되고 각 태스크가 어느 시점에서 실행되는 것을 볼 수 있습니다. 그러나 작업 내에서 무한 루프를 입력하면 해당 작업이 절대로 바뀌지 않습니다.

어떻게 가능합니까?

답변

2

먼저 configUSE_TIME_SLICING이 설정되어 있는지 확인해야합니다. 이렇게하면 라운드 로빈 스케줄러가 활성화되어 스케줄러가 예상 한대로 처리 할 수 ​​있습니다.

또한 우선 순위가 같거나 높은 경우에만 다른 작업으로 전환됩니다.

+0

어디서'configUSE_TIME_SLICING'을 설정할 수 있습니까? – user2162550

+0

자신이 정의하지 않은 경우 FreeRTOS.h에서 자동으로 설정됩니다. 직접 정의한 경우 1이어야합니다. 소스 검색을 시도하십시오! –