|
|
1黑幣
const u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; //發(fā)送地址
const u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01};
u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len)
{
u8 status,u8_ctr;
NRF24L01_CSN = 0; //使能SPI傳輸
status = SPI2_ReadWriteByte(reg);//發(fā)送寄存器值(位置),并讀取狀態(tài)值
for(u8_ctr=0; u8_ctr<len; u8_ctr++)SPI2_ReadWriteByte(*pBuf++); //寫入數(shù)據(jù)
NRF24L01_CSN = 1; //關(guān)閉SPI傳輸
return status; //返回讀到的狀態(tài)值
}
void NRF24L01_TX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);//寫TX節(jié)點(diǎn)地址
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); //設(shè)置TX節(jié)點(diǎn)地址,主要為了使能ACK
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自動應(yīng)答
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//設(shè)置自動重發(fā)間隔時(shí)間:500us + 86us;最大自動重發(fā)次數(shù):10次
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //設(shè)置RF通道為40
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //設(shè)置TX發(fā)射參數(shù),0db增益,2Mbps,低噪聲增益開啟
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的參數(shù);PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷
NRF24L01_CE=1;//CE為高,10us后啟動發(fā)送
}
不能理解這代碼里面紅色注釋的數(shù)組,這個(gè)數(shù)組名本來就表示數(shù)組首地址也屬于一個(gè)指針,為什么在TX_Mode函數(shù)中(u8*)TX_ADDRESS還要強(qiáng)制轉(zhuǎn)換類型呢?不能直接用TX_ADDRESS嗎?
|
|