2016-07-17 5 views
-1

저는 freeRTOS를 AT32UC3A0512에서 실행되는 어플리케이션에 통합하려고 시도하고 있습니다. 에 의해 지금 기존 프로젝트에 freeRTOS 통합

int main() 
{ 
    char str[5]; 
    uint8_t num; 

    enable_Timer(); 
    enable_Timer_Interrupt(); 
    sprintf (str, %03d, num); 

    while(1) 
    { 
      // Wait the timer interrupt to happen 
    } 
} 

처럼

src 
|ASF 
|main.c 
|freertos 
    |freertos-7.0.0 
     |source 

주요 외모 : 그래서 내 응용 프로그램 계층 구조처럼 보이는 EVK1100 (가 AT32UC3A 지원)에 대한 freeRTOS 프로젝트 예제를 다운로드 및 커널 소스 파일을 포함하려고 그냥 내 프로젝트에서 freertos 폴더를 제외하고, 타이머 인터럽트가 발생하고 모두 잘 작동합니다.

freertos 폴더를 포함하면 (freertos 소스에 대한 포함이나 호출이 수행되지 않음) 타이머 인터럽트가 발생하지 않습니다.

그것은 미친 것 같다하지만 난 sprintf의 동작이 방법을 변경 방법을 모르는 또한 내가 sprintf 사이의 관계 및 인터럽트 컨트롤러

답변

1

RTOS와 용 애플리케이션을 사용하고있는 표시되지 않습니다 같은 타이머 인터럽트. RTOS port.c 파일을 검사하여 타이머 틱에 어떤 타이머를 사용하고 있는지 확인하십시오. 인터럽트 기능과 port.c 인터럽트 기능 정의를 확인하십시오.

+0

의견을 보내 주셔서 감사합니다. 사실, 같은 타이머가 호출되었습니다. 그러나 프리 롤 타이머 타이머를 설정하는 것은'prvSetupTimerInterrupt'에 달렸습니다. 저는 freeRTOS에서 어떤 함수도 호출하지 않았다고 언급 했으므로 어떻게 문제가 발생합니까? – fedi

+0

'sprintf'를 호출하고 타이머 ISR을 브레이크 포인트하기 전에 while 루프를 배치하면 타이머가 작동을 멈춘다. – fedi