rf_blink_led.c
来自「CC2420+PIC单片机基础实验代码、CC2420无线收发实验代码」· C语言 代码 · 共 141 行
C
141 行
#include "include.h"
#define PAYLOAD_SIZE 10
#define RF_CHANNEL 26
#define TX_PERIOD 50 // Packet sent each n'th cycle
#define FILL_BYTE 0xEE
static BYTE ledPeriod= 0x80; // LED blinking frequency
static UINT16 nRecv = 0; // Counting received packets
void ledFlash(UINT16 duration, UINT16 period);
extern volatile BASIC_RF_SETTINGS rfSettings;
extern void halWait(UINT16 timeout);
extern void basicRfInit(BASIC_RF_RX_INFO *pRRI, UINT8 channel, WORD panId, WORD myAddr);
extern void basicRfReceiveOn(void);
extern BOOL basicRfSendPacket(BASIC_RF_TX_INFO *pRTI);
extern void EUSART_Init();
extern void sent_ch(unsigned char d);
//-------------------------------------------------------------------------------------------------------
// Basic RF transmission and reception structures
BASIC_RF_RX_INFO rfRxInfo;
BASIC_RF_TX_INFO rfTxInfo;
BYTE pTxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
BYTE pRxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI) {
//用户自己定义接收
return pRRI;
} // basicRfReceivePacket
void port_init()
{
TRISA1=0;
TRISA2=0;
TRISA3=0;
TRISA5=0;
TRISD0=1;
TRISD1=1;
TRISD6=0;
TRISD7=0;
TRISB=0xFF;
TRISC0=0;
TRISC1=0;
TRISC2=0;
TRISC3=0;
TRISC4=1;
TRISC5=0;
YLED1=0;
YLED2=0;
ADCON1 = 0x0F;
}
void halSpiInit(void) {
// Initialize the SPI pins and directions
LATC3 = 1; // SCK
LATC5 = 1; // SDO
TRISC3 = 0; // SCK
TRISC4 = 1; // SDI
TRISC5 = 0; // SDO
// Initialize the SPI module
SSPSTAT = 0xc0;
SSPCON1 = 0x20;
SSPIF=0;
} // SpiInit
void ccp2_init()
{
IPEN=1;
GIEH=1;
GIEL=1;
CCP2IE=1;
CCP2IF=0;
CCP2IP=1;
CCP2CON = 0b00000101;
}
//-------------------------------------------------------------------------------------------------------
// int main (void)
//
// DESCRIPTION:
// Startup routine and main loop
//-------------------------------------------------------------------------------------------------------
void main (void) {
UINT8 n;
UINT32 iLoopCount;
// Initalize ports for communication with CC2420 and other peripheral units
port_init();
halSpiInit();
EUSART_Init();
ccp2_init();
// Wait for the user to select node address, and initialize for basic RF operation
halWait(1000);
basicRfInit(&rfRxInfo, RF_CHANNEL, 0x2420, 0x5678);
rfTxInfo.destAddr = 0x1234;
// Initalize common protocol parameters
rfTxInfo.length = PAYLOAD_SIZE;
rfTxInfo.ackRequest = 1;
rfTxInfo.pPayload = pTxBuffer;
rfRxInfo.pPayload = pRxBuffer;
for (n = 0; n < PAYLOAD_SIZE; n++) {
pTxBuffer[n] = n+0x10;
}
// Turn on RX mode
basicRfReceiveOn();
// The main loop:
while (TRUE)
{
YLED1=0;
YLED2=0;
if(!KEY1)
{
while(!KEY1);
YLED1=1;
pTxBuffer[0]=0x0f;
if(CCA)
{
basicRfSendPacket(&rfTxInfo);
}
}
if(!KEY2)
{
while(!KEY2);
YLED2=1;
pTxBuffer[0]=0xf0;
if(CCA)
{
basicRfSendPacket(&rfTxInfo);
}
}
halWait(5000);
}
} // main
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?