zigbee基础应用(五)uart串口通信
U0BAUD |= 216; //波特率设为115200
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define LED1 P1_0
#define LED2 P1_1
void initUART0(void);
void InitialAD(void);
void UartTX_Send_String(uchar *Data,int len);
uchar Recdata[30]="hello zigbee!\n";
uchar RXTXflag = 1;
uchar temp;
uint datanumber = 0;
uint stringlen;
/****************************************************************
串口发送字符串函数
****************************************************************/
void UartTX_Send_String(uchar *Data,int len)
{
int j;
for(j=0;j<len;j++)
{
U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
#if 0
/****************************************************************
初始化串口0函数
****************************************************************/
void initUART0(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //串口设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 1; //UART0 TX中断标志初始置位1
U0CSR |= 0X40; //允许接收
IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
串口接收一个字符:一旦有数据从串口传至CC2530,则进入中断,将接收到的数据赋值给变量temp.
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
}
#else
/****************************************************************
初始化串口0函数
****************************************************************/
void initUART0(void)
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
PERCFG = 0x00; //位置1 P0口
P0SEL = 0x3c; //P0用作串口
P2DIR &= ~0XC0; //P0优先作为UART0
U0CSR |= 0x80; //串口设置为UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率设为115200
UTX0IF = 1; //UART0 TX中断标志初始置位1
U0CSR |= 0X40; //允许接收
// IEN0 |= 0x84; //开总中断,接收中断
}
/****************************************************************
主函数
****************************************************************/
void main(void)
{
P1DIR = 0x03; //P1控制LED
LED1 = 1;
LED2 = 1; //关LED
initUART0();
stringlen = strlen((char *)Recdata);
UartTX_Send_String(Recdata,stringlen);
while(1)
{
if(RXTXflag == 1) //接收状态
{
if( URX0IF == 1)
{
LED2=0; //接收状态指示
URX0IF = 0; //清中断标志
temp = U0DBUF;
if((temp!='#')&&(datanumber<50)) //’#‘被定义为结束字符,最多能接收50个字符
{
Recdata[datanumber++] = temp;
}
else
{
RXTXflag = 3; //进入发送状态
}
if(datanumber == 50)
{
RXTXflag = 3;
}
temp = 0;
LED2=1; //接收状态指示
}
}
if(RXTXflag == 3) //发送状态
{
UartTX_Send_String("send:",5);
LED2 = 1; //关LED2
LED1 = 0; //发送状态指示
U0CSR &= ~0x40; //不能收数
UartTX_Send_String(Recdata,datanumber);
UartTX_Send_String("\n",1);
U0CSR |= 0x40; //允许接收
RXTXflag = 1; //恢复到接收状态
datanumber = 0; //指针归0
LED1 = 1; //关发送指示
memset(Recdata, 0, sizeof(Recdata));
}
}
}
#endif
zigbee基础应用(五)uart串口通信相关推荐
- UART串口通信浅谈之(一)--基础概述
通信按照传统的理解就是信息的传输与交换.UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用 ...
- NXP(I.MX6uLL) UART串口通信原理————这个未复习
参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...
- 基于FPGA的UART串口通信实验(VHDL语言实现)
一.前言: 最近在做UART串口通信的相关实验时,在网上查了很多资料,发现网上的大部分文章只注重理论,不注重代码,很多代码有错误不说,而且难以理解.故在完成此实验后,起了写一篇博客的心思,以供有想做相 ...
- 【蓝桥杯】单片机学习(7)——UART串口通信
UART串口通信 一.基础知识介绍 1.通信方式的分类 2.RS232通信接口 3.UART模块介绍 (1)串口控制寄存器SCON(可位寻址) (2)电源控制寄存器PCON(不可位寻址) (3)辅助寄 ...
- 【FPGA练习】(一): UART串口通信实验
由于之前学习FPGA的过程中,没有做一个良好的记录,以及已学知识的扩展,所以从今天开始每一个实验例程和扩展应用,都要做文档记录.本实验,是基于正点原子达芬奇xc7a35tfgg484-2开发板.开发板 ...
- 【FPGA】UART串口通信
目录 前言 一丶通信方式 1.串行通信 2.并行通信 二丶UART 串口通信 三丶模块设计 四丶发送模块 1.代码 2.仿真 五丶接收模块 1.代码 2.仿真 六丶顶层模块 1.代码 2.模块原理图 ...
- Android 模拟Uart 串口通信
下载串口工具 1.下载模拟串口工具:模拟串口工具 模拟串口工具用于生成模拟的两个串口,而不需要真实的物理串口. 2.下载串口调试工具:串口调试工具 串口调试工具用于直接通过串口发送数据 我这里有整合过 ...
- 【自学51单片机】11 -- UART串口通信
文章目录 1.串行通信的初步认识 2.USB转串口通信 3.UART串口通信的基本应用 3.1 通信的三种基本类型 3.2 UARM模块介绍 3.3编写UART串口步骤及程序 4.串口调试助手 5.通 ...
- 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7
1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...
最新文章
- sqlmap使用_sqlmap从入门到精通第四章47使用EW代理导出和导入MSSQL数据
- java arrays.sort() c_正面刚算法-Java中Arrays.sort()(一)
- 刷题两个月,从入门到字节offer,这是我的模板 | GitHub 1.2k星
- 近100年来全球20家顶尖公司成功原因揭秘
- centos7如何安装cloud-init
- [转载] JAVA环境变量配置
- html5 iframe 属性,html中关于iframe的allowTransparency属性的详解
- 千万数据去重_如何在 1 秒内做到大数据精准去重?
- Access to the path Library\UnityAssemblies\UnityEngine.xml is denied.
- 阶段3 3.SpringMVC·_05.文件上传_6 文件上传之跨服务器上传代码
- 【好文翻译】10个免费的压力测试工具(Web)
- 世界名着100部简介
- iOS录音及播放全解
- 3dmax电脑配置要求(3dmax需要什么样的笔记本配置?)
- [项目管理] BOT运作模式
- 【计算机视觉】简述对MSAA(多尺度注意力融合)的理解
- 数据分析报告的通用结构
- 【降维打击】希尔伯特曲线
- plupload插件的错误SCRIPT601
- HDU 4069 Squiggly Sudoku DLX 精确覆盖
热门文章
- 剪映专业版 1.2.0 - 一款全能好用的视频编辑工具
- 2022年国家高新企业认定申报最全问答-财务数据篇
- linux-使用screen后台运行命令,防止断网导致异常退出,命令没运行完成
- 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
- jupyter查看python包
- PHP高级计算器的过程,PHP基于堆栈实现的高级计算器功能示例
- 814 Div2 C
- 32java访问(http):国家气象局 免费接口
- Nginx+Tomcat 搭建负载均衡、动静分离(tomcat多实例)
- 00截断上传绕过_上传绕过总结