当前位置: 首页> 教育> 锐评 > 微信小程序下单助手商家版_92素材网_市场营销策划方案书_seo咨询推广找推推蛙

微信小程序下单助手商家版_92素材网_市场营销策划方案书_seo咨询推广找推推蛙

时间:2025/8/27 13:44:31来源:https://blog.csdn.net/weixin_57246604/article/details/144276142 浏览次数:0次
微信小程序下单助手商家版_92素材网_市场营销策划方案书_seo咨询推广找推推蛙

文章目录

  • 1. 什么是滴答定时器?
  • 2. SysTick定时器初始化
    • 2.1 systick定时器时钟源?
    • 2.2 定时器四个寄存器
  • 3 函数设置
    • 3.1SysTick_Config(uint32_t ticks)函数
    • 3.2初始化函数
  • 4. 延时函数实现
    • 4.1 ms延时思路及实现
    • 4.2 us延时

1. 什么是滴答定时器?

Systick,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断),就是系统的心跳,操作系统进行运转的时候,它会根据“心跳”的节拍来工作,该定时器会产生周期性的中断,心跳一次就是中断一次,作为系统的参考时基,我们可以通过初始化这个定时器来改变心跳的间隔时间,其它的延时函数都是通过此定时器产生,如心跳间隔为1us,延时函数可以通过计数心跳次数来实现延时。

2. SysTick定时器初始化

2.1 systick定时器时钟源?

在这里插入图片描述
这里看32的时钟树,32的时钟源有HSE,高速外部时钟,无源晶振(4-16M),通常为8M,当HSE故障时会切换到HSI,高速内部时钟,在芯片内部,8M,一般不会用, SYSTICK从时钟树上可以看到其来源于PLLCLK锁相环时钟,HSI或HSE,最大为72M,三者其一,一般设置其等于锁相环时钟,通过寄存器的SW位来配置,锁相环时钟由时钟源经过倍频因子得到,一般选为9 倍频,得到72M。

2.2 定时器四个寄存器

Systick定时器模块中有4个32位寄存器,分别为:控制及状态寄存器、重载寄存器、计数器、校准寄存器,想要具体了解的可自己查询,这里总结一下其功能寄存器总结:寄存器里面有计数器,每计一次数花费时间(1/72M)s,72M是根据时钟源自己选择的,也可以是别的,计数器是24位的,也就是计数值不超过2^24=16777216,计数时间最大为 16777216/72000000=233ms,所以系统时基最大不能超过233ms,我们可以通过设置计数值来实现时基设置,如设置计数值72,时基为1us,设置计数值72000,时基为1ms.

3 函数设置

3.1SysTick_Config(uint32_t ticks)函数

此函数在core_cm3.h文件中,不用我们实现,这里是对寄存器操作,看懂就行,参数就是设置的计数值
在这里插入图片描述

3.2初始化函数

SystemCoreClock是系统时钟,为72000000,除以1000000,设置SysTick_Config()函数参数为 72,获得1us的时基,除以1000获得1ms的时基
在这里插入图片描述

4. 延时函数实现

在上面设置好时基以后,1us产生一次systick中断,进入对应中断函数SysTick_Handler(void),函数在 stm32f10x_it.c里,中断函数都在这,执行函数体。
在这里插入图片描述

4.1 ms延时思路及实现

现在设置是1us时基,进一次中断是1us,那我每进一次就计数一次,计1000次不就是1ms吗,类推,以 此为基础来实现ms延时函数,
在这里插入图片描述
//参数为延时的ms数,×1000得到us数,也就是需要中断发生的次

//数,设置目前中断次数+需要的,us_tick会不断+1更新,

//当到了所设置的值后,退出while循环,实现ms延时

4.2 us延时

us延时根本不用去单独实现,因为每中断一次的时间就是1us,直接获取当前us_tick值,在加上想要延时 的us数,循环判断就行
在这里插入图片描述

关键字:微信小程序下单助手商家版_92素材网_市场营销策划方案书_seo咨询推广找推推蛙

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: