嵌入式成长轨迹40 【Zigbee项目】【CC2430基础实验】【T1的使用】

 

CC2430/CC2431 包括四个定时器:一个一般的 16 位(Timer 1) 和两个8 位(Timer3,4)定时器,支持典型的定时/ 计数功能,例如测量时间间隔,对外部事件计数,产生周期性中断请求,输入捕捉、比较输出和PWM 功能。一个 16 位MAC定时器(Timer 2),用以为IEEE802.15.4 的CSMA-CA 算法提供定时以及为IEEE802.15.4 的MAC层提供定时。

 

本实验使用的是T1定时器,对外部事件计数。要设置这个:
T1CTL = 0x05; //清中断,8分频;自动重装模式(0x0000->0xffff);
如果只有一个定时器T1,那么通过查看IRCON是否大于0就可知道定时器是否被触发。

 

 1 #include <ioCC2430.h>
 2 
 3 #define uint unsigned int
 4 #define uchar unsigned char
 5 
 6 #define RLED P1_0
 7 #define YLED P1_1
 8 
 9 uint counter=0;                //统计溢出次数
10 uint TempFlag;                //用来标志是否要闪烁
11 
12 void Initial(void);
13 void Delay(uint);
14 
15 /****************************
16 //普通延时程序
17 ***************************/
18 void Delay(uint n)
19 {
20     uint i;
21     for(i=0;i<n;i++);
22     for(i=0;i<n;i++);
23     for(i=0;i<n;i++);
24     for(i=0;i<n;i++);
25     for(i=0;i<n;i++);
26 }
27 
28 /****************************
29 //初始化程序
30 ***************************/
31 void Initial(void)
32 {
33     //初始化P1
34     P1DIR = 0x03;     //P10 P11为输出
35     RLED = 1;
36     YLED = 1;        //灭LED
37 
38     //用T1来做实验
39     T1CTL = 0x05;    //清中断,8分频;自动重装模式(0x0000->0xffff);
40 }
41 
42 /***************************
43 //主函数
44 ***************************/
45 void main()
46 {
47     Initial();      //调用初始化函数
48     RLED = 0;     //点亮红色LED
49     while(1)        //查询溢出
50     {
51                 if(IRCON > 0)
52                 {
53                   IRCON = 0;                //清溢出标志
54                   TempFlag = !TempFlag;
55                 }
56         if(TempFlag)
57         {
58             YLED = RLED;
59             RLED = !RLED;
60             Delay(6000);
61         }
62     }
63 }

 

posted @ 2012-09-01 17:55  MooreZHENG  阅读(313)  评论(0编辑  收藏  举报