2017-02-04 15 views
1

Eclipse Neon GNU ARM Eclipse Plugin Versを入手しました。 3.2.1およびNucleo BoardのSTM32F411RE。私はこのガイドに従った:http://gnuarmeclipse.github.io/GNU ARM Eclipse 3.2.1空のテンプレートHAL_Delayによりinfループが発生する

私はうまくツールチェーンをインストールし、動作するテンプレートでBlinkyプログラムを作成しました。また、BlinkyプログラムをHAL_Delay(ms)の機能で変更することもできます。

ただし、空のプロジェクトを作成すると、コードがHAL_Delayに達するたびに無限ループが発生します。

このコードは、オンラインコンパイラで動作します:それはHAL_Delayに到達したとき、私は無限ループを取得するEclipseでしかし

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、 // RTOSを使用しているときは無効にします。 #if 1 <<<これは1に変更される前に0でした。 また、HSEの代わりにHSIを使用してSystemClock_Configのelseifを使用しました.HSEの部分の場合は、HAL_Delay()が動作するようになりました。 –

+0

あなた自身で解決策を見つけることができたなら、あなたはコメントで更新するのではなく、あなた自身の質問に答えることができます。 –

+0

@ bence yeahそれは遅く、私はそれのためのボタンを見なかった:P、完了。 –

答えて

1

答えは、Systick_Handler()がHAL_IncTick()を呼び出すために、_initialize_hardware.cのif文を1行に設定します。

関連する問題