
“时间”在这个世界中是很重要的,它的存在使得世界有秩序地运行着,我们每天都“按时”吃饭,上班,学习,睡觉,这都是参照时间而执行的事情。那么在C语言嵌入式世界中,设备能够正常地执行任务也需要来“按时”执行相应的过程。我们平常怎么查看时间呢?那当然是看钟表来获得当前的时间,当然了现在也可以通过手机或者一些电子设备来看时间了。而嵌入式设备是通过什么来计算时间的呢?那就是它内部的定时器。
时间
定时器,顾名思义就是来设定时间的,C语言程序中的延时,定时,时钟等等有关时间的都是通过它控制的。有了它,系统才能稳定正常地工作,你可以想想假如你无法知道当前的时间,你的生活会变成什么样?这个我还真是无法想象。

那么这个定时器是怎么工作的呢?今天就来和各位好好探讨一下。在前几章就和大家讲过了,“晶振”是MCU的,就是“晶振”推动着程序的运行,晶振是有频率的,它不是随便振的,一般都是n(MHz),也就是每秒振(n * 1000 * 1000)次,可是晶振的频率有时还不能满足系统或者外设的要求,所以就必须通过倍频器或者分频器来获得相应的“时钟源”,如果频率高了就用分频器,如果频率低了就用倍频器,当然了分频和倍频都有一些固定的系数,也不是你想多少就是多少。结构体
定时器系统
由上图可知定时器的时钟源是由外部提供的,我们在使用定时器之前一定要先配置好晶振、倍频器和分频器,否则时间肯定就不准啦(这些都是在系统的启动函数中配置的)。一般在STM32中有很多个定时器,我们选择不同的定时器,那么对应的频率也不相同,所以我们在使用前一定要先看好。在配置好时钟源之后就要来配置“定时器”了。结构体

和前面一样,你要配置什么设备,就要先创建这个设备所对应的的“结构体”,这个结构体中包含的就是需要配置的参数,在STM32中配置其实都是这个套路,你要用什么设备就创建对应的结构体进行初始化,只要初始化成功了,那用起来就和玩一样!
所以在这里我们就要创建定时器对应的结构体,TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;这样就创建了一个定时器,只是还没有对它进行初始化。接下来就让我们来看看它有哪些参数需要配置。
TIM_Period (自动重装载值):每个周期定时器需要计数的次数
TIM_Prescaler (定时器分频):其实也就是分频器,将给定时器的时钟源分频,得到计数的频率
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-61850-1.html
光看数量就行了
30万人