自学内容网 自学内容网

SysTicK定时器

SysTick系统定时器介绍

前面的delay我们是通过while来占用CPU的执行时间来达到一个延时的功能·,但是这个延时是不准确的

这个定时器也叫滴答定时器

systick是一个24位的向下递减的定时器

他的时间是我们系统时钟的 倒数,比如我们的时钟是168mhz,那么我们的计数(每进入一次定时器)那么就是168/1ms

滴答定时器计数,首先知道自己的时钟频率168mhz,168再/8得到21然后进入cortex系统

那么他的计数就是1/21ms这个时间

要使用定时器你必须打开这个使能位

当定时器数到了0这个位就会置一

可以来自系统时钟和内核时钟的8分频

软件设计

为了方便管理和移植,我们吧systick的代码都写在一个文件了,到时候方便使用

我们把他放在public,因为这些文件可能都会用到

上面是内核时钟8分频(也就是系统时钟)

下面的外部时钟8分频

因为SysTick是24位来计数的

所以我们用用了32为的变量来保存他的计数值

用static是怕别的变量和他重命名了,使用了这个关键字,那么就只在这个文件下使用了

这个用fac_us来保存计数值,这个一个1ms的计数值,因为你的频率的倒数就是他的计数值,1/168,然后如果你自己是168那么就是1ms

这个是来保存当前SySTick的计数值

这个就是在之前进入到我们这个delay函数的计数值

这个计数值是在我们的VAL这个计数器当中的

在上面的told是不变的,因为只进入了一次,但是tnow一直都在递减

told不变,tnow一直递减,然后我们就用之前减去现在的,然后就知道递减了多少,然后我们用变量存起来

用这个存 起来

我们执行一个语句的速度是1/168ms一次


原文地址:https://blog.csdn.net/2301_77634163/article/details/142566384

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!