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

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

?? uart.c

?? CS5532的驅動程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
				if(i&1) address++;
			}
			//If this page is complete the bit 7 of mode will be set and we programm the page
			if(mode&0x80)  //頁編程,并且選擇等待的方式
			{
				SPIWrite(msg_buffer[6]);	
				SPIWrite16(start_address);
				SPIWrite(0x00);
				//If we have no valid polling address switch to simple wait mode
				if(polling_address==0)
				{
					mode = (mode&(~0x70)) | 0x10;
				}
				//Different polling methods
				//Hard waiting
				if((mode&0x70) == 0x10)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x70) == 0x20)
				{
					do{
						//If we have an uneven byte read the
						//high byte			
						if(polling_address%2)
						{
							SPIWrite(msg_buffer[7]|(1<<3));
						}
						else
						{
							SPIWrite(msg_buffer[7]);
						}
						SPIWrite16(polling_address/2);
						tmp=SPIWrite(0x00);
					}while(tmp==msg_buffer[8]);
				}
				//RDY/BSY polling
				else if((mode&0x70) == 0x40)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
			}
		}
		num_bytes = 2;
		msg_buffer[0] = CMD_PROGRAM_FLASH_ISP;
	}
	//命令CMD_READ_FLASH_ISP
	else if(cmd==CMD_READ_FLASH_ISP)
	{
		LED_FLASH2;	
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		tmp = msg_buffer[3];
		
		for(i=0;i<block_size;i++)
		{
			//Select Low or High-Byte
			if(i&1)
			{
				SPIWrite(tmp|(1<<3));
			}
			else
			{
				SPIWrite(tmp);
			}
			
			SPIWrite16(address&0xFFFF);
			msg_buffer[i+2] = SPIWrite(0);
			//increment (word) address only when we have an uneven (byte) address
			if(i&1) address++;
		}
		
		num_bytes = block_size+3;
		msg_buffer[0] = CMD_READ_FLASH_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[block_size+2] = STATUS_CMD_OK;
	}
	//命令CMD_PROGRAM_EEPROM_ISP
	else if(cmd==CMD_PROGRAM_EEPROM_ISP)
	{
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		mode = msg_buffer[3];
		
		//Byte Mode
		if((mode&1) == 0)
		{		
			for(i=0;i<block_size;i++)
			{	
				LED_FLASH2;	
				SPIWrite(msg_buffer[5]);								
				SPIWrite16(address&0xFFFF);
				SPIWrite(msg_buffer[i+10]);
				
				//Check if we can do polling
				if((msg_buffer[i+10]!=msg_buffer[8])&&(msg_buffer[i+10]!=msg_buffer[9]))
				{
					polling_address = address&0xFFFF;
				}
				//If not switch the mode hard waiting
				else
				{
					mode = (mode&(~0x0E)) | 0x02;
				}
				
				//Different polling methods
				//Hard waiting
				if((mode&0x0E) == 0x02)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x0E) == 0x04)
				{
					do{
						SPIWrite(msg_buffer[7]);
						SPIWrite16(polling_address);
						tmp=SPIWrite(0x00);
					}while((tmp==msg_buffer[8])||(tmp==msg_buffer[9]));
				}
				//RDY/BSY polling
				else if((mode&0x0E) == 0x08)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
					//while(spi_transfer_32(0xF0000000)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
				
				//increment address
				address++;
			}			
		}
		//Page Mode
		else
		{
			
			for(i=0;i<block_size;i++)
			{
				LED_FLASH2;
				SPIWrite(msg_buffer[5]);
				SPIWrite16(address&0xFFFF);
				SPIWrite(msg_buffer[i+10]);
				//Check if we can do polling
				if((msg_buffer[i+10]!=msg_buffer[8])&&(msg_buffer[i+10]!=msg_buffer[9]))
				{
					polling_address = address&0xFFFF;
				}
				
				//increment (word) address only when we have an uneven (byte) address
				address++;
			}
			
			//If this page is complete the bit 7 of mode will be set and we programm the page
			if(mode&0x80)
			{
				SPIWrite(msg_buffer[6]);						
				SPIWrite16(start_address&0xFFFF);
				SPIWrite(0);
				
				//If we have no valid polling address switch to simple wait mode
				if(polling_address==0)
				{
					mode = (mode&(~0x70)) | 0x10;
				}
				
				//Different polling methods
				//Hard waiting
				if((mode&0x70) == 0x10)
				{
					msDelay(msg_buffer[4]);
				}
				//Data polling
				else if((mode&0x70) == 0x20)
				{
					do{
						//If we have an uneven byte read the
						//high byte			
						if(i&1)
						{
							SPIWrite(msg_buffer[7]|(1<<3));
						}
						else
						{
							SPIWrite(msg_buffer[7]);
						}
						SPIWrite16(polling_address);
						tmp=SPIWrite(0x00);
					}while(tmp==msg_buffer[8]);
				}
				//RDY/BSY polling
				else if((mode&0x70) == 0x40)
				{
					while(universalComm(0xF0,0x00,0x00,0x00)&1);
				}
				//If something was not correct with the given mode do
				//hard waiting. Should never reach this point
				else
				{
					msDelay(msg_buffer[4]);					
				}
			}
		}
		
		num_bytes = 2;
		msg_buffer[0] = CMD_PROGRAM_EEPROM_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
	}
	//命令CMD_READ_EEPROM_ISP
	else if(cmd==CMD_READ_EEPROM_ISP)
	{
		block_size = ((unsigned int)msg_buffer[1])<<8;
		block_size |= msg_buffer[2];
		tmp = msg_buffer[3];
		
		for(i=0;i<block_size;i++)
		{
			//Select Low or High-Byte
			SPIWrite(tmp);
			SPIWrite16(address&0xFFFF);
			msg_buffer[i+2] = SPIWrite(0);
			//increment address
			address++;
		}
		num_bytes = block_size+3;
		msg_buffer[0] = CMD_READ_EEPROM_ISP;
		msg_buffer[1] = STATUS_CMD_OK;
		msg_buffer[block_size+2] = STATUS_CMD_OK;
	}
	
	//命令CMD_PROGRAM_FUSE_ISP
	else if(cmd==CMD_PROGRAM_FUSE_ISP)
	{
		universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
		num_bytes = 3;
		msg_buffer[0] = CMD_PROGRAM_FUSE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[2] = STATUS_CMD_OK;
	}

	//命令CMD_READ_FUSE_ISP
	else if(cmd==CMD_READ_FUSE_ISP)
	{	
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_FUSE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_PROGRAM_LOCK_ISP
	else if(cmd==CMD_PROGRAM_LOCK_ISP)
	{
		universalComm(msg_buffer[1],msg_buffer[2],msg_buffer[3],msg_buffer[4]);
		
		num_bytes = 3;
		msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[2] = STATUS_CMD_OK;
	}
	//命令CMD_READ_LOCK_ISP
	else if(cmd==CMD_READ_LOCK_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_LOCK_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_READ_SIGNATURE_ISP
	else if(cmd==CMD_READ_SIGNATURE_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_SIGNATURE_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	
	//命令CMD_READ_OSCCAL_ISP
	else if(cmd==CMD_READ_OSCCAL_ISP)
	{
		tmp = SPIWrite(msg_buffer[2]);
		if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[3]);
		if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[4]);
		if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
		tmp = SPIWrite(msg_buffer[5]);
		if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
		num_bytes = 4;
		msg_buffer[0] = CMD_READ_OSCCAL_ISP;
		msg_buffer[1] = STATUS_CMD_OK;		
		msg_buffer[3] = STATUS_CMD_OK;
	}
	else
	{
		num_bytes = 1;
		msg_buffer[0] = STATUS_CMD_UNKNOWN;
	}
	//傳送緩沖區數據
	if(num_bytes>0)
	{		
		putChar(MESSAGE_START);
		checkSum=MESSAGE_START;
		putChar(seqNum);
		checkSum^=seqNum;
		tmp=(num_bytes&0xFF00)>>8;
		putChar(tmp);
		checkSum^=tmp;
		tmp=num_bytes&0x00FF;
		putChar(tmp);
		checkSum^=tmp;
		putChar(TOKEN);
		checkSum^=TOKEN;
		for(i=0;i<num_bytes;i++)
		{
			putChar(msg_buffer[i]);
			checkSum^=msg_buffer[i];
		}		
		putChar(checkSum);
		checkSum=0x00;		
	}

}    
*/


