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

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

?? nrf24l01.c

?? nRF24L01開發指導
?? C
?? 第 1 頁 / 共 3 頁
字號:
unsigned char nrf24l01_get_arc_cnt()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_OBSERVE_TX, &data, 1);
	
	return (data & nrf24l01_OBSERVE_TX_ARC_CNT);
}

//returns true if auto-ack is enabled on the pipe that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	specified.  If an invalid address (greater than five) is supplied, the function
//  returns false.
bool nrf24l01_aa_enabled(unsigned char rxpipenum)
{
	unsigned char data;
	
	if(rxpipenum > 5)
		return false;
		
	nrf24l01_read_register(nrf24l01_EN_AA, &data, 1);
	
	return (data & (0x01 << rxpipenum));
}

//enables auto-ack is enabled on the pipe that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	does nothing.
void nrf24l01_aa_enable(unsigned char rxpipenum)
{
	unsigned char data;
	
	if(rxpipenum > 5)
		return;
		
	nrf24l01_read_register(nrf24l01_EN_AA, &data, 1);
	
	if((data & (0x01 << rxpipenum)) != 0)
		return;
	
	data |= 0x01 << rxpipenum;
		
	nrf24l01_write_register(nrf24l01_EN_AA, &data, 1);
}

//disables auto-ack is enabled on the pipe that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	does nothing.
void nrf24l01_aa_disable(unsigned char rxpipenum)
{
	unsigned char data;
	
	if(rxpipenum > 5)
		return;
		
	nrf24l01_read_register(nrf24l01_EN_AA, &data, 1);
	
	if((data & (0x01 << rxpipenum)) == 0)
		return;
	
	data &= ~(0x01 << rxpipenum);
		
	nrf24l01_write_register(nrf24l01_EN_AA, &data, 1);
}

//returns true if the pipe is enabled that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	specified.  If an invalid address (greater than five) is supplied, the function
//  returns false.
bool nrf24l01_rx_pipe_enabled(unsigned char rxpipenum)
{
	unsigned char data;
	
	if((rxpipenum > 5))
		return false;
		
	nrf24l01_read_register(nrf24l01_EN_RXADDR, &data, 1);
	
	return (data & (0x01 << rxpipenum));
}

//enables the pipe that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	specified.  If an invalid address (greater than five) is supplied, the function
//  does nothing.
void nrf24l01_rx_pipe_enable(unsigned char rxpipenum)
{
	unsigned char data;
	
	if(rxpipenum > 5)
		return;
		
	nrf24l01_read_register(nrf24l01_EN_RXADDR, &data, 1);
	
	if((data & (0x01 << rxpipenum)) != 0)
		return;
	
	data |= 0x01 << rxpipenum;
		
	nrf24l01_write_register(nrf24l01_EN_RXADDR, &data, 1);
}

//disables the pipe that is offset by rxpipenum
//unsigned char rxpipenum is the pipe number (zero to five) whose address is being
//	specified.  If an invalid address (greater than five) is supplied, the function
//  does nothing.
void nrf24l01_rx_pipe_disable(unsigned char rxpipenum)
{
	unsigned char data;
	
	if(rxpipenum > 5)
		return;
		
	nrf24l01_read_register(nrf24l01_EN_RXADDR, &data, 1);
	
	if((data & (0x01 << rxpipenum)) == 0)
		return;
	
	data &= ~(0x01 << rxpipenum);
		
	nrf24l01_write_register(nrf24l01_EN_RXADDR, &data, 1);
}

//returns the status of the CD register (true if carrier detect [CD] is
//  active, false if not)
bool nrf24l01_cd_active()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_CD, &data, 1);
	
	return data;
}

//returns the value of the FIFO_STATUS register
unsigned char nrf24l01_get_fifo_status()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return data;
}

//return the value of the status register
unsigned char nrf24l01_get_status()
{
	return nrf24l01_nop();
}

