📄 main.c
字号:
#include "include.h"
extern BOOL nsduStatus;
//UINT8 PPP[8];
//UINT64 PT;
int main( void )
{
//int i;
PORT_INIT();
SPI_INIT();
InitClock();
time_sync_init();
Time_B0_init();
//Tx device
halWait(2000);
basicRfInit(RFCHANNEL, PANID, 0x1234);
basicRfReceiveOn();
//convert_time_format8(183803795,PPP);
//PT = convert_time_format64(PPP );
/* BYTE frameType=NWK_FCF_DATA;
BYTE discoverRoute=NWK_FCF_SUPPRESSROUTEDISCOVERY;
BOOL security=FALSE;
WORD nwkFrameControlField;
nwkFrameControlField = frameType;
nwkFrameControlField |= (NWK_FCF_PROTOCOLVERSION<<2);
nwkFrameControlField |= (discoverRoute<<6);
if(security)
{
nwkFrameControlField |= BM(NWK_FCF_SECURITY);
}
WORD destAddr=0x5678;
WORD srcAddr=0x1234;
BYTE radiusCounter=0x00;
BYTE dataSeqNumber=0x01;
UINT8 nsduLength=NWK_aMaxFramePayloadSize;
BYTE nsdu[NWK_aMaxFramePayloadSize];
BYTE txOption=MAC_TXOPTION_ACKTRANSMISSION;
gPHYTxFrameInfo.psduStatus = TRUE;
nsduStatus=TRUE;
gMACRxFrameInfo.ackReceived = FALSE;
gMACRxFrameInfo.frameControlField = 0x0000;
gMACRxFrameInfo.dataSeqNumber = 0x00;
gMACRxFrameInfo.panId = 0x0000;
gMACRxFrameInfo.destAddr = 0x0000;
gMACRxFrameInfo.srcAddr = 0x0000;
gMACRxFrameInfo.msduLength = 0;
for(i=0;i<MAC_aMaxFramePayloadSize;i++)
{
gMACRxFrameInfo.msdu[i] = 0x00;
}
gMACRxFrameInfo.frameCheckSeq = 0x0000;
gMACRxFrameInfo.msduStatus = FALSE;
//while(1)
// {
// while (nsduStatus) ;
// _NOP();
//
// while((P1IN&0xf0)==0xf0);
if(!(P1IN&BM(SW1)))
{
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x11;
}
}
if(!(P1IN&BM(SW2)))
{
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x22;
}
}
if(!(P1IN&BM(SW3)))
{
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x44;
}
}
if(!(P1IN&BM(SW4)))
{
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x88;
}
}
//for(int j=0;j<20;j++)*/
/* { for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x11;
}
NLDEDATA_request(nwkFrameControlField, destAddr, srcAddr, radiusCounter, dataSeqNumber, nsduLength, nsdu, txOption);
nsduStatus=TRUE;
halWait(65535);
halWait(65535);
halWait(65535);
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x22;
}
NLDEDATA_request(nwkFrameControlField, destAddr, srcAddr, radiusCounter, dataSeqNumber, nsduLength, nsdu, txOption);
halWait(65535);
halWait(65535);
halWait(65535);
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x44;
}
NLDEDATA_request(nwkFrameControlField, destAddr, srcAddr, radiusCounter, dataSeqNumber, nsduLength, nsdu, txOption);
halWait(65535);
halWait(65535);
halWait(65535);
for(i=0;i<nsduLength;i++)
{
nsdu[i] = 0x88;
}
NLDEDATA_request(nwkFrameControlField, destAddr, srcAddr, radiusCounter, dataSeqNumber, nsduLength, nsdu, txOption);
halWait(65535);
halWait(65535);
halWait(65535);*/
// }
// }
/*
//Rx device
halWait(1000);
basicRfInit(26, 0x2420, 0x5678);
basicRfReceiveOn();
*/
/* UINT8 x1,x2,x3,x4,x5;
x1=0;
x2=0;
x3=0;
x4=0;
x5=0;*/
gMACRxFrameInfo.ackReceived = FALSE;
gMACRxFrameInfo.frameControlField = 0x0000;
gMACRxFrameInfo.dataSeqNumber = 0x00;
gMACRxFrameInfo.panId = 0x0000;
gMACRxFrameInfo.destAddr = 0x0000;
gMACRxFrameInfo.srcAddr = 0x0000;
gMACRxFrameInfo.msduLength = 0;
/* for(i=0;i<MAC_aMaxFramePayloadSize;i++)
{
gMACRxFrameInfo.msdu[i] = 0x00;
}*/
gMACRxFrameInfo.frameCheckSeq = 0x0000;
gMACRxFrameInfo.msduStatus = FALSE;
Timeinfo.SendbeaconFLAG = TRUE;
Timeinfo.Sendbeacontime = 10000;
while(1)
{
while (!(Timeinfo.specialtime == Timeinfo.Sendbeacontime));
//Timeinfo.SendbeaconFLAG=FALSE;
Timeinfo.Sendbeacontime=Timeinfo.Sendbeacontime+100000;
_NOP();
Timeinfo.SendbeaconFLAG=TRUE;
FASTSPI_STROBE(CC2420_STXON);
BYTE frameType=NWK_FCF_DATA;
BYTE discoverRoute=NWK_FCF_SUPPRESSROUTEDISCOVERY;
BOOL security=FALSE;
WORD nwkFrameControlField;
nwkFrameControlField = frameType;
nwkFrameControlField |= (NWK_FCF_PROTOCOLVERSION<<2);
nwkFrameControlField |= (discoverRoute<<6);
if(security)
{
nwkFrameControlField |= BM(NWK_FCF_SECURITY);
}
WORD destAddr=0x5678;
WORD srcAddr=0x1234;
BYTE radiusCounter=0x00;
BYTE dataSeqNumber=0x00;
UINT8 nsduLength=NWK_aMaxFramePayloadSize;
BYTE nsdu[NWK_aMaxFramePayloadSize];
BYTE txOption=MAC_TXOPTION_GTSTRANSMISSION;
for (int i=0;i<nsduLength;i++)
nsdu[i]=0x11 ;//信标帧负载 可以定义特定任务
NLDEDATA_request(nwkFrameControlField, destAddr, srcAddr, radiusCounter, dataSeqNumber, nsduLength, nsdu, txOption);
// halWait(65553);
//////////////////////////////////////////////////
// DISABLE_GLOBAL_INT();
FASTSPI_STROBE(CC2420_SRXON);
FASTSPI_STROBE(CC2420_SFLUSHRX);
// while(!gMACRxFrameInfo.msduStatus);
// gMACRxFrameInfo.msduStatus = FALSE;
}
/* WORD framecontrolfield=(gMACRxFrameInfo.msdu[1] << 8) | gMACRxFrameInfo.msdu[0];
WORD destAddr=(gMACRxFrameInfo.msdu[3] << 8) | gMACRxFrameInfo.msdu[2];
WORD srcAddr=(gMACRxFrameInfo.msdu[5] << 8) | gMACRxFrameInfo.msdu[4];
BYTE radiusCounter=gMACRxFrameInfo.msdu[6];
BYTE dataSeqNumber=gMACRxFrameInfo.msdu[7];
UINT8 nsduLength=gMACRxFrameInfo.msduLength - NWK_aDataFrameOverheadSize;
BYTE nsdu[NWK_aMaxFramePayloadSize];
for(i=0;i<nsduLength;i++)
{
nsdu[i] = gMACRxFrameInfo.msdu[i+8];
}
for (int i=0;i<nsduLength;i++)
{
TXBUF0=nsdu[i];
while ((UTCTL0&0x01)==0);
}
for(i=0;i<nsduLength;i++)
{
if(nsdu[i] == 0x11) x1++;
else if(nsdu[i] == 0x22) x2++;
else if(nsdu[i] == 0x44) x3++;
else if(nsdu[i] == 0x88) x4++;
else x5++;
}
if(x1>0) P1OUT |= BM(LED1);
if(x2>0) P1OUT |= BM(LED2);
if(x3>0) P1OUT |= BM(LED3);
if(x4>0) P1OUT |= BM(LED4);
// if(x5>0) P1OUT |= BIT0+BIT1+BIT2+BIT3;
halWait(1000);
P1OUT &= 0xf0;
x1=0;
x2=0;
x3=0;
x4=0;
x5=0;*/
// P1OUT |= BIT0+BIT1+BIT2+BIT3;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -