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)!