注册 登录
查看: 292|回复: 1

小液晶或者是摄像头初始化时容易卡systick延时这里

[复制链接]
发表于 2014-6-24 19:54:34 | 显示全部楼层 |阅读模式
void systick_delay(uint32 time)
{
    if(time == 0)
    {
        return;
    }

    ASSERT(time <= (SysTick_RVR_RELOAD_MASK >> SysTick_RVR_RELOAD_SHIFT));  //24位

    SYST_CSR = 0x00;                        //先关了 systick ,清标志位

    SYST_RVR = time;                        //设置延时时间

    SYST_CVR = 0x00;                        //清空计数器

    SYST_CSR = ( 0
                 | SysTick_CSR_ENABLE_MASK       //使能 systick
                 //| SysTick_CSR_TICKINT_MASK    //使能中断 (注释了表示关闭中断)
                 | SysTick_CSR_CLKSOURCE_MASK    //时钟源选择 ( core clk)
               );

    while( !(SYST_CSR & SysTick_CSR_COUNTFLAG_MASK));   //等待时间到
}


void assert_failed(char *file, int line)
{
    printf(ASSERT_FAILED_STR, file, line);      //通过串口提示断言失败

    while (1)
    {
        //死循环等待程序员检测为何断言失败

    }
}
回复

使用道具 举报

发表于 2014-6-25 10:32:56 | 显示全部楼层
systick_delay(uint32 time)

这个函数的计时时间比较短,导致断言失败。 你可以用其他延时函数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部