定时器可以不在cpu的干预下运行
用sleep()函数的缺点是会消耗cpu的资源,cpu在延时的时候就干不了其他的事情,只能等着等延时完成。如果延时交给定时器来完成,cpu就可以去做其他的事情。
学习:如何使用ARM内部的定时器
每个处理器有它们私有的32位定时器和32位的看门狗定时器。2个处理器共用1个总的64位的定时器。这些定时器的时钟都是由 1/2 的cpu的时钟来进行驱动。
cpu频率一般为666.6666Mhz 则定时器频率为333.333Mhz 在计算的时候要进行换算。
私有定时器:常规的计时计数,包括输出pwm的波形这样的一个功能,
看门狗定时器:实现监控,监视的功能。比如程序死机了,或者是跑飞了,看门狗可以使我们的程序重启,重新开始运行,让我们的程序恢复到一个正常的状态。
系统级上还有
24位的看门狗定时器 时钟频率为cpu的 1/4 或 1/6
三重定时器:16位,时钟频率为cpu的 1/4 或 1/6 。可以对信号的脉冲宽度进行计数(可以来自MIO引脚或PL)。有些外设,像红外遥控是根据脉冲宽度的时间来去判断它是逻辑0还是逻辑1的,就可以通过三重定时器来判断是逻辑0还是逻辑1,并且三重定时器可以不受CPU的干预的情况下自己独立运行,从而节省cpu的资源。
这些定时器都可以触发中断控制器进行中断。
本次实验要完成功能:通过CPU的私有定时器来去触发中断,从而来控制引脚让其输出高低电平
CPU私有的定时器和看门狗定时器共有的特性:
1.当达到0的时候产生中断。其实定时器在工作的时候我们需要给一个预装载的值,可以是1000也可以是其他的数。定时器运行的时候值慢慢减小,到0的时候产生中断,通知我们的CPU计时完成。
2.有8位的预分频用以使能来更好的控制中断周期。因为它的时钟的驱动频率就是1/2的系统时钟,系统时钟的频率还是比较快的,如果想降低它的频率的话可以通过这个预分频来对其进行分频从而降低它的频率。
3.可以配置成单次的模式或者是自动装载(重复)的模式。(就是给它一个预装载的值,计时到0之后就结束了,还是说再重新进行一个装载)。
4.可以给它配置一个初始的值,
Timer Load:装载值,慢慢递减
Timer Counter:当前递减到多少
系统的看门狗定时器 SWDT,可以在系统发生错误的时候,产生复位信号让程序重启。与AWDT:私有的定时器不同的是,SWDT的时钟可以来自于外部的设备或者PL然后提供提供复位信号到外部设备或PL
(UG585 timer)在文档中还有各自定时器的使用指南。
实验 每隔200MS产生中断,通过GPIO控制PS部分的led灯每200MS进行亮灭