我是靠谱客的博主 欢喜小土豆,这篇文章主要介绍cc2530 定时器控制LED灯以不同的频率闪烁,现在分享给大家,希望可以做个参考。

1、cc2530有两个LED灯:

定时器有4种工作方式;

 

可通过定时器 T1 以及 定时器 T3同时来分别控制LED灯的闪烁,我们让定时器1处于8分频的自由模式下,T1 为16位的计数器,计数器每8/(30*1000000)的值加1,在自由模式下计数器计数到0xffff发生溢出中断的时间为0.16秒。而T3为8位的计数器,在自由模式下计数器计数到0xffff发生溢出中断的时间为0.000 064秒。

代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <ioCC2530.h> #define led2 P0_1 #define led3 P0_4 int counter=0;//定时器1的溢出次数 int counter1=0;//定时器3的溢出次数 //led初始化 void LED_Init() { P0SEL &=~0X12; P0DIR |=0X12; } void Init_T1() { CLKCONCMD &=~0X7F;//晶振设置为32MHz while (CLKCONSTA &=0X40);//等待晶振稳定 EA=1;//打开中断 T1IE=1;//开T1溢出中断 T1CTL=0X05;//设置预分频系数为8 } void Init_T3() { CLKCONCMD &=~0X7F;//晶振设置为32MHz while (CLKCONSTA &=0X40);//等待晶振稳定 EA=1;//打开中断 T3IE=1; T3CTL=0X7c; } void main() { LED_Init(); Init_T1(); Init_T3(); led2=0; led3=0; while(1) { } } #pragma vector =T1_VECTOR __interrupt void T1_ISR(void) { IRCON = 0X00;//清除中断标志位 if(counter<300) { counter++; } else { counter=0; led2=!led2; } } #pragma vector =T3_VECTOR __interrupt void T3_ISR(void) { IRCON = 0X00;//清除中断标志位 if(counter1<300) { counter1++; } else { counter1=0; led3=!led3; } }

最后

以上就是欢喜小土豆最近收集整理的关于cc2530 定时器控制LED灯以不同的频率闪烁的全部内容,更多相关cc2530内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部