2017-02-04 7 views
1

Eclipse Neon GNU ARM Eclipse Plugin Vers이 있습니다. 3.2.1 및 STM32F411RE 핵위원회. 나는이 가이드를 따라 갔다 : http://gnuarmeclipse.github.io/GNU ARM Eclipse 3.2.1 빈 템플릿 HAL_Delay가 inf 루프를 발생시킵니다.

성공적으로 툴체인을 설치하고, 작동하는 템플릿으로 Blinky 프로그램을 만들었으며, Blinky prog를 HAL_Delay(ms) 기능과 함께 변경할 수도있다.

그러나 빈 프로젝트를 만들면 코드가 HAL_Delay 함수에 도달 할 때마다 무한 루프가 발생합니다.

이 코드는 온라인 컴파일러와 함께 작동 : 그것은 HAL_Delay에 도달하면

int main(){ 

    __HAL_RCC_GPIOA_CLK_ENABLE(); 
    GPIO_InitTypeDef GPIO_InitStruct; 
    GPIO_InitStruct.Pin =GPIO_PIN_5; 
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; 
    GPIO_InitStruct.Pull = GPIO_PULLDOWN; 
    GPIO_InitStruct.Speed = GPIO_SPEED_FAST; 
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); 

    // Infinite loop 
    while (1) 
    { 
     HAL_Delay(2000); 
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); 
     HAL_Delay(2000); 
     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET); 
    } 
} 

그러나 이클립스에서 나는 무한 루프를 얻을. 하지만이 기능은 Blinky 템플릿에서 작동하지만 init @ SysCLK는 둘 다 동일합니다.

누군가 내가 여기에없는 것을 말해 줄 수 있습니까?

+0

편집 : HAL_Delay가 작동하도록했습니다. 해결책은 원본 폴더에있는 _inithardware.c를 수정하는 것이 었습니다. line 70, // RTOSes를 사용할 때 사용하지 않도록 설정하십시오. RTOSes에는 자체 처리기가 있으므로 사용하지 마십시오. #if 1 <<<이 값이 1로 변경되기 전에 0이었습니다. 또한 HSE 대신 HSI를 사용하여 SystemClock_Config에서 elseif를 사용했습니다. HSE 부분 인 경우 HAL_Delay()가 작동하는 방식으로 주변에서 의견을 말했습니다. –

+0

독자가 솔루션을 찾을 수 있었다면 의견을 업데이트하는 대신 자신의 질문에 답할 수 있습니다. –

+0

@ bence 예 그것은 늦었고 그 버튼을 보지 못했습니다. P, 끝났습니다. –

답변

1

대답은 Systick_Handler()가 HAL_IncTick()을 호출하기 위해 _initialize_hardware.c 줄 70/71에 if 문을 1로 설정하는 것입니다.