刚接触ZigBee,熟悉了一下ZStack协议栈,总算有了点认识。先从调试串口开始,再慢慢开始协议栈代码调试,下面程序已实现发送和接收数据,用的是CC Debugge仿真器和ZigBee最小系统,使用串口还得接个USB转串口设备,我用的是USB转TTL串口,直接贴代码:
包含头文件和系统变量声明部分:
复制代码
1
2
3
4
5
6
7
8
9#include <ioCC2530.h> #include <string.h> #include"text.h" char Temp; uchar data = 0; #define maxfile 100 char readdata[maxfile]; static char datatext[]="串口调试n";
主函数部分:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26void 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; } } }
普通延时函数:
复制代码
1
2
3
4
5
6
7void delay(unsigned int i) { unsigned int j; for(i=i;i>0;i--) for(j=0;j<0x3000;j++); }
串口初始化函数:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14void 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; // 开总中断,接收中断 }
数据发送函数:
复制代码
1
2
3
4
5
6
7
8
9
10
11void Uart_SendString(char *Data,int length) { int j; for(j=0;j<length;j++) { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } }
中断服务程序:
复制代码
1
2
3
4
5
6
7
8
9
10#if 1 #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void) { URX0IF = 0; // 清中断标志 Temp = U0DBUF; } #endif
头文件部分:
复制代码
1
2
3
4
5
6
7
8#ifndef TEXT_H #define TEXT_H typedef unsigned char uchar; void delay(unsigned int i); void initUART(void); void Uart_SendString(char *Data,int length); #endif
更多技术文章浏览请关注:
百家号:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh
头条号:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987
最后
以上就是独特绿草最近收集整理的关于ZigBee CC2530串口通信调试的全部内容,更多相关ZigBee内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复