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は両方とも同じです。
誰かが私がここで何が欠けているか教えていただけますか?
編集:HAL_Delayが機能するようになりました。解決策は、ソースフォルダにある_inithardware.cを修正することでした。 line 70、 // RTOSを使用しているときは無効にします。 #if 1 <<<これは1に変更される前に0でした。 また、HSEの代わりにHSIを使用してSystemClock_Configのelseifを使用しました.HSEの部分の場合は、HAL_Delay()が動作するようになりました。 –
あなた自身で解決策を見つけることができたなら、あなたはコメントで更新するのではなく、あなた自身の質問に答えることができます。 –
@ bence yeahそれは遅く、私はそれのためのボタンを見なかった:P、完了。 –