MSP430X169无线串口客户端程序
/*
Name: 客户端无线发射器程序
Copyright: ShenZhen JinKe Electric Co,.LTD
Author: RenBang
Date: 23-04-06 17:02
Description:
*/
#include "MSP430x16x.h"
#include "Uart_Client.h"
#include "Global.h"
#include "string.h"
#include "stdio.h"
#include "string.h"
#define DeviceID 0x05 //设备码
#define Clinet_Transmit P3OUT=0x0C
#define Clinet_Receive P3OUT=0x04 //P3.1 CS=0 433.92MHZ,P3.2 PW_EN=1 Operation mode,P3.3=0 TX_EN receiver;
/*****************************************************/
/* 数据定义 */
/*****************************************************/
unsigned char flag0=0; //帧是否开始标志
unsigned char flag1=0; //地址匹配成功位
unsigned char uart_Client_Rbuf[UART_BUF_SIZE]; //接收缓冲区
unsigned char uart_Client_Tbuf[UART_BUF_SIZE]; //发送缓冲区
int uart_Client_RPos, //用于指示下一个存放接收数据的缓冲区位置
uart_Client_Tpos; // 标识 uart 下一个要发送的数据的位置
int uart_Client_Rnum, // 接收缓冲区缓存的数据数目(单位字符)
uart_Client_Tnum; // 发送缓冲区缓存的数据数目(单位字符)
unsigned char Data[UART_BUF_SIZE];
/*******************************************************/
//init the UART0 32k/9600baud,UART0 as transmition;
void init_UART0(void)
{
UCTL0 &= ~SWRST;
UCTL0 |=CHAR;//0X10;
UBR00 = 0x03;
UBR10 = 0x00;
UMCTL0 = 0x4A;
UTCTL0 = SSEL0;//0X10;
ME1 |= UTXE0+URXE0 ; //enable the UART0
IE1 |=URXIE0;
P3SEL|=BIT4+BIT5;
P3DIR|=BIT4;
}
//wireless Device#1 as transmition
void init_Wireless_Client()
{
init_UART0();
P3DIR|=0x0E;
Clinet_Receive; //P3.1 CS=0 433.92MHZ,P3.2 PW_EN=1 Operation mode,P3.3=0 TX_EN receiver;
}
#pragma vector = UART0RX_VECTOR //下位机先进行数据接收
__interrupt void Uart0rx_IRS(void)
{
int j=0;
if(flag0==0)
{
if(RXBUF0==0xFF)
{
flag0=1;
}
}
if(flag0==1)
{
if(RXBUF0==DeviceID) //设备码验证
{
flag1=1;
uart_Client_RPos=0;
}
}
if(flag0==1&&flag1==1)
{
uart_Client_Rbuf[uart_Client_RPos]=RXBUF0;
uart_Client_Rnum++; //接收数据计数器加1
uart_Client_RPos++; //移动接收缓冲区指针
if(uart_Client_Rbuf[uart_Client_RPos-1]=='V') //帧结束字符
{
flag0=0;
flag1=0; //帧 起始标志清除
for(;j<uart_Client_RPos-1;j++) Data[j]=uart_Client_Rbuf[j]; //转移接收到的数据
printf("%s\n",Data);
Clinet_Transmit; //设置为发送模式
delay(3000); //延时3m秒
IE1 &=~ URXIE0; //disable UTXIE0
IE1 |=UTXIE0; //enable UTXIE0
}//for
} //if
}//__interrupt
#pragma vector=UART0TX_VECTOR //接收到发送数据指令后客户机从接收模式转变为发送模式进行数据发送
__interrupt void Uart0tx_IRS()
{
uart_Client_Tnum=uart_Client_Tnum-1;
if (uart_Client_Tnum >=0)
{
TXBUF1 =uart_Client_Tbuf[uart_Client_Tpos ++];