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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产a视频精品免费观看| 制服丝袜中文字幕一区| 欧美综合视频在线观看| 国产欧美一区二区精品性| 午夜精品久久久久久久蜜桃app| 国内精品嫩模私拍在线| 欧美精品xxxxbbbb| 亚洲三级在线免费| 国产高清精品网站| 欧美成人一区二区| 亚洲午夜av在线| 色综合久久88色综合天天6| 久久先锋影音av| 久久成人免费网站| 91精品黄色片免费大全| 亚洲成人三级小说| 在线观看免费一区| 亚洲视频 欧洲视频| 成人午夜视频网站| 亚洲国产精华液网站w| 国产一区二区精品久久99| 欧美一区二区啪啪| 日韩主播视频在线| 欧美一区二区三区视频免费播放 | 色综合欧美在线视频区| 国产女人aaa级久久久级| 蜜桃av一区二区三区电影| 777奇米成人网| 五月婷婷久久综合| 欧美一区二区视频网站| 天堂va蜜桃一区二区三区漫画版 | 成人晚上爱看视频| 国产亚洲视频系列| 国产精品一区二区久久精品爱涩| 精品三级在线看| 国产米奇在线777精品观看| 精品1区2区在线观看| 久久精品国产999大香线蕉| 欧美成人a∨高清免费观看| 国内精品久久久久影院色| 久久久精品欧美丰满| 丁香婷婷综合五月| 亚洲美腿欧美偷拍| 欧美日韩国产综合一区二区| 亚洲gay无套男同| 日韩视频免费直播| 国内精品视频666| 国产精品久久久久久久久图文区 | 色综合天天综合网天天狠天天| 国产精品夫妻自拍| 91久久一区二区| 日韩激情中文字幕| 精品免费国产一区二区三区四区| 国产精品99久| 一区二区三区精品在线| 欧美福利视频一区| 国产精品996| 亚洲一区二区三区美女| 日韩一区二区在线看| 懂色av中文字幕一区二区三区| 亚洲欧美一区二区三区极速播放| 欧洲国内综合视频| 色香蕉成人二区免费| 亚洲成人av一区二区| 国产亚洲欧洲997久久综合| 日本韩国欧美三级| 精品一二三四在线| 亚洲最大色网站| xnxx国产精品| 欧美图片一区二区三区| 国模娜娜一区二区三区| 亚洲激情综合网| 久久蜜桃av一区精品变态类天堂| 91极品美女在线| 国产麻豆午夜三级精品| 亚洲不卡在线观看| 亚洲欧洲色图综合| 欧美一区二区视频观看视频| 99久久99久久精品国产片果冻 | 天堂蜜桃一区二区三区 | 五月激情综合色| 欧美国产精品一区二区三区| 欧美精品乱码久久久久久按摩| 国产福利一区二区三区视频在线 | 欧美日韩高清影院| 色综合婷婷久久| 国产成人免费视频网站| 美女一区二区在线观看| 亚洲动漫第一页| 亚洲日本va午夜在线影院| www国产精品av| 日韩美女在线视频| 欧美日本精品一区二区三区| 99国产精品一区| 国产精品一区二区三区网站| 日产国产高清一区二区三区| 亚洲国产精品视频| 亚洲美女偷拍久久| 亚洲欧美日韩国产综合在线| 国产欧美日韩视频在线观看| 欧美本精品男人aⅴ天堂| 欧美男男青年gay1069videost| 日韩一区二区精品在线观看| 91在线观看视频| 国产91在线观看丝袜| 国产精品77777| 国产成人自拍网| 国产精品99久久久| 国产乱对白刺激视频不卡| 国产麻豆精品一区二区| 国产一区啦啦啦在线观看| 美女视频免费一区| 久久国产麻豆精品| 国产一区三区三区| 国产精品亚洲一区二区三区在线 | 欧美精品一区二区三区四区| 69精品人人人人| 欧美一区二区播放| 日韩欧美一区中文| 日韩欧美激情四射| 7799精品视频| 精品国产一区二区三区忘忧草 | 欧美在线一区二区三区| 欧美色图激情小说| 在线播放一区二区三区| 日韩一区二区三区电影在线观看| 日韩一二三区不卡| 久久看人人爽人人| 国产精品久久久爽爽爽麻豆色哟哟 | 日韩一区在线播放| 亚洲精品菠萝久久久久久久| 亚洲国产视频网站| 日韩激情视频网站| 韩国女主播成人在线观看| 成人av网站免费| 在线欧美一区二区| 欧美精品在线观看一区二区| 日韩欧美一级片| 国产精品三级av| 亚洲国产精品精华液网站| 美女视频黄 久久| 成人毛片视频在线观看| 欧美三级在线看| 久久综合久久综合久久综合| 欧美激情一区二区| 亚洲在线成人精品| 久久99深爱久久99精品| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产欧美视频一区二区| 一区二区三区丝袜| 久久精品国产77777蜜臀| 国产91精品久久久久久久网曝门| 在线欧美日韩精品| 久久久久久麻豆| 午夜在线电影亚洲一区| 国内一区二区在线| 欧美日韩在线电影| 国产欧美一区二区精品久导航 | 91久久香蕉国产日韩欧美9色| 日韩精品自拍偷拍| 亚洲综合av网| 国产精品羞羞答答xxdd| 2020国产成人综合网| 亚洲一区在线免费观看| 成人免费视频视频在线观看免费| 欧美美女视频在线观看| 成人欧美一区二区三区小说| 捆绑紧缚一区二区三区视频| 99视频精品全部免费在线| 欧美videossexotv100| 樱桃视频在线观看一区| 国产成人8x视频一区二区| 777久久久精品| 亚洲最大的成人av| 色综合婷婷久久| 日本一区二区高清| 国产一区二区福利| 91精品国产日韩91久久久久久| 尤物在线观看一区| 99在线热播精品免费| 久久精品视频一区| 国产一区二区调教| 日韩欧美国产综合一区 | 亚洲色图另类专区| 粉嫩av一区二区三区| 精品国产乱码久久久久久牛牛| 亚洲第一久久影院| 在线观看不卡视频| 一区二区三区电影在线播| av不卡免费电影| 亚洲天堂免费在线观看视频| 成人的网站免费观看| 国产亚洲精品久| 懂色av中文一区二区三区| 国产亚洲福利社区一区| 国产精品一级二级三级| 久久九九全国免费| 成年人午夜久久久| 亚洲日本在线视频观看| 99久久国产综合精品女不卡|