資源簡介
用DSP控制nrf24L01的c程序,主要是針對ADI公司的bf512芯片
代碼片段和文件信息
#include?
#include?
#include?
#include?“PLL.h“
#include?“LED.h“
#include?“Key.h“
#include?“nRF24L01.h“
//****************************?NRF24L01*********************//
#define?nRF_TX_ADDR_WIDTH 5??? //?x?uints?TX?address?width
#define?nRF_RX_ADDR_WIDTH???5??? //?x?uints?RX?address?width
#define?nRF_TX_PLOAD_WIDTH??5?? //?x?uints?TX?payload
#define?nRF_RX_PLOAD_WIDTH??5?? //?x?uints?TX?payload
unsigned?char?nRF_TX_ADDRESS[nRF_TX_ADDR_WIDTH]?=?{0x340x430x100x100x01}; //要發(fā)送數(shù)據(jù)的目標(biāo)地址
unsigned?char?nRF_RX_ADDRESS[nRF_RX_ADDR_WIDTH]?=?{0x340x430x100x100x01}; //需要接收數(shù)據(jù)的目標(biāo)地址
unsigned?char?nRF_tx_buf[nRF_TX_PLOAD_WIDTH]?=?{0};
unsigned?char?nRF_rx_buf[nRF_RX_PLOAD_WIDTH]?=?{0};
void?Start_nRF24L01(void)
{
unsigned?char?status?=?0x00status2?=?0vali?=?1;
SetLEDs(7);
Init_Interrupt_nRF24L01();
status?=?Read_Reg_nRF24L01(nRF_STATUS);
Write_Reg_nRF24L01(nRF_WRITE_REG?+?nRF_STATUSstatus);
nRF_tx_buf[0]?=?6;
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
SetRX_Mode();
while(1)
{
if(*pPORTFIO?&?KEY1)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO?&?KEY1)
{
// SetLEDs(1);
nRF_tx_buf[0]?=?1;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO?&?KEY1);
SetRX_Mode();
}
}
else?if(*pPORTFIO?&?KEY2)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO?&?KEY2)
{
// SetLEDs(2);
nRF_tx_buf[0]?=?2;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO?&?KEY2);
SetRX_Mode();
}
}
else?if(*pPORTFIO?&?KEY3)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO?&?KEY3)
{
// SetLEDs(3);
nRF_tx_buf[0]?=?3;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO?&?KEY3);
SetRX_Mode();
}
}
else?if(*pPORTFIO?&?KEY4)
{
Delayus_nRF24L01(10000);
if(*pPORTFIO?&?KEY4)
{
// SetLEDs(4);
nRF_tx_buf[0]?=?4;
// Flush_FIFO_nRF24L01(nRF_FLUSH_TX);
SetTX_Mode_nRF24L01(nRF_tx_bufnRF_TX_PLOAD_WIDTH);
while(*pPORTFIO?&?KEY4);
SetRX_Mode();
}
}/**/
// status?=?Write_Reg_nRF24L01(nRF_WRITE_REG?+?nRF_CONFIG++i);
status?=?Write_Buf_nRF24L01(nRF_WRITE_REG?+?nRF_TX_ADDRnRF_RX_ADDRESS5);
status2?=?Read_Buf_nRF24L01(nRF_TX_ADDRnRF_rx_buf5);
// val?=?Read_Reg_nRF24L01(nRF_CONFIG);
asm(“nop;“);
SetRX_Mode();
}
}
EX_INTERRUPT_HANDLER(PORTF_A_ISR)
{
unsigned?char?statusstatus2;
asm(“nop;“);
if(*pPORTFIO?&?nRF_IRQ)
{
*pPORTFIO_CLEAR? =?nRF_IRQ; //clear?interrupt?flag
status?=?Read_Reg_nRF24L01(nRF_STATUS);
Write_Reg_nRF24L01(nRF_WRITE_REG?+?nRF_STATUSstatus);//clear?the?interrupt?flag
status2?=?Read_Reg_nRF24L01(nRF_STATUS);
asm(“nop;“);
if(status?&?nRF_RX_DR)
{
Read_Buf_nRF24L01(nRF_RD_RX_PLOADnRF_rx_bufn
- 上一篇:MC34063升壓電路
- 下一篇:LCD1602時(shí)鐘可翻頁代碼
評論
共有 條評論