TEL:15882009209
http://jielovedan.taobao.com/
1
目录
睡眠定时器唤醒系统 ........................................................................................................ 2
1、适用平台 佳杰科技 Q2530SB 硬件平台 ................................................................. 2
2、实验设备 ............................................................................................................. 2
3、实验目的 ............................................................................................................. 3
4、实验相关寄存器 ................................................................................................... 3
5、程序效果 ............................................................................................................. 3
6、程序代码 ............................................................................................................. 3
TEL:15882009209
http://jielovedan.taobao.com/
2
睡眠定时器唤醒系统
1、适用平台 佳杰科技 Q2530SB硬件平台
2、实验设备
1.RF2530N或者 RF2530A 1块
2.Q2530SB 底板 1块
3.USB 连接线 1条
4.SmartRF04EB 仿真器 1个
TEL:15882009209
http://jielovedan.taobao.com/
3
3、实验目的
了解睡眠定时器的使用。睡眠定时器用于设置系统进入和退出低功耗睡眠模式之间的周期。
还用于当系统进入低功耗模式后,维持 MAC 定时器(T2)的定时。其特性如下:长达 24
位定时计数器,运行在 32.768KHZ 的工作频率。24位的比较器具有中断和 DMA触发功能在
PM2低功耗模式下运行
4、实验相关寄存器
相关寄存器:P1,P1DIR,P1SEL,P1IEN,P1CTL,IEN2,IEN0,P1IFG,P1INP,P2INP,CLKCONCMD,PCON,
SLEEPCMD,ST0,ST1,ST2(前面以介绍过的这里不再重复介绍,寄存器功能说明请参阅
CC2530Datasheet.pdf )
ST0(0x95) 睡眠计数器数据 Bit7:Bit0
ST1(0x96) 睡眠计数器数据 Bit15:Bit8
ST2(0x97) 睡眠计数器数据 Bit23:Bit16
5、程序效果
利用睡眠定时器(SleepTimer)进行系统唤醒,每次唤醒时,D2亮。实验效果见文件视频。
6、程序代码
//┏━━━━━━━━━━━━━━━━━━━━┓
//┃出品公司:佳杰科技有限公司......──────┃
//┃版本:1.1…───────────────┃
//┃硬件平台:Q2530SB.───────────┃
//┗━━━━━━━━━━━━━━━━━━━━┛
#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;
TEL:15882009209
http://jielovedan.taobao.com/
4
typedef unsigned short INT16U;
typedef unsigned long UINT32;
typedef unsigned long INT32U;
void Set_ST_Period(uint sec);
void Ini t_SLEEP_TIMER(void);
void Delay(uint n);
void LedGlint(void);
char LEDBLINK;
void Ini tLEDIO(void)
{
P1DIR |= 0x03; //P10、P11、P14定义为输出
RLED = 0;
GLED = 0;
//LED 灯初始化为关
}
/*****************************************
设定系统主时钟函数
*****************************************/
void SET_MAIN_CLOCK(source)
{
if(source) {
CLKCONCMD |= 0x40; /*RC*/
while(!(CLKCONSTA &0X40)); /*待稳*/
}
else {
CLKCONCMD &= ~0x47; /*晶振*/
while((CLKCONSTA &0X40)); /*待稳*/
}
}
/*****************************************
设定系统低速时钟函数
*****************************************/
void SET_LOW_CLOCK(source)
{
(source==RC)?(CLKCONCMD |= 0X80):(CLKCONCMD &= ~0X80);
}
/*********************************************************************
//主函数
*********************************************************************/
void main(void)
{
SET_MAIN_CLOCK(CRYSTAL);
SET_LOW_CLOCK(CRYSTAL);
Ini tLEDIO();
TEL:15882009209
http://jielovedan.taobao.com/
5
LEDBLINK = 0;
RLED = 1;
GLED = 0;
Ini t_SLEEP_TIMER();
LedGlint();
Set_ST_Period(8);
while(1)
{
if(LEDBLINK)
{
LedGlint();
Set_ST_Period(8);
GLED = !GLED;
LEDBLINK = 0;
}
Delay(100);
}
}
/*****************************************
//初始化 Sleep Timer
*****************************************/
void Ini t_SLEEP_TIMER(void)
{
ST2 = 0X00;
ST1 = 0X0F;
ST0 = 0X0F;
EA = 1; //开中断
STIE = 1;
STIF = 0;
}
/*****************************************
//延时函数
*****************************************/
void 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;
}
佳杰科技出品
欢迎项目合作开发
TEL:15882009209
网址:http://jielovedan.taobao.com/
睡眠定时器唤醒系统
1、适用平台 佳杰科技Q2530SB硬件平台
2、实验设备
3、实验目的
4、实验相关寄存器
5、程序效果
6、程序代码