学习日志3:关于systick定时器中断时间的设定以及实现流水灯效果的编程。

本文详细介绍了STM32中的SysTick系统定时器工作原理及配置方法,通过设置SysTick_Config()函数实现不同时间间隔的中断。讲解了如何计算中断时间和编写延时函数,以达到精确延时的效果,并展示了LED与GPIO口的配置编程示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SysTick系统定时器,又称为滴答定时器,是属于CM3内核中的一个外设,内嵌在NVIC中。

它是一个24bit的向下递减的重装载计数器,所以最多计数不超过2^24个。

计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。

SysTick中断时间的计算

SysTick 定时器的计数器是向下递减计数的,计数一次的时间 T=1/CLK(1/72M),当重装载寄存器中的值 VALUELOAD(数值<2^24) 减到 0 的时候,产生中断,可知中断一次的时间 TINT=VALUELOAD * T=VALUELOAD/CLK,其中 CLK =72MHZ。如果设置 VALUELOAD 为 72,那中断一次的时间TINT=72/72M=1us。不过 1us 的中断没啥意义,整个程序的重心都花在进出中断上了,根本没有时间处理其他的任务。

所以我们可以在SysTick的初始化函数里调用 SysTick_Config() 这个固件库函数,通过设置该固件
库函数的形参,就决定了系统定时器经过多少时间就产生一次中断。

下面我们将其设定为10us产生一次中断


 

 其中SystemCoreClock的值为72M,所以VALUELOAD=SystemCoreClock / 100000=10us。

SysTick 定时时间的计算

当设置好中断时间 T 后,我们可以设置一个变量 t,用来记录进入中断的次数,那么变量 t 乘
以中断的时间 T 就可以计算出需要定时的时间。

延时函数的编写

 

根据改变形参nTime就可以自定义延时时间

SysTick 中断服务函数


 

 

 这样,我们就把延时程序完成了。

LED与GPIO口的端口配置编程

 

 

主函数

 以上。

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值