/**********************************************************************
functionName:void rx_pkg_process(void)
description:串口接收包處理
**********************************************************************/
void rx_pkg_process(void)
{
	uint16 i;
	uint08 cmd;
	
	cmd = uart_tx_buf[0];
	
	if(msg_end_flag)
	{
		msg_end_flag=0;
		
		for(i=0;i<uart_rx_counter;i++)
		{
			put_char(uart_rx_buf[i]);
		}
		/*switch(cmd)
		{
			case 0:
			{
				break;
			}
			default:
			{
				break;
			}
		}*/
	}
}

/**********************************************************************
functionName:void uart0_tx_isr(void)
description:串口發送中斷函數
**********************************************************************/
#pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
 	uart_tx_counter--;
 	if(uart_tx_counter)		//如果還沒有發送完成
 	{
 		UDR=uart_tx_buf[uart_tx_rd_ptr];
		uart_tx_rd_ptr++;
		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
 	}
 	else
 	{
 		UCSRB&=~BIT(TXCIE);		//發送結束中斷不使能
 		UART_TX_LED;
 	}
}


/**********************************************************************
functionName:uint08 write_uart(uint08 uart_data)
description:寫串口數據
**********************************************************************/
uint08 put_char(uint08 uart_data)
{
	if(uart_tx_counter==UART_BUF_SIZE)
	{
		return(UART_FALSE);		//表示串口緩沖器溢出
	}
	uart_tx_buf[uart_tx_wr_ptr]=uart_data;
	uart_tx_wr_ptr++;
	if(uart_tx_wr_ptr>=UART_BUF_SIZE)uart_tx_wr_ptr=0;
	uart_tx_counter++;
	if(uart_tx_counter==1)
	{
		UDR=uart_tx_buf[uart_tx_rd_ptr];
		uart_tx_rd_ptr++;
		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
		UCSRB|=BIT(TXCIE);		//發送結束中斷使能
	}
	return(UART_TURE);
}


