APOLLO F429之delay函数陷入死循环问题

2019-07-20 06:05发布

各位高手:
      小弟是个菜鸟,在做流水灯实验时,怎么做也不行,后来用断点跟踪的办法,发现stm32f4xx_hal_timebase_tim_template.c文件当中有一个 HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority)函数。而HAL_Init()函数调用到HAL_InitTick(TICK_INT_PRIORITY),调用到 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority),而这个函数在文件stm32f4xx_hal.c中。根据规则 __weak 开头的函数,在没有与它同名的函数时,调用它;一旦出现与它同名的函数,就要调用与之同名、不以__weak开头的函数。因此HAL_Init()实际调用的是stm32f4xx_hal_timebase_tim_template.c文件当中的 HAL_StatusTypeDef HAL_InitTick (uint32_t TickPriority)函数。我从工程中移除了文件stm32f4xx_hal_timebase_tim_template.c解决了这个问题。
    水平太菜了,但给我的教训很深刻,同时对_weak类型函数有了进一步的体会。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。