欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關于2.4G無線傳輸的一個函數對一個地址強制轉換不能理解
[打印本頁]
作者:
皮皮蝦不p
時間:
2021-4-25 16:30
標題:
關于2.4G無線傳輸的一個函數對一個地址強制轉換不能理解
const u8
TX_ADDRESS[TX_ADR_WIDTH]
={0x34,0x43,0x10,0x10,0x01}; //發送地址
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);//發送寄存器值(位置),并讀取狀態值
for(u8_ctr=0; u8_ctr<len; u8_ctr++)SPI2_ReadWriteByte(*pBuf++); //寫入數據
NRF24L01_CSN = 1; //關閉SPI傳輸
return status; //返回讀到的狀態值
}
void NRF24L01_TX_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,
(u8*)TX_ADDRESS
,TX_ADR_WIDTH);//寫TX節點地址
NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,
(u8*)RX_ADDRESS
,RX_ADR_WIDTH); //設置TX節點地址,主要為了使能ACK
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,0x01); //使能通道0的自動應答
NRF24L01_Write_Reg(NRF_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
NRF24L01_Write_Reg(NRF_WRITE_REG+SETUP_RETR,0x1a);//設置自動重發間隔時間:500us + 86us;最大自動重發次數:10次
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_CH,40); //設置RF通道為40
NRF24L01_Write_Reg(NRF_WRITE_REG+RF_SETUP,0x0f); //設置TX發射參數,0db增益,2Mbps,低噪聲增益開啟
NRF24L01_Write_Reg(NRF_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷
NRF24L01_CE=1;//CE為高,10us后啟動發送
}
不能理解這代碼里面紅色注釋的數組,這個數組名本來就表示數組首地址也屬于一個指針,為什么在TX_Mode函數中
(u8*)TX_ADDRESS
還要強制轉換類型呢?不能直接用
TX_ADDRESS
嗎?
作者:
lincheng15
時間:
2021-4-26 14:20
可以直接用TX_ADDRESS,只是編譯器編譯時會警告,有點編譯器則直接提示數據類型錯誤,無論是否強制轉換其實這里傳進去的只是一個首地址,函數內部取數據時會進行數據轉換
作者:
cjm82
時間:
2021-4-26 15:34
這個一般是避免報警或者報錯,比如常用的
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1