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 + -
显示快捷键?