博焱科技
重要的宏定义 开启溢出中断
#define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \\ do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \\ EA = 1; \\ T3IE = 1; \\ }while(0) 功能:打开T3的溢出中断。 复位T3相关寄存器
#define TIMER34_INIT(timer) \\ do { \\ T##timer##CTL = 0x06; \\ // 比较模式 T##timer##CCTL0 = 0x00; \\ T##timer##CC0 = 0x00; \\ T##timer##CCTL1 = 0x00; \\ T##timer##CC1 = 0x00; \\ } while (0) 功能:将T3相关的寄存器复位到0 控制T3起停
#define TIMER3_START(val) \\ (T3CTL = (val) ? T3CTL | 0X10 : T3CTL&~0X10) 功能:val为1 ,T3正常运行,val为0 ,T3停止计数,设置T3工作方式
#define TIMER3_SET_MODE(val) \\
do{ \\ T3CTL &= ~0X03; \\ (val==1)?(T3CTL|=0X01): /*DOWN */ \\ (val==2)?(T3CTL|=0X02): /*Modulo */ \\
(val==3)?(T3CTL|=0X03): /*UP / DOWN */ \\ (T3CTL|=0X00); /*free runing */ \\ }while(0)
#define T3_MODE_FREE 0X00
#define T3_MODE_DOWN 0X01 #define T3_MODE_MODULO 0X02 #define T3_MODE _UP_DOWN 0X03
功能:根据val的值将T3设置为不同模式,一共4 种模式。 具体代码见实验源码包。
2、实验步骤
连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。
(三)预期实验结果:
执行程序以后,T3每发生200 次中断小灯改变状态一次。
1.3.4 CC2530 基础实验8 :T4使用
一、实验目的:
用定时器4来改变小灯的状态,T4每发生200 次中断小灯改变状态一次。 二、实验仪器设备
博焱科技
仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:
(一)实验原理说明: 硬件说明:
与实验1中硬件电路相同。 软件说明:
实验中操作了的寄存器有P1,P1SEL ,P1DIR ,T4CTL,T4CCTL0,T4CC0 ,T4CCTL1,T4CC1 等寄存器。
P1 参见CC2530实验1 P1SEL 参见 CC2530实验 1 P1DIR 参见 CC2530实验 1 (二)实验内容: 1、实验相关函数
void Init_T4_AND_LED(void);函数原型:
void Init_T4_AND_LED(void)
{ P1DIR = 0X03; led1 = 1; led2 = 1; TIMER34_INIT(4); // 初始化T4 TIMER34_ENABLE_OVERFLOW_INT(4,1); // 开T4中断 TIMER34_SET_CLOCK_DIVIDE(4,128); TIMER34_SET_MODE(4,0); //自动重装 00->0xff
TIMER34_START(4,1); //启动 } 函数功能:将I/0 P10,P11 设置为输出去控制LED ,将T4设置为自动重装模式,定时器时钟16分频,并启动 T4。
void T4_ISR(void);函数原型: #pragma vector = T4_VECTOR __interrupt void T4_ISR(void) { //IRCON = 0x00; // 清中断标志, 硬件自动完成 if(counter<200)counter++; //10 次中断LED 闪烁一轮 else { counter = 0; //计数清零 RLED = !RLED; //改变小灯的状态 } } 函数功能:这是一个中断服务程序,每200 次中断改变一次红色 LED 的状态。 重要的宏定义 开启溢出中断
#define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \\ do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \\ EA = 1; \\ T4IE = 1; \\ }while(0) 功能:打开T4的溢出中断。 复位T4相关寄存器
博焱科技
#define TIMER34_INIT(timer) \\ do { \\ T##timer##CTL = 0x06; \\ T##timer##CCTL0 = 0x00; \\ T##timer##CC0 = 0x00; \\ T##timer##CCTL1 = 0x00; \\ T##timer##CC1 = 0x00; \\ } while (0) 功能:将T4相关的寄存器复位到0 控制T4起停
#define TIMER#define TIMER34_START(timer,val) \\ (T##timer##CTL = (val) ? T##tim er##CTL | 0X10 : T##timer##CTL&~0X10) 功能:timer为定时器序号,只能取3或4 。val为1,定时器正常运行,val为0,定时器停止计数
设置T4工作方式
#define TIMER3_SET_MODE(val) \\ do{ \\ T4CTL &= ~0X03; \\ (val==1)?(T4CTL|=0X01): /*DOWN */ \\ (val==2)?(T4CTL|=0X02): /*Modulo */ \\ (val==3)?(T4CTL|=0X03): /*UP / DOWN */ \\ (T4CTL|=0X00); /*free runing */ \\ }while(0)
#define T4_MODE_FREE 0X00 #define T4_MODE_DOWN 0X01 #define T4_MODE_MODULO 0X02 #define T4_MODE _UP_DOWN 0X03 功能:根据val的值将T4设置为不同模式,一共4 种模式。 具体代码见实验源码包。 2、实验步骤
连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。
(三)预期实验结果:
执行程序以后,T4每发生200 次中断小灯改变状态一次。
1.4 串口UART
1.4.1CC2530 基础实验9:单片机串口发数
一、实验目的:
从CC2530上通过串口不断地发送字串“UART0 TX Test”。实验使用 CC2530的串口 1,波特率为57600。
博焱科技
图6串口助手界面
二、实验仪器设备
仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容:
(一)实验原理说明: 硬件说明:
无 软件说明:
实验中操作了的寄存器有CLKCONCMD,SLEEPCMD,PERCFG ,U0CSR,U0GCR,U0BAUD,IEN0,U0DUB,ADCCON1,ADCCON3,ADCH ,ADCL 等寄存器。
各寄存器的说明请参见CC2530数据手册。 (二)实验内容: 1、实验相关函数
void Delay(uint n);///定性延时,参见实验1 void initUARTtest(void);函数原型:
void initUARTtest(void) { CLKCONCMD &= ~0x40; // 晶振 while(!(SLEEPSTA & 0x40)); // 等待晶振稳定
CLKCONCMD &= ~0x47; //TICHSPD128 分频,CLKSPD 不分频 SLEEPCMD |= 0x04; // 关闭不用的 RC振荡器 PERCFG = 0x00; // 位置1 P0 口
P0SEL = 0x3c; //P0 用作串口 P2DIR &= ~0XC0; //P0 优先作为串口0 U0CSR |= 0x80; //UART 方式 U0GCR |= 10; //baud_e U0BAUD |= 216; // 波特率设为57600 UTX0IF = 0; } 函数功能:初始化串口0 ,将I/O 映射到P0口,P0优先作为串口0 使用,UART 工作方式,波特率为57600。使用晶振作为系统时钟源。 void UartTX_Send_String(char *Data,int len) 函数原型:
void UartTX_Send_String(char *Data,int len) { int j;
博焱科技
for(j=0;j UTX0IF = 0; } } 函数功能:串口发字串,*Data 为发送缓存指针,len 为发送字串的长度,只能是在初始化函数void initUARTtest(void) 之后调用才有效。发送完毕后返回,无返回值。 具体代码见实验源码包。 2、实验步骤 连接硬件。打开IAR建立新工程,编写相关代码。在线调试代码 ,调试完毕通过下载器将可执行文件下载至单板,观察实验结果。 (三)预期实验结果: 执行程序以后,打开串口助手,会看到串口助手上不停有收到的字符打印。 1.4.2CC2530 基础实验10:在PC用串口控制LED 一、实验目的: 在PC上从串口向CC2430 模块发送命令,即可控制LED 灯的亮灭,控制数据的格式为“灯编号开|关#”,LED1,LED 2 ,0 是关灯,1 是开灯,如打开LED2的命令是“21#”二、实验仪器设备 仿真器1 台,传感器节点底板1 块,ZigBee 模块 1 块,USB 连接线1 根。 三、实验内容: (一)实验原理说明: 硬件说明: 无 软件说明: 实验中操作了的寄存器有:P1,P1DIR ,P1SEL ,CLKCONCMD,SLEEPCMD,PERCFG , U0CSR,U0GCR,U0BAUD,IEN0,U0DUB等寄存器。 各寄存器的说明请参见CC2530数据手册。