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

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

?? buffer.c

?? 基于HMS7202的波形發生器源程序
?? C
字號:


#include <utils.h>
#include "usb.h"

static void IRingBufferReset(IRingBuffer_t *ring)
{
	ring->head = 0;
	ring->tail = 0;
}

/*************************************************************/
/*        返回循環隊列中的元素個數 以字為單位
**************************************************************/
static int IRingBufferAvailable(IRingBuffer_t *ring)
{
	int count;
	int head = ring->head;
	int tail = ring->tail;
	if( head >= tail)
		count = head - tail;
	else
		count = ring->size - tail + head;

	return count;
}

/******************************************************************/
/*       返回隊列的剩余空間  以字為單位
        若結果大于0,表示還有剩余空間
*******************************************************************/
static int IRingBufferEmpty(IRingBuffer_t *ring)
{
	return ( ring->size - ring->available(ring) -1 );
}

static int IRingBufferPut(IRingBuffer_t *ring, int data)
{
	int irqsave;
	if(ring->empty(ring) <= 0 )
		return FAIL;

	irqsave = isIRQ();
	if(irqsave) {              //允許IRQ
		sys_setirq(0);
		ring->bufp[ring->head] = data;
		ring->head = ++ring->head % ring->size;
		sys_setirq(1);
	}
	else {
		ring->bufp[ring->head] = data;
		ring->head = ++ring->head % ring->size;
	}

	return OK;
}


/***************************************************************/
/*     在保證屏蔽IRQ的情況下,循環隊列尾部的1字內容出隊列,
       并放入由data指定的內存處
****************************************************************/
static int IRingBufferGet(IRingBuffer_t *ring, int *data)
{
	int irqsave;

	if(ring->available(ring) <= 0 )//若循環隊列空,則失敗
		return FAIL;

	irqsave = isIRQ();//若在CPSR中未屏蔽IRQ,則返回1
	if(irqsave) {//說明在CPSR中未屏蔽IRQ
		sys_setirq(0); //先屏蔽IRQ
		*data = ring->bufp[ring->tail];
		ring->tail = ++ring->tail % ring->size;
		sys_setirq(1); //允許IRQ
	}
	else {
		*data = ring->bufp[ring->tail];
		ring->tail = ++ring->tail % ring->size;
	}
	return OK;
}


static int IRingBufferPutData(IRingBuffer_t *ring, int *data, int count)
{
	int irqsave;
	int i;

	if(ring->empty(ring) < count )
		return FAIL;

	irqsave = isIRQ();
	if(irqsave) {
		sys_setirq(0);
		for( i=0; i< count ; i++) {
			ring->bufp[ring->head] = *(data + i);
			ring->head = ++ring->head % ring->size;
		}
		sys_setirq(1);
	}
	else {
		for( i=0; i< count ; i++) {
			ring->bufp[ring->head] = *(data + i);
			ring->head = ++ring->head % ring->size;
		}
	}

	return OK;
}