//returns true if TX_REUSE bit in FIFO_STATUS register is set, false otherwise
bool nrf24l01_fifo_tx_reuse()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return (bool)(data & nrf24l01_FIFO_STATUS_TX_REUSE);
}

//returns true if TX_FULL bit in FIFO_STATUS register is set, false otherwise
bool nrf24l01_fifo_tx_full()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return (bool)(data & nrf24l01_FIFO_STATUS_TX_FULL);
}

//returns true if TX_EMPTY bit in FIFO_STATUS register is set, false otherwise
bool nrf24l01_fifo_tx_empty()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return (bool)(data & nrf24l01_FIFO_STATUS_TX_EMPTY);
}

//returns true if RX_FULL bit in FIFO_STATUS register is set, false otherwise
bool nrf24l01_fifo_rx_full()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return (bool)(data & nrf24l01_FIFO_STATUS_RX_FULL);
}

//returns true if RX_EMPTYE bit in FIFO_STATUS register is set, false otherwise
bool nrf24l01_fifo_rx_empty()
{
	unsigned char data;
	
	nrf24l01_read_register(nrf24l01_FIFO_STATUS, &data, 1);
	
	return (bool)(data & nrf24l01_FIFO_STATUS_RX_EMPTY);
}

//returns true if IRQ pin is low, false otherwise
bool nrf24l01_irq_pin_active()
{
	if((nrf24l01_IRQ_IOREGISTER & nrf24l01_IRQ_PINMASK) != 0)
		return false;
	else
		return true;
}

//returns true if RX_DR interrupt is active, false otherwise
bool nrf24l01_irq_rx_dr_active()
{
	return (nrf24l01_get_status() & nrf24l01_STATUS_RX_DR);
}

//returns true if TX_DS interrupt is active, false otherwise
bool nrf24l01_irq_tx_ds_active()
{
	return (nrf24l01_get_status() & nrf24l01_STATUS_TX_DS);
}

//returns true if MAX_RT interrupt is active, false otherwise
bool nrf24l01_irq_max_rt_active()
{
	return (nrf24l01_get_status() & nrf24l01_STATUS_MAX_RT);
}

//clear all interrupts in the status register
void nrf24l01_irq_clear_all()
{
	unsigned char data = nrf24l01_STATUS_RX_DR | nrf24l01_STATUS_TX_DS | nrf24l01_STATUS_MAX_RT;
	
	nrf24l01_write_register(nrf24l01_STATUS, &data, 1); 
}

//clears only the RX_DR interrupt
void nrf24l01_irq_clear_rx_dr()
{
	unsigned char data = nrf24l01_STATUS_RX_DR;
	
	nrf24l01_write_register(nrf24l01_STATUS, &data, 1); 
}

//clears only the TX_DS interrupt
void nrf24l01_irq_clear_tx_ds()
{
	unsigned char data = nrf24l01_STATUS_TX_DS;
	
	nrf24l01_write_register(nrf24l01_STATUS, &data, 1); 
}

//clears only the MAX_RT interrupt
void nrf24l01_irq_clear_max_rt()
{
	unsigned char data = nrf24l01_STATUS_MAX_RT;
	
	nrf24l01_write_register(nrf24l01_STATUS, &data, 1); 
}

//returns the current pipe in the 24L01's STATUS register
unsigned char nrf24l01_get_rx_pipe()
{
	return nrf24l01_get_rx_pipe_from_status(nrf24l01_get_status());
}

unsigned char nrf24l01_get_rx_pipe_from_status(unsigned char status)
{
	return ((status & 0xE) >> 1);
}

//flush both fifos and clear interrupts
void nrf24l01_clear_flush()
{
	nrf24l01_flush_rx();
	nrf24l01_flush_tx();
	nrf24l01_irq_clear_all();
}

