【STM32】的延时函数

这篇具有很好参考价值的文章主要介绍了【STM32】的延时函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、

1.for/while循环延时

2.汇编延时

3.SYSTICK定时器延时

SYSTICK相关寄存器

总结


前言

        延时函数是嵌入式中最常用到的测试手段,发现有许多方式可以达到延时的目的,所以这里做一点小总结。


一、

1.for/while循环延时

代码如下:

#define SystemCoreClock  (26000000U) //时钟频率26M

void delay(int time)
{
    for (int i = 0; i < time; i--);
}

时间公式:延时 = time * 2 * 机器周期 * 指令周期 *(1/26M)

链接:*2的原因

2.汇编延时

代码如下:

/*汇编延时*/
#define SystemCoreClock  (26000000U) //时钟频率26M

__asm void
SysCtlDelay(unsigned long ulCount)
{
    subs    r0,#1;
    bne     SysCtlDelay;
    bx      lr;
}

//us级延时,延时n微秒
SysCtlDelay(n*(SystemCoreClock/(3*1000000))) 

SystemCoreClock: 为单片机时钟频率,使用时需要更改。(一般System_CMSDK_CMx.h里已经设置好了)

SysCtlDelay:ulCount = n*(SystemCoreClock/(3*1000000))

        SystemCoreClock/(3*1000000)是因为SysCtlDelay内有3条指令,公式结果为1us。

3.SYSTICK定时器延时

代码如下:

/*SYSTICK定时器延时*/

#define SystemCoreClock     (26000000U) //这里是系统时钟,需要根据芯片进行修改
#define MS_DELAY            (1000U)
#define US_DELAY            (1000000U)

void delay_ms(uint8_t ms)    //ms延时函数
{
    /* systick delay ms*/
    SysTick->CTRL = (1 << 2);         
    SysTick->LOAD = SystemCoreClock / MS_DELAY * ms;
    SysTick->VAL = 0;
    SysTick->CTRL = (1 << 2) | (1 << 0);
    while ((SysTick->CTRL & (1 << 16)) == 0);
    SysTick->CTRL = (1 << 2);
}

SYSTICK相关寄存器

SysTick控制和状态寄存器(STK_CTRL)

        一般用来控制systick定时器的开关,使用时需要根据相应的芯片更改相应的位操作。 

CTRL寄存器
寄存器 作用
16 COUNFLAG 定时器倒计数到0时,该为由硬件自动置1
2 CLKSOURCE 选择时钟分频:1:AHB   0:AHB/(8 or 2)
1 TICKINT 定时器异常请求使能:0:不产生中断,1:产生中断
0 TICKINT 使能计数器 0:失能,1:使能

SysTick自动重装载值寄存器(STK_LOAD)

        计数器初始值,自定义,需要自己计算,公式一般如上所示。LOAD的值决定一个时钟频率内产生的中断次数,中断次数为MS_DELAY。

        范围一般为:0x00000001~0x00FFFFFF。

SysTick当前值值寄存器(STK_VAL)

        每次从LOAD中获取值,直到为0。

相比起前两种,定时器的延时更准确,但是,由于是系统时钟控制,记得使用前保证系统时钟的频率准确。


总结

        前两种时钟是CPU时钟,后一个为系统时钟,一般情况下CPU时钟是等于系统时钟的,但当系统时钟出错时,两者便不相等了。写这篇BLOG的目的是在工作中凑巧碰到了需要测量时钟是否准确的情况,所以写了下来分享给其他需要的伙伴。

        PS:本人第一篇BLOG                                         2023/06/10  ----BeMi·Aino文章来源地址https://www.toymoban.com/news/detail-708498.html

到了这里,关于【STM32】的延时函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32毕设分享 stm32智能运动计步系统 - 物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(49)
  • 嵌入式项目分享 stm32机器视觉的口罩佩戴检测系统 - 单片机 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(61)
  • 嵌入式STM32 单片机 GPIO 的工作原理详解

    STM32的 GPIO 介绍 GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 以 STM32F103ZET6 芯片为例子,该芯片共有 144 脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为

    2024年02月20日
    浏览(40)
  • stm32毕设分享 基于stm32的便携用电功率统计系统 -物联网 嵌入式 单片机

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(45)
  • stm32毕设分享 stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(38)
  • 嵌入式毕设分享 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月22日
    浏览(42)
  • 嵌入式毕设分享 基于单片机的风速测量系统 - 物联网 嵌入式 stm32 arduino

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(47)
  • 嵌入式硬件——stm32F103C8T6

    如下图:    处理器核心:STM32F103C8T6内置了ARM Cortex-M3处理器,这是一种高性能、低功耗的32位RISC处理器,适用于嵌入式系统。 时钟速度:它可以工作在不同的时钟速度,最高主频可达72 MHz。 存储器:包括64KB的Flash程序存储器用于存储程序代码,以及20KB的SRAM用于存储数据和

    2024年02月05日
    浏览(44)
  • stm32毕设分享 单片机自动写字机器人设计与实现 - 物联网 嵌入式 stm32

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月21日
    浏览(52)
  • stm32毕设分享 stm32单片机酒精浓度酒驾检测系统 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包