stm32 系统滴答定时器

发布者:悦耳旋律最新更新时间:2022-11-16 来源: zhihu关键字:stm32  系统  滴答定时器 手机看文章 扫描二维码
随时随地手机看文章

使用步骤:

1.设置SysTick定时器的时钟源。 2.设置SysTick定时器的重装初始值 --中断要打开中断使能 3.清零SysTick定时器当前计数器的值 4.打开SysTick定时器

库函数:SysTick.c

初始化函数:

void SysTick_Init(u8 SYSCLK)

{

    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

    fac_us = SYSCLK / 8;                        //SYSCLK的8分频保存1us所需的计数次数

    fac_ms = (u16)fac_us*1000;           //每个ms需要的systick时钟数

}

void delay_us(u32nus)

{

    u32temp;

    SysTick->LOAD=nus*fac_us;    //时间加载

    SysTick->VAL=0x00;           //清空计数器

    SysTick->CTRL|=0x01;         //开始倒数

    do {

        temp=SysTick->CTRL;

    }while((temp&0x01)&&!(temp&(1<<16)));    //等待时间到达

    SysTick->CTRL&=~0x01;    //关闭计数器

    SysTick->VAL=0X00;       //清空计数器

}

void delay_ms(u16nms)

{

    u32temp;

    SysTick->LOAD=(u32)nms*fac_ms;    //时间加载

    (SysTick->LOAD为24bit)SysTick->VAL=0x00;    //清空计数器

    SysTick->CTRL|=0x01;    //开始倒数

    do{

        temp=SysTick->CTRL;

    }while((temp&0x01)&&!(temp&(1<<16)));    //等待时间到达

    SysTick->CTRL&=~0x01;    //关闭计数器

    SysTick->VAL=0X00;    //清空计数器

}


这个滴答定时器和定时器的功能很相似,它是循环等待读取标志位上的时间用来计数,这个时间可以被其他中断插进来,但是并不影响它继续向下滴答计数,所以比起普通阻塞延时,准确性高了很多。


关键字:stm32  系统  滴答定时器 引用地址:stm32 系统滴答定时器

上一篇:stm32 按键控制实验
下一篇:stm32 中断系统

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved