📄 mac.c
字号:
#include "mac.h"
#include<stdlib.h>
extern volatile BYTE RxStatus;
extern volatile BYTE TxStatus;
__no_init TX_PACKET_STRUCT txData @ "PM0_XDATA";
void MacInit(void)
{
txData.srcAddress.lowaddress=SHORTADDRL;
txData.srcAddress.highaddress=SHORTADDRH;
txData.destpanid.low=PANIDL;
txData.destpanid.high=PANIDH;
txData.srcpanid.low=PANIDL;
txData.srcpanid.high=PANIDH;
txData.dsn=0;
}
BOOL SendFrame(UINT16 destAddress)
{
BOOL status = TRUE;
BYTE retries;
BYTE res;
txData.destAddress.lowaddress= destAddress&0x00FF;
txData.destAddress.highaddress=(destAddress>>8)&0x00ff;
txData.srcAddress.lowaddress=SHORTADDRL;
txData.srcAddress.highaddress=SHORTADDRH;
txData.destpanid.low=PANIDL;
txData.destpanid.high=PANIDH;
txData.srcpanid.low=PANIDL;
txData.srcpanid.high=PANIDH;
txData.dsn+=1;
txData.dsn%=100;
txData.fcf.low=1;
txData.fcf.high=0x88;
retries = RETRYNUM; //重试3次
txData.payloadLength = 0;
while(retries)
{
res = SendPacket(&txData);
if(res == FALSE)
{
retries--;
if(retries == 0)
{
status = FALSE;
}
}
else
{
retries = 0;
}
}
//ReceivePacket(&rxData1); //发完就跳到接收
//while(sppTxStatus == TX_IN_PROGRESS);//有TX_IN_PROGRESS,就一定会有RF中断发生,就会sppTxStatus变成TX_SUCCESSFUL的
return status;
}
BOOL ReceiveFrame(BYTE** receiveData, BYTE* length, WORD timeout)
{
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -