MSP430中繼通訊協(xié)議
//===========================================================================//
//MSP430接收中繼端協(xié)議——徐方鑫//
//通訊協(xié)議格式為:16進(jìn)制發(fā)送//
//5309AAAAAAAAAAAA45//
//53為數(shù)據(jù)包打頭,字符's'//
//09為字符串長度,char類型//
//其后AAAAAA等為數(shù)據(jù)內(nèi)容//
//45為數(shù)據(jù)包結(jié)尾,字符'E'//
//===========================================================================//
#include"msp430x54x.h"
#include
#include
#include
#include"PIN_DEF.H"
#defineucharunsignedchar
#defineuintunsignedint
#defineFLL_FACTOR749//FLL_FACTOR:DCO倍頻系數(shù)
#defineDATA_BAG_ERROR_MAX0x5000//最大數(shù)據(jù)包長度,int類型,串口所用8位基本都支持
charevent;//待機(jī)模式事件
uintData_Bag_Length,Data_Length;//Data_Bag_Leangth接收數(shù)據(jù)包的長度
charRXBuffer[20];//接收緩存
//***************************************************************************//
////
//初始化主時鐘:MCLK=XT1×(FLL_FACTOR+1)//
////
//***************************************************************************//
voidInit_CLK(void)
{
WDTCTL=WDTPW+WDTHOLD;//關(guān)看門狗
P7SEL|=0x03;//端口選擇外部低頻晶振XT1
UCSCTL6&=~XT1OFF;//使能外部晶振
UCSCTL6|=XCAP_3;//設(shè)置內(nèi)部負(fù)載電容
UCSCTL3|=SELREF_2;//DCOref=REFO
UCSCTL4|=SELA_0;//ACLK=XT1
__bis_SR_register(SCG0);//關(guān)閉FLL控制回路
UCSCTL0=0x0000;//設(shè)置DCOx,MODx
UCSCTL1=DCORSEL_7;//設(shè)置DCO振蕩范圍
UCSCTL2=FLLD__1+FLL_FACTOR;//Fdco=(FLL_FACTOR+1)×FLLRef=(649+1)*32768=21.2992MHz
__bic_SR_register(SCG0);//打開FLL控制回路
__delay_cycles(1024000);
do
{
UCSCTL7&=~(XT2OFFG+XT1LFOFFG+XT1HFOFFG+DCOFFG);//清除XT2,XT1,DCO錯誤標(biāo)志
SFRIFG1 &= ~OFIFG