ZigBee串口发送(非协议栈)
2015-12-19 19:26
771 查看
1还是代码亲切 直接来代码吧
<span style="font-size:18px;">#include <ioCC2530.h> #include <string.h> #define uint unsigned int #define uchar unsigned char //定义控制灯的端口 #define LED1 P1_0 #define LED2 P1_1 //函数声明 void Delay(uint); void initUARTSEND(void); void UartTX_Send_String(char *Data,int len); char Txdata[25]="HELLO! zigbee!\n"; /**************************************************************** 延时函数 ****************************************************************/ void Delay(uint n) { uint i; for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); for(i=0;i<n;i++); } /**************************************************************** 串口初始化函数 ****************************************************************/ void initUARTSEND(void) { CLKCONCMD &= ~0x40; //系统时钟源选择 0100 0000 ~~-> 1011 1111 结果bit6一定是0 系统时间的选择 0为32kHzXOSC 1为32kHzRCOSC while(CLKCONSTA & 0x40); //时间频率状态寄存器 0100 0000 当前选择的系统时钟 0:32MHzXOSC 1:16MHz RCOSC /* 设置了CLKCONCMD时钟钟后,需要等待一段时间让时钟稳定,当内核稳定的运行预先设定的系统时钟后CLKCONSTA中相应的标志位会变化 */ CLKCONCMD &= ~0x47; // 系统主时钟选择 0100 0111 ~~-->1011 1000 //bit6 0为32M晶振 bit2-0 000为32Mhz 设置系统主时钟频率为32MHZ PERCFG = 0x00; //设置部分外设的IO位置 0为默认位置1,1为默认位置2 //位置1 P0口 P0SEL = 0x3c;//设置普通还是外设IO口 0011 1100 0为普通1为外设 串口为外设功能//P0_2,P0_3,P0_4,P0_5用作串口 P2DIR &= ~0XC0;//1100 0000~~-->0011 1111 bit7.6肯定为0 bit7bit6:00 -->第一优先级USART0 第二优先级USART1 第三优先级定时器 //P0优先作为UART0 U0CSR |= 0x80;//1000 0000 bit7一定为 1 , bit7:0为SPI模式 1为UART模式 //UART方式 U0GCR |= 11;// BAUD_E U0BAUD |= 216;//BAUD_M //波特率设为19200 按说是115200???????????????? /** U0GCR 的bit[4--0]与U0BAUD[7--0]一起决定了Uart的波特率 有计算公式和列表 */ UTX0IF = 0; //串口中断标志 //UART0 TX中断标志初始置位0 /** 串口初始化思想 首先设置系统时钟源 采用CKKCINCMD寄存器 本次系统时间选择的是32KHzXOSC 采用while()进行保持时钟稳定 重新对CLKCONCMD寄存器进行设置 设置主时钟的频率为32MHz 设置外设IO口位置 设置为位置1 也就让PERCFG 全为0 设置外设串口的IO口 P0SEL寄存器 设置USART的优先级 使USART0 为第一优先级 使用P2DIR 通过U0CSR设置为UART模式 设置波特率 比特率是根据两组寄存器共同决定的 U0GCR U0BAUD 他们有自己的计算公式与表 然后再将串口的中断标志为设为 0 寄存器参考http://wenku.baidu.com/view/6a4053a228ea81c759f57839.html?from=search */ } /**************************************************************** 串口发送字符串函数 ****************************************************************/ void UartTX_Send_String(char *Data,int len) { int j; for(j=0;j<len;j++) { U0DBUF = *Data++; //USART 0 Receive/Transmit Data Buffer while(UTX0IF == 0);//中断标志 == 0 UTX0IF = 0; } } /**************************************************************** 主函数 ****************************************************************/ void main(void) { uchar i; P1DIR = 0x03; //P1控制LED LED1 = 1; LED2 = 0; //关LED initUARTSEND(); UartTX_Send_String(Txdata,25); for(i=0;i<30;i++)Txdata[i]=' '; strcpy(Txdata,"HELLO! zigbee!\n"); //将UART0 TX test赋给Txdata; while(1) { UartTX_Send_String(Txdata,strlen(Txdata)); //串口发送数据 Delay(50000); //延时 LED2=!LED2; //D2灯在闪,标志发送状态 Delay(50000); Delay(50000); } } </span> 不用发 项目包了吧 直接复制就好 然后配置好了。
</pre><pre name="code" class="cpp">效果图<img src="http://img.blog.csdn.net/20151219193001968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相关文章推荐
- Google搜索语法
- PAT乙级测试题及JAVA参考例程
- BZOJ2527: [Poi2011]Meteors
- 动态RAM的刷新
- The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class
- 四则运算项目
- ReactJS学习笔记(三)
- 【Java EE 学习 78 上】【数据采集系统第十天】【Service使用Spring缓存模块】
- ArrayList LinkList Vector
- [leetcode]Minimum Size Subarray Sum
- 摆鸡腿(递归)
- 数据结构学习总结
- Linux 安装之U盘引导
- 字符串按照一定规则分开(比方字母和数字分开)
- [LeetCode] 3Sum 解题思路
- BZOJ1607 Patting Heads轻拍牛头
- java web session+cookie实现用户自动登录
- 关键字
- bzoj 3172(AC自动机)
- 微信公众平台开发(110) 微信连Wi-Fi