第三次无线传感器网络实验
更新时间:2024-01-16 10:22:01 阅读量: 教育文库 文档下载
南昌航空大学实验报告
二O 一六 年 四 月 20 日
课程名称: 无线传感器网络 实验名称:CC2530 串口指令控制LED灯 班级: 姓名:
指导教师评定: 签名:
一、实验目的
1. 通过实验掌握CC2530 芯片串口配置与使用 2. 观察底板上RX、TX串口发送指示灯的变化
3. 接收串口发送过来的数据,通过数据内容分析控制LED
注:嵌入式开发中,当程序能跑起来后,串口是第一个要跑起来的设备,所有的工作状态,交互信息都会从串口输出。
二、实验内容
1. 查看数据手册,了解CC2530的串口功能,熟悉串口的相关配置寄存器; 2. 根据实验手册内容配置CC2530的串口相关寄存器,使用P0_2和P0_3的外设功能将其配置为串口方式,并设置波特率为115200后处理串口的中断,使其允许接收数据并产生中断; 3. 配置所需LED灯的I/O口;
4. 编写串口的初始化、发送数据以及中断处理函数;
5. 在程序入口函数中,设置系统时钟源和主频,初始化完毕后,进入while循环处理相应指令并控制LED灯。
三、实验相关电路图
图1
PL2303HX串口转换芯片电路原理图
P0_2、P0_3配置为外设功能时:P0_2为RX, P0_3为TX. USART0和USART1是串行通信接口,它们能够分别运行于异步UART模式或者同步SPI模式。两个USART具有同样的功能,可以设置在单独的I/O 引脚 。
四、实验过程
1. 串口的配置
1)配置IO,使用外部设备功能。此处配置P0_2和P0_3用作串口UART0。
2)配置相应串口的控制和状态寄存器。 3)配置串口工作的波特率。 波特率由下式给出:
F 是系统时钟频率,等于16 MHz RCOSC 或者32 MHz XOSC。
2. 中断的初始化
1)标志位清0;
2)处理串口的默认接收状态; 3)开启系统中断。
3. 使用串口调试助手对程序进行调试检验,注意发送的指令必须以字符串形式发送而不能以hex形式发送;
4. 源代码
#include
typedef unsigned char uchar; typedef unsigned int uint; #define UART0_RX 1 #define UART0_TX 2 #define CONTROL_LED 3 #define SIZE 4 #define ON 0 #define OFF 1 #define LED1 P1_0 #define LED2 P1_1 char RxBuf; char UartState; uchar count;
char RxData[SIZE]; //存储发送字符串 void DelayMS(uint msec) {
uint i,j;
for (i=0; i void InitLed(void) { P1DIR |= 0x03; //P1.0和P1.1定义为输出口 } void InitUart(void) { PERCFG = 0x00; //外设控制寄存器 USART 0的IO位置1 P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能) P2DIR &= ~0xC0; //P0优先作为UART0 U0CSR |= 0x80; //设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 UTX0IF = 0; //UART0 TX中断标志初始置位0 U0CSR |= 0x40; //允许接收 IEN0 |= 0x84; //开总中断允许接收中断 } void UartSendString(char *Data, int len) { uint i; for(i=0; i U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void) { URX0IF = 0; // 清中断标志 RxBuf = U0DBUF; } void main(void) { CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ InitLed(); //设置LED灯相应的IO口 InitUart(); //串口初始化函数 UartState = UART0_RX; //串口0默认处于接收模式 memset(RxData, 0, SIZE); while(1) { if(UartState == UART0_RX) //接收状态 { if(RxBuf != 0) { if((RxBuf != '#')&&(count < 3))//以'#'为结束符 RxData[count++] = RxBuf; else { if(count >= 3) //判断数据合法性,防止溢出 { count = 0; //计数清0 memset(RxData, 0, SIZE);//清空接收缓冲 } else UartState = CONTROL_LED;//进入发送状态 } RxBuf = 0; } } if(UartState == CONTROL_LED) //控制LED灯 { //判断接收的数据合法性 if((RxData[0]=='d'||RxData[0]=='D')&&(RxData[1]=='1'||RxData[1]=='2')) { if(RxData[1]=='1') LED1 = ~LED1; //低电平点亮 else LED2 = ~LED2; } else if((RxData[0]=='a'||RxData[0]=='A')&&(RxData[1]=='0'||RxData[1]=='1')) { if(RxData[1]=='0') { LED1 = ON; LED2 = ON; } else { LED1 = OFF; LED2 = OFF; } } UartState = UART0_RX; count = 0; memset(RxData, 0, SIZE); //清空接收缓冲区 } } } 五、实验心得 本次实验主要是熟悉串口功能的使用,通过实验弄清了串口相关的寄存器及 配置方法,通过自己动手写代码配置寄存器加强了对串口功能的掌握,进一步熟悉了对于硬件编程的特点,即寄存器的配置,也巩固了对串口通信的理解和运用,还有一点是在调试程序过程中积累了经验,有助于后期对CC2530芯片编写程序和调试程序。
正在阅读:
第三次无线传感器网络实验01-16
剑灵不删档气功师PVE天赋加点攻略05-08
重庆市长寿区2017-2018年七年级数学下学期3月月考试题新人教版01-13
复旦大学西方哲学研究生试题及答案03-17
2009至2013五年安徽理科数学高考卷(高清图,详解)04-06
双泉镇卫生院巩固爱婴医院半年工作总结08-23
钻孔工程质量验收办法04-21
电大英语单词选择04-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 传感器
- 无线
- 实验
- 网络
- 第4课《明清君主专制的加强》教学设计
- 学校运动场改造施工方案
- 八年级下学期 数学月考试卷
- 新版超市营运管理手册140页 - 图文
- 工程光学大纲
- 热控考试题
- pbs缓冲液各种PH值得配制方法
- 小学英语词汇教学论文3
- 分公司经理晋升考核试题
- 工程光学实验指导书
- (样版)提拨正科副科会议纪要、会议记录《关于确定XXX同志为“试岗比选”乡镇后备干部考察对象会议纪要》
- 人教版小学语文六年级下册第一二三单元知识要点
- SQL民航售票系统数据库课程设计 - 图文
- 试题总结
- 河西堡第三小学-三年级-校本教案 - 图文
- 六年级语文-小学六年级语文专项复习《阅读》(配西师版) 最新
- 2012年中考一次函数试题
- 黑龙江八一农垦大学全日制MPAcc复试线
- 2013年哈尔滨香坊区三模物理试题及参考答案
- 王道俊、郭文安版《教育学》笔记整理