#include "Uart.h" #include "LED.h" #include "Clock.h" #include <string.h> #include <iocc2530.h> #define SIZE 101 uchar Buf = '\0'; //用来接收USART0接收/发送数据缓存 char UartState; //字符串是发送还是接收标志 uint count = 0; //Data数组的下标 char Data[SIZE]; //用来记录发送的字符串 char s[] = "--岑超升--何志辉--"; //程序一开始发送的字符串 void main(void) { InitLED(LED1); InitUart(USART0,11,216); //调用串口初始化函数 115200 UartState = RX; //串口0默认处于接收模式 SetLED(LED1,OFF); Init_Clock(); UartSendString(s); //程序一开始发送字符串 { if(UartState == RX) //接收状态 { if(Buf!='\0') { if(Buf!='#') //以'#'为结束符 { Data[count++]=Buf; //接收Buf到Data数组 } else { if(count>=(SIZE)) //如果超过发送数组的最大长度 { count = 0; //计数清0 memset(Data,'\0',SIZE); //清空接收缓冲区 } else UartState=TX; //进入发送状态 } Buf='\0'; //'\0'的asc码值是0 } } if(UartState == TX) //发送状态 { Data[count]='\r\n'; //添加换行 UartSendString(Data); //发送已记录的字符串 UartState = RX; //恢复到接收状态 count=0; //计数清0 memset(Data,'\0',SIZE); //清空接收缓冲区 } } } #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void) { URX0IF=0; //清中断标志 Buf=U0DBUF; //USART 0 接收/发送数据缓存 LED0_PRO=~LED0_PRO; //每发送一次,LED0翻转一次 }
时间: 2024-02-14 16:24:02 浏览: 230
uart.rar_renesas单片机_uart.h
这段代码是关于串口通信的,其中使用了CC2530芯片的USART0模块进行数据的发送和接收。程序一开始会发送一个字符串s,然后进入一个循环,不断接收USART0模块传来的数据,并将其存储到Data数组中,直到接收到结束符'#',然后将Data数组中的数据发送回去。发送完毕后,再次进入接收状态,循环不断。同时,每次接收到数据时,LED0会翻转一次。
阅读全文