转载请注明出处:http://blog.csdn.net/icyfox_bupt/archive/2011/06/01/6460074.aspx
本来想把驱动库,原理图,内部原理都上传到百度文库的 ,结果被和谐了不让上传,需要的朋友留下邮箱,我会打包给你发过去的。这些文档确实很好用,对于函数的参数,内部的连线结构介绍的很清楚,真是编程必备呀!
上次我们讲了如何使用延时来做小灯闪烁的程序,相信大家都有所了解了,这次我们来看如何使用定时器实现小灯闪烁。
1、不使用中断的方法:
首先我们还是来看头文件,因为这次使用了定时器(timer),所以头文件要包含timer.h。
选择闪烁的小灯,在此我们选择PC5小灯,将其使能,作为output。
下一步是使能定时器的过程。有如下步骤:
1、在系统中使能定时器。 函数:SysCtlPeripheralEnable()
2、选择定时器的使用类型,函数:TimerConfigure(), 参数可以写 TIMER_CFG_32_BIT_PER (32位周期)/ TIMER_CFG_16_BIT_PAIR|TIMER_CFG_A_PERIODIC (16位TIMER0A周期) TIMER_CFG_A_CAP_COUNT(计数模式)等..
(注:LM3S811一共有4个计数器TIMER0/1/2/3 ,默认使用减计数模式, 每个timer可以作为一个32位计数器使用,也可以作为两个16位计数器使用。具体使用方法请看技术文档)
3、给定时器装载值:使用TimerLoadSet() 函数。
4、使能定时器。
剩下的思路很简单,让程序进入一个死循环。使用轮询检测定时器是否溢出,如果溢出则改变小灯的亮灭。因为系统的频率是一定的(在本程序中是6MHZ),所以通过改变定时器中装载的数值就可以控制小灯亮灭的时间。