#1楼主:zigbee中怎么应用定时器中断的问题
文章发表于:2008-10-08 03:14
大家好,原来做的时候是用延时的方法,现在老师让用定时器中断精确采集,不知道在协议中怎么用中断,还是直接加到后面吗
#2
文章发表于:2008-10-09 08:08
我用的无限龙的cc2430模块 这是我自己写的 你看看能不能帮到忙 只作为参考使用
#include <ioCC2430.h>
#define RLED P1_0
#define YLED P1_1
unsigned char n=0;
void init(void)
{
YLED=1;
RLED=1;
EA=1; //开总中断
T1IE=1; 定时器T1 中断开
T1CTL |= 0X02; 定时器1比较计数模式
T1CC0H=0x03;
T1CC0L=0xe8; 计数1000次
}
#pragma vector=T1_VECTOR
__interrupt void T1_ISR(void)
{
IRCON=0;
n++;
if(n==250)
{
n=0;
YLED=RLED;
RLED=!RLED;
}
}
void InitClock(void)
{
CLKCON = 0X38; //TICKSPD = 101 定时器计数时钟源 CLKSPD = 000 和波特率有关
//两个时钟源选用晶振
while(!(SLEEP&0X40)); //等晶振稳定
}
void main(void)
{
P1SEL=0x00;
P1DIR|=0x03;
InitClock();
init();
while(1)
{
}
}
#3
文章发表于:2008-10-09 08:16
定时器1相关寄存器(可能有点乱呢 T_T 不会弄表格上来 O_o||| )
T1CTL(T1 控制&状态寄存器):
位号 位名 复位值 操作性 功能描述
7 CH2IF 0 可读/写0 定时器1 通道2 中断标志位
6 CH1IF 0 可读/写0 定时器1 通道1 中断标志位
5 CH0IF 0 可读/写0 定时器1 通道0 中断标
4 OVFIF 0 可读/写0 定时器溢出中断标志,在在计数器达到计数
终值的时候置位
3:2 DIV[1:0] 00 可读/写 定时器1 计数时钟分步选择
00 不分频
01 8 分频
10 32 分频
11 128 分频
1:0 MODE[1:0] 00 可读/写 定时器1 模式选择
00 暂停
01 自动重装0x0000-0xffff
10 比较计数0x0000-T1CC0
11 PWM 方式
0x0000-T1CC0-0X0000
#4
文章发表于:2008-10-09 11:00
用完定时器,别忘了关
#5
文章发表于:2008-10-09 21:34
能不能讲讲中断程序的前两行如#pragma vector="T1"_VECTOR
__interrupt void T1_ISR(void)都是什么意思?
#6
文章发表于:2008-10-10 08:37
#pragma vector="T1"_VECTOR
__interrupt void T1_ISR(void)
个人认为应该是中断程序的一个格式吧
上面这一句是用的TI做中断
若用T2就把T1换作T2
cc2430中断名称: PFERR,ADC,URX1,URX0,ENC,ST,P2INT,UTX0,DMA,T1,T2,T3,T4,P0INT,UTX1,P1INT,RF,WDT
#7
文章发表于:2008-10-27 16:51
EA=1;
????
cc2430的数据手册中怎么没有这个寄存器啊?
#8
文章发表于:2008-10-28 12:02
Z-Stack2006中定时器中断通过event向task触发:
#define GENERICAPP_SEND_MSG_TIMEOUT 5000 // Every 5 seconds
osal_start_timerEx( GenericApp_TaskID, //定时器中断时同知的task
GENERICAPP_SEND_MSG_EVT, //发出的event码
GENERICAPP_SEND_MSG_TIMEOUT ); //定时时间
//定时时间到时将向GenericApp_TaskID发出GENERICAPP_SEND_MSG_EVT,操作系统主循环轮询到GenericApp_ProcessEvent()时,
if ( events & GENERICAPP_SEND_MSG_EVT )
{
}
将被执行。