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

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

?? uartcomm.c

?? altera epxa1的例子程序
?? C
字號:
/*
* 	General UART IO functions (interrupt driven), these implement fputc and fgetc
* 	which enables printf to be available from the target. It is configured by default
*	for a baud rate of 38400, 8 bits per character, 1 stop bit, no parity, with no flow
*	control.
*
* 	Copyright (c) Altera Corporation 2000-2001.
*/

#include <stdio.h>
#include "stripe.h"
#include "uart00.h"
#include "uartcomm.h"
#include "int_ctrl00.h"


#define UART00_TYPE (volatile unsigned int*)

#define DIVISOR_FROM_BAUD(baud,clk) ((clk) /(16*(baud)))

int config_mode = 0; // This global varible is only used for project 1
		     // Though the implementation of this file differ a bit
		     // for revision control issues this same file is used 
		     // both project 1 and project 2
char tx_buffer[BUFF_SIZE];
char rx_buffer[BUFF_SIZE];
volatile int tx_head,tx_tail,rx_head,rx_tail;

void uart_init(void)
{
    /* setup the rx and tx circular buffers */
	
	rx_head=rx_tail=0;
	tx_head=tx_tail=0;

	irq_init();
     
	/* 
	 * configure the uart for 38400 baud, 8 data, 
	 * 1 stop, no parity
	 */

	*UART_MC(EXC_UART00_BASE) = UART_MC_CLS_CHARLEN_8;
	*UART_DIV_LO(EXC_UART00_BASE) = DIVISOR_FROM_BAUD(38400,EXC_AHB2_CLK_FREQUENCY)& 0xFF;
	*UART_DIV_HI(EXC_UART00_BASE) = (DIVISOR_FROM_BAUD(38400,EXC_AHB2_CLK_FREQUENCY)& 0xFF00) >> 8;

	/* Setup and clear FIFOs */
	*UART_FCR(EXC_UART00_BASE)=UART_FCR_RX_THR_1 | UART_FCR_TX_THR_2 | 
		UART_FCR_RC_MSK | UART_FCR_TC_MSK;
		
	/* Clear pending interrupt */
	*UART_IEC(EXC_UART00_BASE) = UART_IEC_RE_MSK | UART_IEC_TE_MSK;

	/* Enable receive & transmit interrupts */
	*UART_IES(EXC_UART00_BASE)=UART_IES_RE_MSK;
}


static void uart_tx_handler(void)
{
	int dummy;
	/* Read the status register to clear the interrupt */
	dummy=*UART_TSR(EXC_UART00_BASE);

	/* 
	 * Write data to the fifo until it either 
	 * fills up, or we run out of stuff in the
	 * tx buffer 
	 */
	
       
	while(((*UART_TSR(EXC_UART00_BASE) & UART_TSR_TX_LEVEL_MSK)<15)&&
	      (tx_head!=tx_tail))
	{
				
		/* transmit the next character */
		*UART_TD(EXC_UART00_BASE)=tx_buffer[tx_head++];
		tx_head&=BUFF_MASK;
	}
	/* 
	 * If there's nothing left to transmit, turn the 
	 * interrupt off 
	 */
	if(tx_head==tx_tail)
	{
		*UART_IEC(EXC_UART00_BASE)=UART_IEC_TE_MSK;
	}
	else
	{
		*UART_IES(EXC_UART00_BASE) = UART_IES_TE_MSK;
	}

}

static void uart_rx_handler(void)
{
	int next_loc;

	/* Read the status register to clear the interrupt */
	next_loc=*UART_RSR(EXC_UART00_BASE);    
	 
	do
	{
	      next_loc=(rx_tail+1)&BUFF_MASK;
	      if(next_loc==rx_head)
		  {
		      /* 
		       * Hmm, the buffer is full so we'll
		       * ditch the stuff in the fifo
		       */
		      *UART_FCR(EXC_UART00_BASE)=UART_FCR_RC_MSK;
		      break;
	      }
		/* receive the next character */
		rx_buffer[rx_tail]=*UART_RD(EXC_UART00_BASE);
		rx_tail++;
		rx_tail&=BUFF_MASK;

	} while(*UART_RSR(EXC_UART00_BASE) & UART_RSR_RX_LEVEL_MSK);
}

