亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nrf24l01

?? nRF24L01代碼_51和STM32之間通信代碼
??
字號:
#include "stm32f10x_lib.h"
#include "NRF24l01.h"
#include "delay.h"
#include "spi.h"

	 
const u8 TX_ADDRESS[TX_ADR_WIDTH]={0xE7,0xE7,0xE7,0xE7,0xE7}; //發送地址
const u8 RX_ADDRESS[RX_ADR_WIDTH]={0xE7,0xE7,0xE7,0xE7,0xE7}; //發送地址							    
//初始化24L01的IO口
void NRF24L01_Init(void)
{
	Set_NRF24L01_CE;                                    //初始化時先拉高
    Set_NRF24L01_CSN;                                   //初始化時先拉高

	GPIO_SetBits(GPIOB,GPIO_Pin_12);

	SPI2_Init();                                       //初始化SPI
	Clr_NRF24L01_CE; 	                               //使能24L01
	Set_NRF24L01_CSN;                                  //SPI片選取消
}
//上電檢測NRF24L01是否在位
//寫5個數據然后再讀回來進行比較,相同時返回值:0,表示在位;否則返回1,表示不在位	
u8 NRF24L01_Check(void)
{
	u8 buf[5]={0XA5,0XA5,0XA5,0XA5,0XA5};
	u8 buf1[5];
	u8 i;   	 
	NRF24L01_Write_Buf(SPI_WRITE_REG+TX_ADDR,buf,5);//寫入5個字節的地址.	
	NRF24L01_Read_Buf(TX_ADDR,buf1,5);              //讀出寫入的地址  	
	for(i=0;i<5;i++)if(buf1[i]!=0XA5)break;					   
	if(i!=5)return 1;                               //NRF24L01不在位	
	return 0;		                                //NRF24L01在位
}	 	 
//通過SPI寫寄存器
u8 NRF24L01_Write_Reg(u8 regaddr,u8 data)
{
	u8 status;	
    Clr_NRF24L01_CSN;                    //使能SPI傳輸
  	status =SPI2_ReadWriteByte(regaddr); //發送寄存器號 
  	SPI2_ReadWriteByte(data);            //寫入寄存器的值
  	Set_NRF24L01_CSN;                    //禁止SPI傳輸	   
  	return(status);       		         //返回狀態值
}
//讀取SPI寄存器值 ,regaddr:要讀的寄存器
u8 NRF24L01_Read_Reg(u8 regaddr)
{
	u8 reg_val;	    
 	Clr_NRF24L01_CSN;                //使能SPI傳輸		
  	SPI2_ReadWriteByte(regaddr);     //發送寄存器號
  	reg_val=SPI2_ReadWriteByte(0XFF);//讀取寄存器內容
  	Set_NRF24L01_CSN;                //禁止SPI傳輸		    
  	return(reg_val);                 //返回狀態值
}	
//在指定位置讀出指定長度的數據
//*pBuf:數據指針
//返回值,此次讀到的狀態寄存器值 
u8 NRF24L01_Read_Buf(u8 regaddr,u8 *pBuf,u8 datalen)
{
	u8 status,u8_ctr;	       
  	Clr_NRF24L01_CSN;                     //使能SPI傳輸
  	status=SPI2_ReadWriteByte(regaddr);   //發送寄存器值(位置),并讀取狀態值   	   
 	for(u8_ctr=0;u8_ctr<datalen;u8_ctr++)pBuf[u8_ctr]=SPI2_ReadWriteByte(0XFF);//讀出數據
  	Set_NRF24L01_CSN;                     //關閉SPI傳輸
  	return status;                        //返回讀到的狀態值
}
//在指定位置寫指定長度的數據
//*pBuf:數據指針
//返回值,此次讀到的狀態寄存器值
u8 NRF24L01_Write_Buf(u8 regaddr, u8 *pBuf, u8 datalen)
{
	u8 status,u8_ctr;	    
 	Clr_NRF24L01_CSN;                                    //使能SPI傳輸
  	status = SPI2_ReadWriteByte(regaddr);                //發送寄存器值(位置),并讀取狀態值
  	for(u8_ctr=0; u8_ctr<datalen; u8_ctr++)SPI2_ReadWriteByte(*pBuf++); //寫入數據	 
  	Set_NRF24L01_CSN;                                    //關閉SPI傳輸
  	return status;                                       //返回讀到的狀態值
}				   

