打印

CC2430睡眠定时器的使用

[复制链接]
1459|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
msp430ing|  楼主 | 2011-5-29 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <ioCC2430.h>

#define uint unsigned int

#define uchar unsigned char

#define DELAY 10000

//小灯控端口定义

#define RLED P1_0

#define YLED P1_1

void Delay(void);

void Init_IO_AND_LED(void);

void PowerMode(uchar sel);

/****************************************************************

*函数功能:延时      

*入口参数:无      

*返回值 :无      

*说 明 :可在宏定义中改变延时长度   

****************************************************************/

void Delay(void)

{

uint tt;

for(tt = 0;tt<DELAY;tt++);

for(tt = 0;tt<DELAY;tt++);

for(tt = 0;tt<DELAY;tt++);

for(tt = 0;tt<DELAY;tt++);

for(tt = 0;tt<DELAY;tt++);

}

/****************************************************************

*函数功能:初始化电源     

*入口参数:para1,para2,para3,para4   

*返回值 :无      

*说 明 :para1,模式选择      

*                 *

* para1 0 1 2 3            *

* mode PM0 PM1 PM2 PM3            *

*                 *

****************************************************************/

void PowerMode(uchar sel)

{

uchar i,j;

i = sel;

if(sel<4)

{

   SLEEP &= 0xfc;

   SLEEP |= i;

   for(j=0;j<4;j++);

   PCON = 0x01;

}

else

{

     PCON = 0x00;

}

}

/****************************************************************

* 函数功能:初始化I/O,控制LED      

* 入口参数:无      

* 返回值 :无      

* 说 明 :初始化完成后关灯   

****************************************************************/

void Init_IO_AND_LED(void)

{

    P1DIR = 0X03;

    RLED = 1;

    YLED = 1;

    P1SEL &= ~0X0C;

    P1DIR &= ~0X0C;

    P1INP &= ~0X0c;//有上拉、下拉

    P2INP &= ~0X40; //选择上拉

    P1IEN |= 0X0c;   //P12 P13

    PICTL |= 0X02;   //下降沿

    EA = 1;

    IEN2 |= 0X10; //P1IE = 1;

    P1IFG |= 0x00;   //P12 P13

};

/****************************************************************

* 函数功能:主函数     

* 入口参数:     

* 返回值 :无      

* 说 明 :10次绿色LED闪烁后进入睡眠状态   

****************************************************************/

void main()

{

uchar count = 0;

Init_IO_AND_LED();

RLED = 0 ;       //开红色LED,系统工作指示

Delay();        //延时

Delay();

Delay();

Delay();

while(1)

{

   YLED = !YLED;

                RLED = 0;

   count++;

   if(count >= 20)

                {

                  count = 0;

                  RLED = 1;

                  PowerMode(3);

    //10次闪烁后进入睡眠状态

                }

   //Delay();

   Delay();

                //延时函数无形参,只能通过改变系统时钟频率

                //来改变小灯的闪烁频率

};

}

/*****************************************

//唤醒系统

*****************************************/

#pragma vector = P1INT_VECTOR

__interrupt void P1_ISR(void)

{

        if(P1IFG>0)

        {

          P1IFG = 0;

        }

        P1IF = 0;

}

相关帖子

沙发
加班加点| | 2011-5-29 21:59 | 只看该作者
这个正在熟悉

使用特权

评论回复
板凳
chen_aisen| | 2011-5-30 17:21 | 只看该作者
谢谢分享

使用特权

评论回复
地板
易达口香糖| | 2011-5-31 15:59 | 只看该作者
最好贴个流程图最好了。

使用特权

评论回复
5
老鱼探戈| | 2011-5-31 16:05 | 只看该作者
不懂,没用过.....

使用特权

评论回复
6
yinyangdianzi| | 2011-5-31 16:09 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

730

帖子

1

粉丝