网站首页 > 技术文章 正文
[本文属原创,转载请附上原文出处链接。]
刚接触ZigBee无线通信技术,熟悉一下ZStack协议栈。先从调试串口开始,再慢慢开始协议栈代码调试。串口模式是全双工的异步串行通信,串口的通信就是对串口相关寄存器的操作,比如控制和状态寄存器、通用控制寄存器、数据缓冲寄存器及波特率控制寄存器等。下面程序已实现TI CC2530单片机的发送和接收数据,用的是CC Debugge仿真器和ZigBee最小系统,使用串口还得接个USB转串口设备,我用的是USB转TTL串口,下面来进行实现代码讲解:
头文件和系统变量声明部分:
#include <ioCC2530.h>
#include <string.h>
char Temp;
uchar data = 0;
#define maxfile 100
char readdata[maxfile];
static char datatext[]="串口调试\n";
主函数部分:
void main(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定为32M
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
InitUART(); //串口初始化
Uart_SendString(datatext,strlen(datatext));
while(1)
{
if( Temp != 0)
{
if((Temp!=' ')&&(data<maxfile))
readdata[data++] = Temp;
else
{
U0CSR &= ~0x40; //禁止接收
Uart_SendString(readdata,data); //发送已记录的字符串。
U0CSR |= 0x40; //允许接收
data = 0;
}
Temp = 0;
}
}
}
普通延时函数:
void delay(unsigned int i)
{
unsigned int j;
for(i=i;i>0;i--)
for(j=0;j<0x3000;j++);
}
串口初始化函数:
void InitUART(void)
{
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部设备功能)
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //设置为UART方式
U0GCR |= 8;
U0BAUD |= 59; //波特率设为9600
UTX0IF = 0; //UART0 TX中断标志初始置位0
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; // 开总中断,接收中断
}
上面串口初始化程序串口的波特率设置为9600,在32MHz系统时钟下常用的波特率设置参考如下图:
数据发送函数:
void Uart_SendString(char *Data,int length)
{
int j;
for(j=0;j<length;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
中断服务程序:
#if 1
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; // 清中断标志
Temp = U0DBUF;
}
#endif
- 上一篇: 基于Zigbee的智能门锁控制终端设计
- 下一篇: CC2530系列课程 | IAR新建一个工程
猜你喜欢
- 2024-10-12 [ZigBee] 2、 ZigBee开发环境搭建
- 2024-10-12 基于ZigBee网络的智能铁鞋系统设计
- 2024-10-12 Ameya360干货|基于 TI 的智能 LED 照明设计方案
- 2024-10-12 基于ZigBee远程通信的水质监测系统设计
- 2024-10-12 NFC与ZigBee技术在智慧农业物联网监测系统中的应用
- 2024-10-12 如何选择不同版本TI的ZigBee 协议栈进行开发?
- 2024-10-12 i.MX6ULL开发板处理器软硬件规格资料说明书
- 2024-10-12 基于ZigBee的粮库环境监控系统设计
- 2024-10-12 基于zigbee的环境监测系统设计 基于zigbee的环境监测系统设计产品
- 2024-10-12 iMX6ULL开发板物联网模块开发,Zigbee/LoRa/4G模块测试(下)
你 发表评论:
欢迎- 最近发表
-
- 在 Spring Boot 项目中使用 activiti
- 开箱即用-activiti流程引擎(active 流程引擎)
- 在springBoot项目中整合使用activiti
- activiti中的网关是干什么的?(activiti包含网关)
- SpringBoot集成工作流Activiti(完整源码和配套文档)
- Activiti工作流介绍及使用(activiti工作流会签)
- SpringBoot集成工作流Activiti(实际项目演示)
- activiti工作流引擎(activiti工作流引擎怎么用)
- 工作流Activiti初体验及在数据库中生成的表
- Activiti工作流浅析(activiti6.0工作流引擎深度解析)
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)