void uart_irq_handler(void)
{
       
	while(*UART_IID(EXC_UART00_BASE) & UART_IID_IID_MSK)
	{
		switch(*UART_IID(EXC_UART00_BASE) & UART_IID_IID_MSK)
		{
		case UART_IID_IID_RI:

			uart_rx_handler();
			if((unsigned int)rx_buffer[rx_tail - 1] == 0x1b) //Check to see if the last char received was the ESC char
				config_mode = 1;			 //If an ESC char was receive then this flag is set to indicate
									 //That the user wants to enter configuration mode.  The function
									 //check_config_flag, checks this flag and jumps to config mode if 
									 //it is set.  
			break;						 //* This is only done for project 1.  Project 2 doesn't check this var
			
		case UART_IID_IID_TI:
			uart_tx_handler();
			break;

		case UART_IID_IID_TII:
		case UART_IID_IID_MI:
		default:

			/* 
			 * Tricky to know what to do here
			 * so we'll do nothing and hope the 
			 * irq goes away. We'll probably just
			 * get stuck in the while loop, but 
			 * there we go.
			 */
			break;
		}
	}
}

void uart_start_tx(void)
{
	/*
	 * if the tx interrupt is already running
	 * then we need do nothing. Otherwise calling
	 * the tx handler shoud kick things off 
	 */
	if(!(*UART_IES(EXC_UART00_BASE) & UART_IES_TE_MSK))
	{
		uart_tx_handler();
	}
}

/*
*	Simple implementation of putc, should probably beef this up to be interrupt driver
*/
extern int fputc(int ch, FILE *f)
{
	/* Copy the character into the tx buffer */
	tx_buffer[tx_tail++]=(char)ch;
	tx_tail&=BUFF_MASK;
	if(tx_tail==tx_head)
	{
		return EOF;
	}
		
	/* Give the transmitter a kick */
	uart_start_tx();

	/* Everything is OK... */
	return 0;
}

