1、图 4.5.2 干黄门磁/霍尔开关传感器硬件接口图 4.5.3 ZIGBEE 模块主板 J5 接口系统配套的干黄门磁/霍尔开关传感器,与 ZIGBEE 模块的 J5 排线相连,这样我们可以知道,干黄门磁传 感器模块的信号线与 ZIGBEE 模块的 P0_0 IO 引脚相连,霍尔开关传感器与 P0_1 IO 引脚相连。因此我们 需要在代码中将相应引脚配置成中断输入模式,来监测干黄门磁/霍尔开关传感器状态。 CC2431 相关寄存器表 4.5.1 P0DIR 寄存器表 4.5.2 P0INP 寄存器表 4.5.3 PICTL 寄存器表 4.5.4 P1 寄存器表 4.5.5 P1DIR 寄存器以上
2、图表列出了关于 CC2431 处理器的 P0 和 P1 IO 端口相关寄存器,其中 P0DIR、P1DIR 为 IO 方向寄 存器,P0INP 为 P0 端口输入配置寄存器,PICTL 用来控制 P0 端口中断使能和中断触发模式寄存器。表 4.5.6 IEN0 寄存器表 4.5.7 IEN1 寄存器表 4.5.8 P0IFG 寄存器以上为与 P0 端口中断控制和配置相关寄存器,其中 IEN0 为系统中断总开关控制寄存器,IEN1 用来控制 P0 端口中断 使能,P01FG 寄存器用来监测 P0 端口中断状态的标志寄存器。表 4.5.9 CLKCON 寄存器表 4.5.10 SLEEP 寄存器表
3、 4.5.11 PERCFG 寄存器表 4.5.12 U0CSR 寄存器表 4.5.13 U0GCR 寄存器表 4.5.14 U0BUF 和 U0BAUD 寄存器以上图表列举了和 CC2431 处理器串口相关寄存器,用来初始化串口 0 配置的。详情见软件代码部分。3.2 软件设计源码分析:#include string.h#define uint unsigned int#define uchar unsigned char/定义控制灯的端口#define LED1 P1_0#define LED2 P1_1/函数声明void Delay(uint);void initUARTtest(voi
4、d);void UartTX_Send_String(char *Data,int len); unsigned int switch_flag;unsigned int switch2_flag;/*函数功能 :延时*入口参数 :定性延时*返 回 值 :无*说 明 :*/ void Delay(uint n)uint i,t;for(i = 0;i5;i+) for(t = 0;tn;t+);初始化串口57600-8-n-1*/ void initUART(void)CLKCON &= 0x40; /晶振 while(!(SLEEP & 0x40); /等待晶振稳定= 0x47; /TICH
5、SPD128 分频,CLKSPD 不分频SLEEP |= 0x04; /关闭不用的 RC 振荡器PERCFG = 0x00; /位置 1 P0 口P0SEL = 0x3c; /P0 用作串口P2DIR &= 0XC0; /P0 优先作为串口 0U0CSR |= 0x80; /UART 方式U0GCR |= 10; /baud_eU0BAUD |= 216; /波特率设为 57600UTX0IF = 0;串口发送字符串函数*入口参数 : data:数据* len :数据长度*/ void UartTX_Send_String(char *Data,int len)int j;for(j=0;jl
6、en;j+)U0DBUF = *Data+; while(UTX0IF = 0);void UartTX_Send_word(char word)U0DBUF = word;/*/IO P0_0 中断模式初始化*/ void Init_IO(void)P1DIR = 0X03; /设置 LEDLED1 = 1;LED2 = 1;P0DIR &= (0X030);/P0_0 输入模式 P0INP &= 0X03;/P0_0 开开上拉、下拉 PICTL |= 0X08;/P0_0 中断使能/PICTL &= (0X01/P0 上升沿触发PICTL |= 0X01;/ P0 下降沿触发IEN0 |=
7、0x80; /全局允许中断 IEN1 |=0x20; /P0 端口中断允许P0IFG &=(0x03 / P0_0 中断标志清 0;主函数*/ void main(void)switch_flag = 0;switch2_flag = 0;initUART();Init_IO();/ P1_0 IO 初始化while(1)/ 麦克声感中断处理if( (1 = switch_flag) &(P0IFG = 0) ) switch_flag = 0;LED1 = 0;/LED2 = 0;UartTX_Send_String(SWITCH Warning!,14);UartTX_Send_word(
8、0x0A); UartTX_Send_word(0x0D);Delay(10000); /延时/ 光感传感器中断处理if( (1 = switch2_flag) &(P0IFG = 0) ) switch2_flag = 0;/LED1 = 0;LED2 = 0;SWITCH2 Warning!/*/中断服务程序(P0_0 端口)*/#pragma vector = P0INT_VECTOR interrupt void P0_ISR(void)if(P0IFG&0x01) /麦克声感中断P0IFG = 0;switch_flag = 1;0x02) /光感中断switch2_flag = 1
9、;P0IF = 0; /清中断标志程序通过配置 CC2431 处理器的 IO P0_0、P0_1 引脚为输入中断引脚,用来监测干黄门磁/霍尔开关传感器 传感器的状态,如果干黄门磁关闭或霍尔开关开关监测到磁力信号则产生相应中断,则将分别点亮 LED1 和 LED2,并向串口输出“SWITCH Warning!”和“SWITCH2 Warning!”字符串。4. 实验步骤 使用 USB 仿真器连接 PC 机和 ZIGBEE(CC2431)模块,将 ZIGBEE 调试板的电源拨到 3.3V 段,打开 ZIEBEE 模块开关供电。将系统配套串口线一端连接 PC 机,一端连接 ZIGBEE 调试板的串口
10、上。 将系统配套干黄门磁/霍尔开关传感器连接到 ZIGBEE 模块的主板上,连接 J5 线排端,且保证 RJ1 电 阻跳线跳至 5V 供电端。勿要连接错!。 启动 IAR 开发环境,新建工程,将 Exp5 实验工程中代码拷贝到新建工程中。 在 IAR 开发环境中编译、运行、调试程序。 使用 PC 机自带的超级终端连接串口,将超级终端设置为串口波特率 57600、8 位、无奇偶奇校验、无 硬件流模式,当干黄门磁开关检测到磁力,则点亮 ZIGBEE 模块的 LED1 灯、且串口输出“SWITCH Warning!”。当霍尔开关监测到磁力则点亮 ZIGBEE 模块的 LED2 灯、且串口输出“SWITCH2 Warning!” 字符串。 备注:所有传感器实验,在运行测试时候,请使用 5V 电源给 ZIGBEE 供电,否则传感器供电将不足。 即使用仿真器下载万程序后,将 ZIGBEE 调试板电源开关拨至 5V 供电,下载调试时候再改回 3.3V 供 电。 备注说明:干黄门磁和霍尔开关可以使用磁铁来测试状态。