1

我得到了 Eclipse Neon GNU ARM Eclipse Plugin Vers。3.2.1 和 STM32F411RE Nucleo 板。我遵循了本指南: http: //gnuarmeclipse.github.io/

我成功安装了工具链,用可以工作的模板制作了一个 Blinky 程序,我也可以改变所说的 Blinky prog,即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 是相同的。

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

4

1 回答 1

1

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

于 2017-02-07T17:27:47.623 回答