第十三届蓝桥杯嵌入式备战之旅——Delay 滴答计时器

其实前面应该有个消抖按键的,但是我打算直接用readpin的delay就行了,所以省去。

时钟配置

选HSE,又稳定又高速。

个人喜欢80Mhz

理论知识

delay(1) == 走了n个时钟周期

这个 n个时钟周期 等于 系统定时器的取值 ,可以根据SysTick_config函数来进行修改

如果默认情况下delay(1)是一微秒us

注意:1s = 10^6us

HAL_Delay实现原理

HAL_Delay 底层是配置systick进行1ms进行一次中断,每进入一次,全局变量 uwTick 就加1

Systick_config

作用:使能Systick定时器,开启SysTick中断,配置中断时间间隔 
参数ticks:设置多少个Systick时钟周期产生一次中断(默认是系统时钟周期,达到delay 1ms的目的)

计算公式

systick定时器有两个可选的时钟源,一个是外部时钟源(STCLK,等于HCLK/8),另一个是内核时钟(FCLK,等于HCLK)。假若你选择内核时钟,并将HCLK频率设置为72MHz的话,系统时钟周期为1/(72M);systick有一个24位的递减计数器,每个系统时钟周期计数器值减一,那么当计数器减到零时,时间经过了:系统时钟周期*计数器初值。当你将计数器初值设为72000时(有些例程里面设为71999,其实没什么影响,误差极小),当计数器值减到0时经过了1/(72M)*72000=0.001s,即1ms。你可以看一下芯达STM32的入门教程和《ARM Cortex-M3权威指南》的相关章节,里面关于systick编程的一章说的比较详细,但是也有个别地方说的比较模糊,总之多看些例程就明白了,刚开始总是很纠结的~

滴答计时器

他是系统内部的定时器,每走一个机器时间就会触发一次处理函数,我们可以在stm32g4xx_it.c里修改函数内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值