/**********************************************************************
functionName:putChars(BYTE *sentData)
description:通過串口發送數據字符串
**********************************************************************/
uint08 put_chars(uint08 *sentData)
{
 	while(*sentData)
 	{
 		if(put_char(*sentData)==UART_FALSE)
 		return(UART_FALSE);
 		sentData++;
 		
 	}
 	return(UART_TURE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久伊99综合婷婷久久伊| 欧美军同video69gay| 国产喷白浆一区二区三区| 麻豆精品久久久| 日韩欧美一区电影| 老司机一区二区| 26uuu亚洲| 国产精品88888| 国产精品久久毛片| 91蜜桃视频在线| 亚洲一二三区在线观看| 欧美卡1卡2卡| 国产一区二区三区在线观看精品 | 95精品视频在线| 亚洲精品你懂的| 欧美日韩和欧美的一区二区| 久久精品国产免费看久久精品| 久久一夜天堂av一区二区三区| 不卡视频在线观看| 亚洲激情网站免费观看| 6080日韩午夜伦伦午夜伦| 国产在线一区二区| 中文字幕一区在线观看视频| 欧美亚洲一区二区在线观看| 美女网站一区二区| 国产精品美日韩| 欧美日韩精品一区二区在线播放| 久久国产生活片100| 国产精品三级在线观看| 欧美日韩亚洲综合一区二区三区| 狠狠色狠狠色综合系列| 亚洲少妇30p| 日韩亚洲欧美在线观看| 成a人片国产精品| 亚洲成人av一区| 国产亚洲欧洲一区高清在线观看| 色一情一伦一子一伦一区| 蜜臀a∨国产成人精品| 国产精品护士白丝一区av| 欧美日韩免费一区二区三区视频| 激情综合色播激情啊| 亚洲欧美一区二区久久| 欧美大片国产精品| 在线看不卡av| 国产精品亚洲视频| 日本欧美一区二区三区乱码| 国产精品青草综合久久久久99| 欧美精品成人一区二区三区四区| 国产suv一区二区三区88区| 亚洲国产视频网站| 国产精品久久久久aaaa| 26uuu欧美| 欧美蜜桃一区二区三区| 不卡视频在线观看| 国产高清久久久久| 日本女人一区二区三区| 一区二区久久久| 国产精品久久一级| 久久久久久毛片| 欧美大黄免费观看| 欧美日韩高清一区二区三区| 91视视频在线观看入口直接观看www | 亚洲欧美另类小说| 精品日韩99亚洲| 欧美日本精品一区二区三区| 91成人免费在线视频| 大胆亚洲人体视频| 麻豆精品新av中文字幕| 日韩在线a电影| 亚洲午夜久久久久久久久电影院 | 色婷婷精品大视频在线蜜桃视频| 国产精品66部| 国产伦精品一区二区三区免费| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲成人www| 亚洲va国产天堂va久久en| 亚洲三级电影网站| 国产精品久久久久精k8| 国产精品对白交换视频| 国产精品―色哟哟| 国产精品久久久久久妇女6080 | 最新不卡av在线| 国产精品久久久久久福利一牛影视| 久久影院电视剧免费观看| 久久久精品tv| 国产精品久久久久国产精品日日| 国产精品婷婷午夜在线观看| 国产精品美女久久久久aⅴ| 国产精品乱码一区二三区小蝌蚪| 欧美经典三级视频一区二区三区| 久久久综合视频| 国产精品久久影院| 亚洲欧美国产77777| 亚洲自拍与偷拍| 日本中文字幕一区二区视频 | 精品欧美黑人一区二区三区| 精品日韩一区二区三区免费视频| 久久老女人爱爱| 中文字幕一区二区三区在线不卡| 成人免费在线视频| 一区二区欧美国产| 婷婷成人激情在线网| 久久精品国内一区二区三区| 国产精品亚洲专一区二区三区| 成人小视频免费在线观看| av在线不卡网| 欧美日韩国产一区二区三区地区| 3atv一区二区三区| 久久综合久久99| 亚洲欧美偷拍三级| 亚洲成va人在线观看| 久久99日本精品| av日韩在线网站| 欧美日韩免费一区二区三区| 久久综合色综合88| 亚洲色欲色欲www在线观看| 午夜免费久久看| 国产成人无遮挡在线视频| 色94色欧美sute亚洲13| 欧美成人三级在线| 中文字幕一区av| 免费观看日韩电影| 97超碰欧美中文字幕| 日韩精品中文字幕一区二区三区| 中文字幕精品一区二区精品绿巨人| 一区二区三区免费观看| 激情五月婷婷综合网| 色哦色哦哦色天天综合| 2023国产一二三区日本精品2022| 亚洲精品视频免费观看| 极品少妇一区二区| 欧美体内she精视频| 久久精品视频免费| 亚洲成人精品一区| 成人h版在线观看| 日韩欧美国产电影| 亚洲地区一二三色| 成人av影院在线| 欧美第一区第二区| 午夜久久久久久久久| 99re这里只有精品视频首页| 久久综合色天天久久综合图片| 亚洲高清三级视频| 色综合婷婷久久| 亚洲国产精品激情在线观看| 裸体在线国模精品偷拍| 欧洲精品在线观看| 国产精品久久免费看| 国产麻豆91精品| 欧美tickling网站挠脚心| 日日摸夜夜添夜夜添国产精品| 91蜜桃在线观看| 中文字幕一区二区视频| 粉嫩绯色av一区二区在线观看 | 欧美日韩欧美一区二区| 亚洲人妖av一区二区| 成人激情免费电影网址| 久久久精品免费免费| 免费观看在线色综合| 91精品久久久久久久91蜜桃| 日本va欧美va精品发布| 欧美精品一级二级三级| 亚洲中国最大av网站| 色综合久久久久综合99| 中文字幕一区二区三区视频| 成人福利电影精品一区二区在线观看| 26uuu成人网一区二区三区| 九色porny丨国产精品| 日韩精品一区二区三区四区视频| 丝袜亚洲另类丝袜在线| 欧美高清dvd| 五月婷婷激情综合| 欧美影视一区在线| 亚洲成人动漫一区| 4438亚洲最大| 久久99精品一区二区三区三区| 亚洲精品一区二区在线观看| 久久99热国产| 国产欧美一二三区| 成人高清伦理免费影院在线观看| 国产精品萝li| 99国产欧美久久久精品| 亚洲精品菠萝久久久久久久| 91黄色免费观看| 亚洲午夜在线电影| 欧美日韩国产天堂| 蜜臀av一区二区| 国产午夜精品美女毛片视频| 不卡电影免费在线播放一区| 亚洲日本乱码在线观看| 欧美日韩中文另类| 理论电影国产精品| 国产清纯在线一区二区www| 91一区在线观看| 亚洲一区二区三区四区五区黄| 欧美人成免费网站| 国产一区二区精品久久99| 国产精品久久久久三级| 欧美三级日韩在线| 九九九久久久精品|