一、低功耗模式介紹
低功耗是現(xiàn)在便攜式、消費(fèi)類設(shè)備都要考慮的功能,特別是使用電池供電的設(shè)備,對功耗的把握非常重要,功耗直接影響待機(jī)時(shí)長。 比如:我們現(xiàn)在的手機(jī)、平板、商務(wù)筆記本電腦、無線耳機(jī)等消費(fèi)類設(shè)備,還有智能井蓋、智慧路燈、這些不插市電的物聯(lián)網(wǎng)設(shè)備等。
CC2530支持配置低功耗模式,可以通過電源寄存器章節(jié)的介紹進(jìn)行配置,下面就介紹CC2530的低功耗幾個(gè)模式的配置,截圖來至CC2530中文數(shù)據(jù)手冊。
二、配置低功耗模式
低功耗運(yùn)行是通過不同的運(yùn)行模式(供電模式)使能的。各種運(yùn)行模式指的是主動(dòng)模式、空閑模式和供電。
模式1、 2和 3(PM1-PM3)。超低功耗運(yùn)行的實(shí)現(xiàn)通過關(guān)閉電源模塊以避免靜態(tài)(泄露)功耗,還通過使用門控時(shí)鐘和關(guān)閉振蕩器來降低動(dòng)態(tài)功耗。
三、示例代碼
3.1 示例代碼1
/******************************************************************************
利用睡眠定時(shí)器,實(shí)現(xiàn)低功耗
******************************************************************************/
#include
#define uint unsigned int
#define uchar unsigned char
#define CC2530_Delay 15000
#define RLED P1_0
#define YLED P1_1 //LED燈控制IO口定義
void CC2530_Delay(void);
void CC2530_Init_IO_AND_LED(void);
void CC2530_SysPowerMode(uchar sel);
/****************************************************************
延時(shí)函數(shù)
****************************************************************/
void CC2530_Delay(void)
{
uint i;
for(i = 0;i= 20)
{
count = 0;
RLED = 0;
CC2530_SysPowerMode(3);
//10次閃爍后進(jìn)入睡眠狀態(tài)PM3
}
//CC2530_Delay();
CC2530_Delay();
//延時(shí)函數(shù)無形參,只能通過改變系統(tǒng)時(shí)鐘頻率或DEALY的宏定義
//來改變小燈的閃爍頻率
};
}
/*****************************************
中斷處理函數(shù)-系統(tǒng)喚醒
*****************************************/
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
if(P0IFG>0)
{
P0IFG = 0;
}
P0IF = 0;
CC2530_SysPowerMode(4);
}
復(fù)制代碼;i++);>
3.2 示例代碼2
/******************************************************************************
利用睡眠定時(shí)器實(shí)現(xiàn)低功耗
******************************************************************************/
#include
/*****************************************
//定義類型
*****************************************/
#define uchar unsigned char
#define uint unsigned int
#define RLED P1_0
#define GLED P1_1
#define CRYSTAL 0
#define RC 1
typedef unsigned char UINT8;
typedef unsigned char INT8U;
typedef unsigned short UINT16;
typedef unsigned short INT16U;
typedef unsigned long UINT32;
typedef unsigned long INT32U;
void CC2530_Set_ST_Period(uint sec);
void CC2530_Init_SLEEP_TIMER(void);
void CC2530_Delay(uint n);
void CC2530_LedGlint(void);
char LEDBLINK;
void CC2530_InitLEDIO(void)
{
P1DIR |= 0x03; //P10、P11定義為輸出
RLED = 0;
GLED = 0;//LED燈初始化為關(guān)
}
/*****************************************
設(shè)定系統(tǒng)主時(shí)鐘函數(shù)
*****************************************/
void SET_MAIN_CLOCK(source)
{
if(source)
{
CLKCONCMD |= 0x40; /*RC*/
while(!(CLKCONSTA &0X40)); /*待穩(wěn)*/
}
else
{
CLKCONCMD &= ~0x47; /*晶振*/
while((CLKCONSTA &0X40)); /*待穩(wěn)*/
}
}
/*****************************************
設(shè)定系統(tǒng)低速時(shí)鐘函數(shù)
*****************************************/
void SET_LOW_CLOCK(source)
{
(source==RC)?(CLKCONCMD |= 0X80):(CLKCONCMD &= ~0X80);
}
/*********************************************************************
//主函數(shù)
*********************************************************************/
void main(void)
{
SET_MAIN_CLOCK(CRYSTAL);
SET_LOW_CLOCK(CRYSTAL);
CC2530_InitLEDIO();
LEDBLINK = 0;
RLED = 1;
GLED = 0;
CC2530_Init_SLEEP_TIMER();
CC2530_LedGlint();
CC2530_Set_ST_Period(8);
while(1)
{
if(LEDBLINK)
{
CC2530_LedGlint();
CC2530_Set_ST_Period(8);
GLED = !GLED;
LEDBLINK = 0;
}
CC2530_Delay(100);
}
}
/*****************************************
//初始化Sleep Timer
*****************************************/
void CC2530_Init_SLEEP_TIMER(void)
{
ST2 = 0X00;
ST1 = 0X0F;
ST0 = 0X0F;
EA = 1; //開中斷
STIE = 1;
STIF = 0;
}
/*****************************************
//延時(shí)函數(shù)
*****************************************/
void CC2530_Delay(uint n)
{
uint jj;
for(jj=0;jj> 16);
ST1 = (UINT8)(sleepTimer >> 8);
ST0 = (UINT8) sleepTimer;
}
#pragma vector = ST_VECTOR
__interrupt void ST_ISR(void)
{
STIF = 0;
LEDBLINK = 1;
};jj++);>
作者:DS小龍哥
鏈接:https://juejin.cn/post/7021694551660167175
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
ZigBee
+關(guān)注
關(guān)注
158文章
2270瀏覽量
242724 -
低功耗
+關(guān)注
關(guān)注
10文章
2396瀏覽量
103670 -
CC2530
+關(guān)注
關(guān)注
19文章
221瀏覽量
57999
發(fā)布評論請先 登錄
相關(guān)推薦
評論