extern int fgetc( FILE *f)
{
	int character;
	
	while(rx_head==rx_tail);
	character=rx_buffer[rx_head++];
	rx_head&=BUFF_MASK;
	return character;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国女主播成人在线| 久久综合狠狠综合| 国产精品一二三四| 日av在线不卡| 久久99精品久久久久久| 福利电影一区二区三区| 久久国产精品露脸对白| 麻豆91在线观看| 国内精品免费**视频| 黄色资源网久久资源365| 九九视频精品免费| 国产成人丝袜美腿| 91色视频在线| 欧美日韩小视频| 日韩欧美美女一区二区三区| 精品国产成人系列| 国产性做久久久久久| 中文字幕中文字幕在线一区| 一区二区三区美女| 日本视频一区二区| 懂色中文一区二区在线播放| 99久久亚洲一区二区三区青草| 一本大道久久a久久精二百 | 国产一区在线观看麻豆| 国产高清视频一区| 在线国产电影不卡| 91精品欧美福利在线观看| 亚洲欧美一区二区三区国产精品| 一区二区三区在线看| 日韩激情一二三区| 国产99久久久国产精品免费看| youjizz国产精品| 欧美三级电影网站| 久久久久国产精品麻豆| 亚洲一区在线视频| 国产成人亚洲精品青草天美| 色天使色偷偷av一区二区| 日韩一区二区免费高清| 亚洲同性同志一二三专区| 日韩电影免费在线| 色婷婷久久久亚洲一区二区三区 | 国产精品丝袜久久久久久app| 一区二区三区在线视频观看| 韩国欧美国产一区| 欧美日韩在线三区| 国产欧美日韩一区二区三区在线观看| 亚洲成人动漫在线免费观看| 国产精品一二三四五| 欧美一三区三区四区免费在线看| 国产精品午夜电影| 国产在线观看免费一区| 欧美日韩成人激情| 亚洲男人都懂的| 国产91精品久久久久久久网曝门| 欧美一级欧美三级| 一区二区三区影院| a亚洲天堂av| 久久久久久久久久看片| 天天色天天操综合| 欧洲生活片亚洲生活在线观看| 中文字幕精品—区二区四季| 美女在线一区二区| 欧美精品免费视频| 一区二区高清在线| 一本色道久久综合亚洲aⅴ蜜桃 | 麻豆精品一区二区| 欧美日韩成人综合| 亚洲国产一区二区视频| 色欧美乱欧美15图片| 国产精品高清亚洲| 波多野结衣中文字幕一区二区三区| 日韩免费福利电影在线观看| 日韩精品91亚洲二区在线观看 | 精品国产91乱码一区二区三区 | 国产乱人伦精品一区二区在线观看| 欧美日韩高清影院| 天堂va蜜桃一区二区三区漫画版| 久久综合久久综合久久| 美女一区二区三区| 日韩免费观看2025年上映的电影| 人人狠狠综合久久亚洲| 精品福利二区三区| 国产99一区视频免费| 欧美国产一区二区在线观看| 国产99久久久国产精品| 国产精品美女久久久久aⅴ | 91农村精品一区二区在线| 国产精品美女久久久久av爽李琼 | 免费人成在线不卡| 日韩精品中文字幕一区二区三区 | 国产视频不卡一区| 国产iv一区二区三区| 国产精品久久久久久妇女6080| 99在线精品观看| 亚洲一区二区在线视频| 制服丝袜成人动漫| 国产精品白丝jk白祙喷水网站| 中文字幕乱码久久午夜不卡| 欧洲av一区二区嗯嗯嗯啊| 男人的天堂久久精品| 国产欧美日韩精品在线| 色呦呦日韩精品| 日本欧美一区二区三区| 欧美国产亚洲另类动漫| 在线视频欧美精品| 久草在线在线精品观看| 国产精品蜜臀在线观看| 欧美日韩一区成人| 国产精品一区二区无线| 亚洲国产精品天堂| 国产日产欧美一区二区视频| 欧美自拍丝袜亚洲| 国产剧情av麻豆香蕉精品| 亚洲激情在线激情| 精品国产a毛片| 欧美无砖砖区免费| 成人黄色av网站在线| 日韩中文欧美在线| 亚洲欧美偷拍三级| 欧美精品一区二区久久久| 在线亚洲精品福利网址导航| 国产精品综合久久| 日韩高清不卡一区二区三区| 亚洲色图在线看| 国产亚洲欧美中文| 日韩一区二区三区电影在线观看| 99久久精品免费| 国产美女精品人人做人人爽| 一区二区三区中文字幕在线观看| 亚洲精品在线观看网站| 欧美日韩极品在线观看一区| 成人av在线一区二区三区| 国内精品国产三级国产a久久| 丝袜诱惑亚洲看片 | 欧美日免费三级在线| voyeur盗摄精品| 国产传媒一区在线| 精品亚洲成av人在线观看| 亚洲乱码一区二区三区在线观看| 国产日韩欧美一区二区三区乱码| 日韩免费高清视频| 日韩欧美一级在线播放| 欧美绝品在线观看成人午夜影视| 色综合久久久网| 色综合久久中文综合久久牛| 成人丝袜视频网| 岛国精品在线观看| 成人久久视频在线观看| 成人午夜碰碰视频| 国产99久久久精品| 成人免费毛片高清视频| 丁香桃色午夜亚洲一区二区三区| 国产美女在线观看一区| 黄色日韩网站视频| 国产乱码字幕精品高清av | 国产精品911| 国产在线精品一区在线观看麻豆| 美女视频一区二区三区| 日韩avvvv在线播放| 免费欧美高清视频| 久久精品国产一区二区三 | 69p69国产精品| 欧美老女人第四色| 日韩精品一区二区三区视频播放 | 国产一区二区三区美女| 国产一区二区在线观看免费| 国产一区 二区| 99久久久无码国产精品| 91福利精品第一导航| 9191精品国产综合久久久久久| 欧美日韩国产另类不卡| 日韩女优制服丝袜电影| 久久精品夜夜夜夜久久| 中文字幕一区二区三区色视频| 亚洲卡通欧美制服中文| 天天操天天干天天综合网| 精品一区二区三区的国产在线播放 | 在线一区二区观看| 欧美日韩久久久一区| 日韩一级片网址| 中文字幕欧美国产| 亚洲成人激情自拍| 极品少妇一区二区三区精品视频| 粉嫩一区二区三区性色av| 一本高清dvd不卡在线观看| 宅男在线国产精品| 中文成人av在线| 婷婷开心激情综合| 粉嫩蜜臀av国产精品网站| 欧美人伦禁忌dvd放荡欲情| 久久久综合视频| 婷婷夜色潮精品综合在线| www.色综合.com| 日韩久久精品一区| 亚洲黄色小说网站| 国产福利一区二区三区视频在线| 欧美日韩精品专区| 国产精品三级久久久久三级| 免费观看30秒视频久久| 欧美在线你懂得|