GNU ARM Eclipse 3.2.1 空模板 HAL_Delay 导致 inf 循环

GNU ARM Eclipse 3.2.1 Empty Template HAL_Delay causes inf loop

我得到了 Eclipse Neon GNU ARM Eclipse 插件版本。 3.2.1 和一块 STM32F411RE Nucleo 板。我遵循了这个指南:http://gnuarmeclipse.github.io/

我成功安装了工具链,使用有效的模板制作了一个 Blinky 程序,我还可以更改所述 Blinky 程序,即 HAL_Delay(ms) 功能。

然而,一旦我创建了一个空项目,每次代码到达 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);
    }
}

但是在 Eclipse 中,当它到达 HAL_Delay 时我得到一个无限循环。 但是该函数在 Blinky 模板中有效,不过两者的 init @ SysCLK 是相同的。

有人可以告诉我这里缺少什么吗?

答案是将 _initialize_hardware.c 行 70/71 中的 if 语句设置为 1,以便 Systick_Handler() 调用 HAL_IncTick();