//unsigned char * data must be at least 35 bytes long
void nrf24l01_get_all_registers(unsigned char * data)
{
	unsigned int outer;
	unsigned int inner;
	unsigned int dataloc = 0;
	unsigned char buffer[5];
	
	for(outer = 0; outer <= 0x17; outer++)
	{
		nrf24l01_read_register(outer, buffer, 5);
		
		for(inner = 0; inner < 5; inner++)
		{
			if(inner >= 1 && (outer != 0x0A && outer != 0x0B && outer != 0x10))
				break;
				
			data[dataloc] = buffer[inner];
			dataloc++;
		}
	}
}

//low-level spi send function for library use
//the user should not call this function directly, but rather use one of the 8 SPI data instructions
unsigned char nrf24l01_execute_command(unsigned char instruction, unsigned char * data, unsigned int len, bool copydata)
{
	unsigned char status;
	
	nrf24l01_clear_csn();

	status = instruction;
	nrf24l01_spi_send_read(&status, 1, true);
	nrf24l01_spi_send_read(data, len, copydata);
	
	nrf24l01_set_csn();		

	return status;
}

//low-level spi send function for library use
//the user should not call this function directly, but rather use one of the 8 SPI data instructions
void nrf24l01_spi_send_read(unsigned char * data, unsigned int len, bool copydata)
{
	unsigned int count;
	unsigned char tempbyte;

	for(count = 0; count < len; count++)
	{
		if(copydata != false)
			data[count] = spi_send_read_byte(data[count]);
		else
		{
			tempbyte = data[count];
			spi_send_read_byte(tempbyte);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕免费观看一区| 国产99久久久精品| eeuss鲁片一区二区三区| 精品视频999| 中文字幕一区二区视频| 久久99精品久久久久久动态图 | 精品理论电影在线观看| 亚洲视频小说图片| 成人av在线电影| 久久久精品欧美丰满| 日本在线不卡视频| 欧美天堂亚洲电影院在线播放| 国产偷国产偷精品高清尤物| 蜜桃av一区二区| 91精品视频网| 亚洲va国产天堂va久久en| 色狠狠av一区二区三区| 欧美国产日韩一二三区| 国产美女娇喘av呻吟久久| 日韩网站在线看片你懂的| 国内成人自拍视频| 91精品国产91热久久久做人人| 欧美色视频一区| 久久久久久麻豆| 久久成人久久爱| 日韩午夜激情免费电影| 麻豆专区一区二区三区四区五区| 欧美三级视频在线| 亚洲国产成人91porn| 在线观看日韩电影| 偷拍与自拍一区| 91精品国产入口| 精品一区二区日韩| 久久老女人爱爱| 国产伦理精品不卡| 中文成人综合网| 91免费视频网| 亚洲成人av电影| 欧美一区二区久久| 国产一区二区三区四| 国产亚洲欧美日韩在线一区| 成人免费观看男女羞羞视频| 国产精品成人免费| 99re视频精品| 亚洲成人三级小说| 欧美成人aa大片| 国产69精品久久99不卡| 亚洲特黄一级片| 欧美美女bb生活片| 狠狠狠色丁香婷婷综合激情| 中文字幕精品一区| 欧美在线免费视屏| 裸体歌舞表演一区二区| 国产精品久久久久久久久免费桃花| 99国产精品久久久久久久久久久 | 欧美高清性hdvideosex| 久久国产麻豆精品| 成人欧美一区二区三区白人| 欧美日韩黄色影视| 国产伦理精品不卡| 亚洲一区二区三区美女| 日韩欧美激情一区| 99免费精品视频| 美女一区二区久久| 亚洲天堂成人在线观看| 日韩欧美一二三| 91婷婷韩国欧美一区二区| 男男视频亚洲欧美| 亚洲欧洲日产国码二区| 欧美一区二区三区四区久久| 成人午夜私人影院| 麻豆精品新av中文字幕| 亚洲欧美经典视频| 久久亚洲免费视频| 欧美亚日韩国产aⅴ精品中极品| 九九精品一区二区| 夜夜嗨av一区二区三区网页| 久久女同互慰一区二区三区| 欧洲av在线精品| 国产精品一二二区| 喷白浆一区二区| 亚洲午夜在线视频| 国产亚洲欧美激情| 精品美女一区二区| 欧美日韩精品一二三区| 9久草视频在线视频精品| 韩国女主播一区| 香蕉久久夜色精品国产使用方法 | 国产尤物一区二区在线| 亚洲国产美女搞黄色| 日本一二三不卡| 精品99999| 88在线观看91蜜桃国自产| 色婷婷久久久亚洲一区二区三区| 国产精品一区二区三区网站| 日韩在线a电影| 亚洲成人av一区二区三区| 一区二区三区国产精华| 国产精品第五页| 日本一区二区三区国色天香| 久久蜜臀精品av| 欧美va亚洲va国产综合| 欧美一级午夜免费电影| 欧美精品xxxxbbbb| 欧美少妇xxx| 色婷婷精品大在线视频| 99久久婷婷国产精品综合| 成人影视亚洲图片在线| 国产馆精品极品| 国产盗摄女厕一区二区三区| 国产综合色视频| 国产福利不卡视频| 风间由美一区二区av101| 国产成人无遮挡在线视频| 国产精品系列在线播放| 国产成人精品网址| 成人av在线观| 色噜噜久久综合| 欧美日韩中字一区| 欧美电影一区二区| 精品久久久久久亚洲综合网| 欧美videossexotv100| 久久精品在这里| 国产精品久久久久婷婷二区次| 欧美激情艳妇裸体舞| 亚洲柠檬福利资源导航| 亚洲三级小视频| 亚洲第一成人在线| 老司机午夜精品| 成人免费av网站| 在线免费观看不卡av| 欧美日韩国产免费| 亚洲精品在线免费观看视频| 久久久91精品国产一区二区精品| 中文字幕第一页久久| 亚洲码国产岛国毛片在线| 亚洲综合一二三区| 另类中文字幕网| 91免费看片在线观看| 91精品国产91久久久久久最新毛片| 精品电影一区二区三区| 国产精品久久久一区麻豆最新章节| 亚洲欧美激情视频在线观看一区二区三区| 亚洲欧美电影一区二区| 日韩和欧美一区二区| 成人一区二区视频| 欧美日韩国产一级片| 精品国产乱码久久久久久久久 | 色噜噜狠狠色综合欧洲selulu| 欧美日韩一区二区三区在线 | 国产一区二区在线观看免费| 播五月开心婷婷综合| 欧美美女激情18p| 中国av一区二区三区| 亚洲成人动漫精品| 成人综合在线观看| 欧美一卡二卡三卡四卡| 亚洲欧洲一区二区在线播放| 日韩成人午夜精品| 99久免费精品视频在线观看| 日韩一级完整毛片| 一区二区三区欧美| 国产精品99久久久久久久女警 | 成人午夜视频免费看| 欧美日韩另类国产亚洲欧美一级| 国产婷婷色一区二区三区四区 | 久久久精品日韩欧美| 亚瑟在线精品视频| 一本色道久久综合狠狠躁的推荐| 日韩精品资源二区在线| 亚洲va中文字幕| 91精品福利视频| 国产色婷婷亚洲99精品小说| 日本欧美加勒比视频| 91福利精品视频| 中文字幕一区二区三区不卡| 韩国午夜理伦三级不卡影院| 欧美日韩国产a| 亚洲一区二区精品久久av| 成人在线视频首页| 国产三级欧美三级日产三级99| 美国毛片一区二区三区| 欧美日韩视频在线观看一区二区三区| 国产精品久久久久一区二区三区| 国内精品久久久久影院一蜜桃| 日韩一区二区精品在线观看| 亚洲成人1区2区| 欧美电影在哪看比较好| 亚洲成av人片在www色猫咪| 一本到一区二区三区| 亚洲免费观看在线视频| www.爱久久.com| 1区2区3区精品视频| 成人动漫一区二区| 成人欧美一区二区三区1314| 99精品欧美一区二区三区综合在线| 久久久久久久久99精品| 国产福利精品导航| 亚洲欧洲99久久| 91在线观看下载|