armfanscherry 发表于 2018-12-28 11:35:34

L471用cubeMX5.0生成的用SYSTICK延时点灯的工程,卡死在一个地方

这是LL库的延时函数,我仿真看了systick的寄存器,是能,时钟源,重装值都没问题,我没用中断所以没有是能中断,但是调用延时函数卡在一个地方!

void LL_mDelay(uint32_t Delay)
{
__IO uint32_ttmp = SysTick->CTRL;/* Clear the COUNTFLAG first */
uint32_t tmpDelay = Delay;
/* Add this code to indicate that local variable is not used */
((void)tmp);
/* Add a period to guaranty minimum wait */
if(tmpDelay < LL_MAX_DELAY)
{
    tmpDelay++;
}
while (tmpDelay != 0U)
{
    if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U)//卡在这儿!!!!!!!1
    {
      tmpDelay--;
    }
}
}

求助,,呜呜呜

toofree 发表于 2018-12-28 13:53:52

本帖最后由 toofree 于 2018-12-28 13:58 编辑

单步调试看一下,在线寄存器查看,SYSTICK的使能开启了没有,计数器走不走?

lebment 发表于 2018-12-28 20:32:42

CubeMX 5.0的LL延时函数,需要RCC LL库,GPIO最好也设置为LL库。CubeMX5.0的函数有点问题,特别是最新版本的库

奏奏奏 发表于 2018-12-29 09:16:22

为什么不直接用 HAL_Delay 或者FreeRTOS中的osDelay???:L
页: [1]
查看完整版本: L471用cubeMX5.0生成的用SYSTICK延时点灯的工程,卡死在一个地方