//啟動NRF24L01發送一次數據
//txbuf:待發送數據首地址
//返回值:0,接收完成;其他,錯誤代碼
u8 NRF24L01_RxPacket(u8 *rxbuf)
{
	u8 state;		    							      
	state=NRF24L01_Read_Reg(STATUS);                //讀取狀態寄存器的值    	 
	NRF24L01_Write_Reg(SPI_WRITE_REG+STATUS,state); //清除TX_DS或MAX_RT中斷標志
	if(state&RX_OK)                                 //接收到數據
	{
		NRF24L01_Read_Buf(RD_RX_PLOAD,rxbuf,RX_PLOAD_WIDTH);//讀取數據
		NRF24L01_Write_Reg(FLUSH_RX,0xff);          //清除RX FIFO寄存器 
		return 0; 
	}	   
	return 1;                                      //沒收到任何數據
}

//該函數初始化NRF24L01到RX模式
//設置RX地址,寫RX數據寬度,選擇RF頻道,波特率和LNA HCURR
//當CE變高后,即進入RX模式,并可以接收數據了		   
void RX_Mode(void)
{
	Clr_NRF24L01_CE;	  
  	NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH);//寫RX節點地址
	  
  	NRF24L01_Write_Reg(SPI_WRITE_REG+EN_AA,0);//0x01);    //使能通道0的自動應答    
  	NRF24L01_Write_Reg(SPI_WRITE_REG+EN_RXADDR,0x01);//使能通道0的接收地址  	 
  	NRF24L01_Write_Reg(SPI_WRITE_REG+RF_CH,40);	     //設置RF通信頻率		  
  	NRF24L01_Write_Reg(SPI_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//選擇通道0的有效數據寬度 	    
  	NRF24L01_Write_Reg(SPI_WRITE_REG+RF_SETUP,0x0f); //設置TX發射參數,0db增益,2Mbps,低噪聲增益開啟   
  	NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG, 0x0f);  //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式 
  	Set_NRF24L01_CE;                                //CE為高,進入接收模式 
}						 
//該函數初始化NRF24L01到TX模式
//設置TX地址,寫TX數據寬度,設置RX自動應答的地址,填充TX發送數據,選擇RF頻道,波特率和LNA HCURR
//PWR_UP,CRC使能
//當CE變高后,即進入RX模式,并可以接收數據了		   
//CE為高大于10us,則啟動發送.	 
void TX_Mode(void)
{														 
	Clr_NRF24L01_CE;	    
  	NRF24L01_Write_Buf(SPI_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);    //寫TX節點地址 
  	NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); //設置TX節點地址,主要為了使能ACK	  

  	NRF24L01_Write_Reg(SPI_WRITE_REG+EN_AA,0);//0x01);    //使能通道0的自動應答    
  	NRF24L01_Write_Reg(SPI_WRITE_REG+EN_RXADDR,0);//0x01);  //使能通道0的接收地址  
  	NRF24L01_Write_Reg(SPI_WRITE_REG+SETUP_RETR,0);//0x1a);//設置自動重發間隔時間:500us + 86us;最大自動重發次數:10次
  	NRF24L01_Write_Reg(SPI_WRITE_REG+RF_CH,40);       //設置RF通道為40
  	NRF24L01_Write_Reg(SPI_WRITE_REG+RF_SETUP,0x0f);  //設置TX發射參數,0db增益,2Mbps,低噪聲增益開啟   
  	
	//NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷
	Set_NRF24L01_CE;                                  //CE為高,10us后啟動發送
}
//啟動NRF24L01發送一次數據
//txbuf:待發送數據首地址
//返回值:發送完成狀況
void NRF24L01_TxPacket(u8 *txbuf)
{
 
  Clr_NRF24L01_CE;
  NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); 
  NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//寫數據到TX BUF  20個字節
  NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0e);
  Set_NRF24L01_CE;
}		  
//	u8 state;   
//	Clr_NRF24L01_CE;
//	NRF24L01_Write_Buf(SPI_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); 
//  	NRF24L01_Write_Buf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//寫數據到TX BUF  20個字節
// 	Set_NRF24L01_CE;                                     //啟動發送	   
//	while(READ_NRF24L01_IRQ!=0);                              //等待發送完成
//	state=NRF24L01_Read_Reg(STATUS);                     //讀取狀態寄存器的值	   
//	NRF24L01_Write_Reg(SPI_WRITE_REG+STATUS,state);      //清除TX_DS或MAX_RT中斷標志
//	if(state&MAX_TX)                                     //達到最大重發次數
//	{
//		NRF24L01_Write_Reg(FLUSH_TX,0xff);               //清除TX FIFO寄存器 
//		return MAX_TX; 
//	}
//	if(state&TX_OK)                                      //發送完成
//	{
//		return TX_OK;
//	}
//	return 0xff;                                         //其他原因發送失敗
//	//NRF24L01_Write_Reg(SPI_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的參數;PWR_UP,EN_CRC,16BIT_CRC,接收模式,開啟所有中斷

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区色| 最近中文字幕一区二区三区| 99精品视频一区| 国内精品视频一区二区三区八戒| 亚洲chinese男男1069| 亚洲精品乱码久久久久久久久| 国产精品国产自产拍在线| 国产精品乱人伦一区二区| 欧美国产1区2区| 国产精品乱码一区二区三区软件 | 国产在线视频不卡二| 亚洲国产日产av| 午夜精品视频在线观看| 石原莉奈一区二区三区在线观看| 日韩在线卡一卡二| 美女www一区二区| 国产成人综合精品三级| 成人综合婷婷国产精品久久免费| 国产成人免费视频网站| av电影在线观看不卡 | 亚洲乱码中文字幕| 亚洲免费av高清| 天堂成人国产精品一区| 久久成人精品无人区| 国产精品99久| 在线精品亚洲一区二区不卡| 欧美高清精品3d| 精品国产区一区| 一区二区中文视频| 亚洲图片欧美综合| 91丨九色丨国产丨porny| 成人av综合一区| 欧美体内she精高潮| 精品欧美久久久| 成人欧美一区二区三区1314 | 日日摸夜夜添夜夜添国产精品 | 成人永久看片免费视频天堂| 91尤物视频在线观看| 欧美久久久一区| 中文一区在线播放| 午夜久久久久久| 成人精品国产一区二区4080| 欧美日韩在线一区二区| 国产日韩欧美制服另类| 亚洲一二三区视频在线观看| 国产精品中文有码| 3d动漫精品啪啪一区二区竹菊| 国产欧美精品区一区二区三区| 亚洲图片有声小说| 成人性生交大片免费看视频在线 | 亚洲午夜精品网| 91精品免费在线| 中文字幕免费观看一区| 午夜视频一区二区| 成人av高清在线| 欧美一级日韩一级| 亚洲综合小说图片| 国产一区二区视频在线播放| 91精品欧美福利在线观看| 最新热久久免费视频| 国产黑丝在线一区二区三区| 欧美男女性生活在线直播观看| 中文字幕一区二区三中文字幕| 麻豆国产欧美一区二区三区| 欧美精选在线播放| 亚洲综合网站在线观看| 色香蕉成人二区免费| 国产精品久久久久久久浪潮网站 | 国产成人精品一区二区三区网站观看| 精品视频1区2区| 亚洲精品国产精华液| 99久久精品国产导航| 中文字幕精品一区| 成人午夜免费电影| 国产性做久久久久久| 国内精品免费**视频| 精品区一区二区| 看国产成人h片视频| 欧美一级日韩免费不卡| 五月天视频一区| 69p69国产精品| 男人的天堂亚洲一区| 欧美一级午夜免费电影| 久久精品国产999大香线蕉| 日韩视频123| 久久99在线观看| 性做久久久久久免费观看| 在线观看日韩电影| 亚洲成人av一区二区三区| 欧美日韩免费观看一区三区| 亚洲国产日韩精品| 91精品国产综合久久蜜臀| 日本人妖一区二区| 337p日本欧洲亚洲大胆精品 | 国产精品女同互慰在线看| 成人免费毛片aaaaa**| 中文字幕亚洲成人| 日本精品视频一区二区| 午夜精品久久久久久久久久久 | 国产一区二区伦理| 国产精品视频免费| 在线看国产一区| 老司机免费视频一区二区三区| 久久久精品国产99久久精品芒果 | 亚洲激情图片一区| 欧美日本免费一区二区三区| 极品少妇xxxx精品少妇偷拍| 欧美国产日本视频| 欧美日韩亚洲另类| 久草热8精品视频在线观看| 国产精品情趣视频| 9191精品国产综合久久久久久| 国产黄色精品网站| 伊人夜夜躁av伊人久久| 欧美电影免费观看高清完整版在线 | 男男视频亚洲欧美| 中文字幕第一区第二区| 在线视频欧美区| 国产在线精品视频| 亚洲国产精品一区二区久久| 久久九九久精品国产免费直播| 91福利在线观看| 国产精品一区二区男女羞羞无遮挡| 亚洲精品免费在线| 久久精品亚洲精品国产欧美kt∨| 在线看日本不卡| 国产v综合v亚洲欧| 日韩精品午夜视频| 亚洲欧美一区二区久久| 精品国内二区三区| 91精品黄色片免费大全| 色婷婷国产精品综合在线观看| 精品一区二区精品| 香蕉乱码成人久久天堂爱免费| 中文字幕av不卡| 精品国产露脸精彩对白| 欧美少妇性性性| 91国产福利在线| 99国产精品99久久久久久| 久久99久久99小草精品免视看| 亚洲午夜激情av| 一区二区三区国产精华| 国产精品嫩草影院av蜜臀| 2021久久国产精品不只是精品| 欧美日韩高清在线播放| 一本色道久久综合亚洲精品按摩| 国产91清纯白嫩初高中在线观看| 理论电影国产精品| 老色鬼精品视频在线观看播放| 性欧美疯狂xxxxbbbb| 亚洲一区二区三区视频在线播放 | 欧美性猛交xxxxxx富婆| 99精品久久久久久| 99精品一区二区三区| 99re亚洲国产精品| 成人av网站在线| 99久久伊人久久99| 9人人澡人人爽人人精品| 成人av网站大全| 色婷婷精品大视频在线蜜桃视频| 色呦呦国产精品| 在线观看视频一区| 在线成人免费视频| 51精品久久久久久久蜜臀| 91精品国产综合久久精品图片 | 久久99精品国产麻豆婷婷| 麻豆成人av在线| 国产伦精品一区二区三区免费迷| 国产一区二区三区免费观看| 国产激情一区二区三区| www.爱久久.com| 欧洲国产伦久久久久久久| 在线成人午夜影院| 久久综合狠狠综合久久综合88| 亚洲精品一区二区三区香蕉| 国产午夜亚洲精品午夜鲁丝片| 日韩美女视频19| 亚洲成人综合视频| 国产永久精品大片wwwapp| 不卡电影一区二区三区| 96av麻豆蜜桃一区二区| 欧美区一区二区三区| 久久亚区不卡日本| 亚洲欧美日本在线| 日韩激情一二三区| 国产大陆亚洲精品国产| 在线视频一区二区三| 日韩欧美的一区| 最新国产精品久久精品| 日韩经典一区二区| 99视频在线精品| 91精品国产综合久久久久久漫画 | 日本韩国精品在线| 欧美一二三四区在线| 日本一二三不卡| 日韩1区2区日韩1区2区| 成人av综合在线| 日韩欧美aaaaaa| 亚洲综合另类小说| 精品一区免费av|