static int IRingBufferGetData(IRingBuffer_t *ring, int *data, int count)
{
	int irqsave;
	int i;

	if(ring->available(ring) < count )
		return FAIL;

	irqsave = isIRQ();
	if(irqsave) {
		sys_setirq(0);
		for( i=0; i< count ; i++) {
			*(data + i) = ring->bufp[ring->tail];
			ring->tail = ++ring->tail % ring->size;
		}
		sys_setirq(1);
	}
	else {
		for( i=0; i< count ; i++) {
			*(data + i) = ring->bufp[ring->tail];
			ring->tail = ++ring->tail % ring->size;
		}
	}
	return OK;
}
/***************************************************************/
/*             USB 收發循環隊列初始化
   addr:循環隊起始地址
   size:循環隊列大小,以字為單位
****************************************************************/
void IRingBufferInit(IRingBuffer_t *ring, char *name, int addr, int size)
{
	ser_printf("[%s] IRingBufferInit base=0x%08x, int count=0x%x(%d)\n", name, addr, size, size);
	strncpy(ring->name, name, strlen(name)+1);
	ring->size = size; 
	ring->bufp = (int *)addr; 
	ring->head = 0;
	ring->tail = 0;
	ring->available = IRingBufferAvailable;
	ring->empty = IRingBufferEmpty;
	ring->get = IRingBufferGet;
	ring->put = IRingBufferPut;
	ring->getData = IRingBufferGetData;
	ring->putData = IRingBufferPutData;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费午夜影院| 亚洲成人黄色小说| 国产精品无人区| 久久久91精品国产一区二区三区| 日韩亚洲欧美中文三级| 91精品国产综合久久精品麻豆| 欧美日韩国产天堂| 欧美日韩一区二区三区免费看| 在线日韩av片| 欧美日韩国产一区| 日韩欧美综合一区| 久久亚洲影视婷婷| 国产欧美精品一区aⅴ影院| 亚洲国产高清aⅴ视频| 中文字幕在线不卡一区| 亚洲女人的天堂| 一区二区免费在线播放| 午夜影院在线观看欧美| 青椒成人免费视频| 国产一区在线精品| 99久久99久久综合| 欧洲一区在线电影| 日韩亚洲欧美综合| 国产香蕉久久精品综合网| 亚洲国产成人一区二区三区| 综合激情成人伊人| 亚洲国产精品久久久男人的天堂| 日韩中文字幕一区二区三区| 久久国产视频网| 丁香婷婷深情五月亚洲| 色琪琪一区二区三区亚洲区| 欧美久久久久久久久| 26uuu国产电影一区二区| 中文字幕一区二区三区四区不卡| 亚洲精品中文字幕在线观看| 日韩成人一级大片| 国产不卡一区视频| 91美女在线看| 欧美一卡在线观看| 国产精品三级av在线播放| 一区二区三区在线看| 激情综合网最新| 91亚洲精品一区二区乱码| 欧美精品九九99久久| 久久综合999| 亚洲一二三四在线观看| 精品在线免费视频| 在线亚洲高清视频| 精品国产乱码久久久久久久久 | 亚洲一区二区三区四区不卡| 麻豆91在线播放免费| 91在线观看地址| 精品日韩99亚洲| 一区二区三区四区乱视频| 狠狠色狠狠色综合日日91app| 9久草视频在线视频精品| 欧美一区日韩一区| 亚洲伦理在线免费看| 国产综合色在线视频区| 精品视频一区三区九区| 欧美高清在线一区| 久久成人羞羞网站| 欧美三级蜜桃2在线观看| 国产日韩欧美a| 日韩和欧美一区二区| 91在线观看成人| 国产欧美日韩在线| 丝袜诱惑亚洲看片| 99精品视频一区二区| 欧美精品一区二区三区很污很色的 | 亚洲成人免费av| a级精品国产片在线观看| 精品少妇一区二区三区| 亚洲成在线观看| 91免费观看在线| 久久你懂得1024| 理论片日本一区| 欧美伦理电影网| 最新国产の精品合集bt伙计| 国产乱码精品一区二区三区av | 精品视频资源站| 亚洲天堂久久久久久久| 国产成人综合在线| 欧美电影免费观看高清完整版在线 | 亚洲欧洲精品成人久久奇米网| 麻豆精品视频在线| 欧美蜜桃一区二区三区| 亚洲午夜精品一区二区三区他趣| aa级大片欧美| 国产精品久久久久aaaa| 国产98色在线|日韩| 26uuu亚洲| 精品一区二区三区在线观看| 91精品国产福利| 亚洲a一区二区| 欧美日韩中文国产| 亚洲成人免费影院| 在线不卡一区二区| 日韩精品色哟哟| 欧美日韩精品久久久| 亚洲成a天堂v人片| 欧美老年两性高潮| 天天色天天操综合| 在线91免费看| 日韩av高清在线观看| 欧美一卡二卡在线观看| 美女视频黄频大全不卡视频在线播放 | 91福利精品视频| 亚洲色图一区二区| 日本韩国一区二区三区| 伊人性伊人情综合网| 欧美综合视频在线观看| 亚州成人在线电影| 欧美一区二区视频网站| 狠狠色综合日日| 中文字幕巨乱亚洲| 色久综合一二码| 亚洲成av人片一区二区梦乃| 91麻豆精品国产91久久久久久| 日韩国产在线一| 欧美成人a视频| 黄色日韩三级电影| 国产精品福利影院| 欧洲精品视频在线观看| 日本亚洲天堂网| 久久久亚洲精品石原莉奈| 高清日韩电视剧大全免费| 自拍偷拍亚洲综合| 欧美日韩国产高清一区二区三区| 毛片av中文字幕一区二区| 久久亚洲综合色| 色综合色狠狠综合色| 午夜免费欧美电影| 久久综合久久综合亚洲| 波多野结衣中文字幕一区二区三区 | 欧美国产视频在线| 91国偷自产一区二区三区成为亚洲经典 | 中文在线一区二区 | 久久精品男人天堂av| youjizz久久| 五月天精品一区二区三区| 日韩欧美国产1| 99精品国产视频| 天堂精品中文字幕在线| 国产欧美精品国产国产专区| 欧美亚洲尤物久久| 国产一区二三区| 有坂深雪av一区二区精品| 欧美另类z0zxhd电影| 国产成人综合在线| 午夜国产精品一区| 亚洲国产电影在线观看| 欧美女孩性生活视频| 粉嫩蜜臀av国产精品网站| 亚洲国产一区二区视频| 久久精品日产第一区二区三区高清版 | 亚洲视频每日更新| 欧美一级精品大片| 99久久er热在这里只有精品15| 午夜激情一区二区| 国产精品久久久久影视| 欧美一区二区三区视频免费播放| 不卡的av中国片| 国产在线乱码一区二区三区| 亚洲国产一区二区视频| 国产精品女主播av| 精品国产自在久精品国产| 久久久欧美精品sm网站| 欧美精选一区二区| 一本到不卡免费一区二区| 国产呦精品一区二区三区网站| 亚洲电影在线免费观看| 日韩伦理电影网| 久久亚洲综合色| 日韩视频中午一区| 欧美体内she精高潮| 成人黄色大片在线观看| 久久99精品国产麻豆不卡| 亚洲成人黄色影院| 亚洲精品成a人| 中文字幕+乱码+中文字幕一区| 精品国产123| 欧美一区二区三区爱爱| 欧美日韩视频一区二区| 91啪亚洲精品| av一区二区不卡| 国产成人免费9x9x人网站视频| 久久精品国产秦先生| 婷婷六月综合网| 亚洲国产一区二区三区| 最新不卡av在线| 亚洲视频你懂的| 国产精品久久久一本精品 | 日韩午夜激情电影| 在线不卡一区二区| 欧美肥妇bbw| 欧美久久一区二区| 欧美高清dvd| 欧美日韩成人综合天天影院| 在线国产亚洲欧美|