AC781X MCU平台如何实现延时功能?

查看数: 1267 | 评论数: 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-7-16 12:05

正文摘要:

本帖最后由 AutochipsMCU 于 2019-7-16 12:05 编辑 延时,在编程时常会用到。本帖介绍在AC781X MCU如何使用延时功能。使用方法很简单,在调用延时函数前,先调用InitDelay()函数进行初始化。然后就可以调用mdelay ...

回复

TechHolder 发表于 2019-7-16 13:17
marginer 发表于 2019-7-16 12:09
initdelay在干啥,初始化定时器?

初始化SysTick定时器,用于delay延时;必须在调用AC781x库封装的延时函数之前,调用InitDelay()。
AutochipsMCU 发表于 2019-7-16 13:16
marginer 发表于 2019-7-16 12:09
initdelay在干啥,初始化定时器?

void InitDelay(void)
{
    s_facus = __SYSTEM_CLOCK / 1000000;
    s_facms = s_facus * 1000;
}SysTick的配置和使能是在mdelay或udelay里面配置的。
InitDelay会根据当前的系统时钟算出1ms或1us需要多少个count。在调用udelay或mdelay时,会参考这个值。
void udelay(uint32_t us)
{
    uint32_t tick = us * s_facus;

    SysTickRepeatDelay(tick / MAX_SYSTICK_COUNT, MAX_SYSTICK_COUNT);

    SysTickDelay(tick % MAX_SYSTICK_COUNT);
}

marginer 发表于 2019-7-16 12:09
initdelay在干啥,初始化定时器?
快速回复 返回顶部 返回列表