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

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

?? main.c

?? 周立功MagicARM2200-S USB_E2PROM編程
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/

#include "config.h"						 	//包含LPC22xx 模板的配置頭文件
#include "D12Driver.h"					 	//包含D12 驅(qū)動程序的頭文件
#include "I2C.h"						 	//包含I2C 總線中間件的頭文件

#define PAGE_SIZE_CAT1025	 16			 	//CAT1025 的頁面大小:16字節(jié)
#define CMD_READ_CAT1025	 0x01		 	//讀CAT1025 命令
#define CMD_WRITE_CAT1025	 0x02		 	//寫CAT1025 命令

OS_STK  TaskStartStk[128];				 	//操作系統(tǒng)起動任務(wù)堆棧
OS_STK  ReadTaskStk[256];				 	//讀任務(wù)堆棧
OS_STK  WriteTaskStk[256];				 	//寫任務(wù)堆棧

OS_EVENT *Write_Sem;					 	//讀任務(wù)就緒信號量
OS_EVENT *Read_Sem;						 	//寫任務(wù)就緒信號量

void Init_I2CInt(void);						//I2C中斷初始化程序
INT16U Read_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *recbuff);
INT16U Write_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *sendbuff);

void TaskStart(void *pdata);	
void TaskRead(void *pdata);
void TaskWrite(void *pdata);

extern void Usb_Handler(void);

/************************************************************
** 函數(shù)名稱: void Init_D12Int(void)
** 功能描述: 初始化D12 的中斷,設(shè)置 D12 的中服務(wù)程序地址
** 輸   入: 無
** 輸   出: 無
*************************************************************/
void Init_D12Int(void)
{
	VICVectCntl1 = (0x20 | 14);				//EINT0 通道分配到IRQ slot 1
   	VICVectAddr1 = (INT32U)Usb_Handler;		//設(shè)置EINT0向量地址
   	VICIntEnable = 1 << 14;					//允許EINT0
}

/************************************************************
			主  函  數(shù)
*************************************************************/
int main (void)
{
    OSInit();                               //初始化 uC/OS-II
    
    OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[127], 3);
    							            //創(chuàng)建起動任務(wù)
    OSStart();                              //開始多任務(wù)
}

/************************************************************
*         起動任務(wù), 優(yōu)先級 3
*************************************************************/
void  TaskStart (void *pdata)
{
#if OS_CRITICAL_METHOD == 3          		/* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;	
#endif
	INT8U err,cmd;
	pdata = pdata;               	 		/* Prevent compiler warning */

	TargetInit();          		 	 		//μC/OS-II定時器及相關(guān)中斷初始化
	I2cInit(30000);				 			//I2C控制器初始化	
	Init_I2CInt();					 		//初始化I2C的中斷
	Init_D12Int();					 		//配置D12的中斷
	err = Init_D12();			  			//D12初始化
	
	Write_Sem = OSSemCreate(0);	 	 		//創(chuàng)建控制讀寫任務(wù)的兩個信號量,信號量初值為0
	Read_Sem  = OSSemCreate(0);   
	OSTaskCreate(TaskRead, (void *)0, &ReadTaskStk[255], 1);	   	//創(chuàng)建讀任務(wù)
	OSTaskCreate(TaskWrite, (void *)0, &WriteTaskStk[255], 2);		//創(chuàng)建寫任務(wù)
			            
	if (err == 0)				  									//如果初始化D12成功,才創(chuàng)建傳輸控制處理任務(wù)
  		OSTaskCreate(TaskSetup, (void *)0, &TaskSetupStk[127], 0);
  		
  	for (;;)
  	{
  		err = ReadPort1(1, &cmd, 200);								//等待來自 PC 命令
		if (err == OS_NO_ERR)
		{															//接收正確
			if (cmd == CMD_READ_CAT1025)				
				OSSemPost(Read_Sem);								//使讀任務(wù)就緒
			if (cmd == CMD_WRITE_CAT1025)
				OSSemPost(Write_Sem);								//使寫任務(wù)就緒
		} 		 
    }  
 }

/************************************************************
** 函數(shù)名稱: void TaskRead(void *pdata)
** 功能描述: 寫 CAT1025 任務(wù),優(yōu)先級為1
** 輸 入:   無
** 輸 出:   無
*************************************************************/
void TaskRead(void *pdata)
{
#if OS_CRITICAL_METHOD == 3          						 /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
	INT8U err,buff[260];			  						 //接收緩沖區(qū)
	INT8U ack = 0x01;				  						 //應(yīng)答字
	INT16U reclen;
	
	for (;;)
	{ 
	   	OSSemPend(Read_Sem, 0, &err);						 //等待TaskStart讀命令
    	err = WritePort1(1, &ack, 200);						 //應(yīng)答PC主機(jī)
    	if (err == USB_NO_ERR)
    	{						 							 //應(yīng)答正確
  	   		reclen = Read_CAT1025(0xA0, 0, 256, &buff[2]);   //讀取數(shù)據(jù)   			
    																	
    		buff[0] = reclen / 256;
    		buff[1] = reclen % 256;
  	 		WritePort2(258, buff, 200);			    		 //發(fā)送讀取到的數(shù)據(jù)
   	  	}
    }
}

/************************************************************
** 函數(shù)名稱: void TaskWrite(void *pdata)
** 功能描述: 寫 CAT1025 任務(wù),優(yōu)先級為2
** 輸 入:   無
** 輸 出:   無
*************************************************************/
void TaskWrite(void *pdata)
{
#if OS_CRITICAL_METHOD == 3          			    		/* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
	INT8U err,buff[260];									//發(fā)送緩沖區(qū)
	INT8U ack = 0x02;										//應(yīng)答字
	INT16U actlen;
	
	for (;;)
	{ 
	   	OSSemPend(Write_Sem, 0, &err);						//等待TaskStart的命令
        err = WritePort1(1, &ack, 200);						//應(yīng)答PC機(jī)
    	if (err == USB_NO_ERR)
    	{													//應(yīng)答正確
       		err = ReadPort2(256, buff, 200);				//接收要寫入的數(shù)據(jù)
       		if (err == USB_NO_ERR)
       		{												//接收正確
    			actlen = Write_CAT1025(0xA0, 0, 256, buff); //執(zhí)行寫入  		
    		    		
    			buff[0] = actlen / 256;
    			buff[1] = actlen % 256;
       			WritePort1(2, buff, 200);					//發(fā)送實(shí)際寫入的字節(jié)數(shù)
       		}
   	  	}
    }
}

/********************************************************************************
** 函數(shù)名稱: INT16U Read_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *recbuff)
** 功能描述: 從CAT1025讀取數(shù)據(jù)
** 輸 入:   INT8U  addr:	    CAT1025的 I2C 總線地址
			 INT8U  offset:		偏移地址 
			 INT16U len:		讀的長度
			 INT8U  *recbuff:   接收數(shù)據(jù)指針
** 輸 出:   實(shí)際讀取到的字節(jié)數(shù)
*********************************************************************************/
INT16U Read_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *recbuff)
{
	INT16U actlen = 0;
	
	actlen = I2cRead(addr, recbuff, &offset, 1, len);   		//讀取數(shù)據(jù)并記錄讀到的字節(jié)數(shù)
											
	return actlen;												//返回實(shí)際讀到的字節(jié)數(shù)
}


/************************************************************************************
** 函數(shù)名稱: INT16U Write_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *sendbuff)
** 功能描述: 向 CAT1025 寫入數(shù)據(jù)
** 輸 入:   INT8U  addr:	    CAT1025 I2C 總線地址
			 INT8U  offset:		偏移地址 
			 INT16U len:		讀的長度
			 INT8U  *sendbuff:  接收數(shù)據(jù)指針
** 輸 出:   實(shí)際寫入的字節(jié)數(shù)
*************************************************************************************/
INT16U Write_CAT1025(INT8U addr,INT8U offset,INT16U len,INT8U *sendbuff)
{
	INT8U pages,nums,i;
	INT8U buff[PAGE_SIZE_CAT1025 + 1];								//寫入緩沖區(qū)
	INT16U actlen = 0;
	
	pages = len / PAGE_SIZE_CAT1025;								//CAT1025一次只能寫一頁,一頁為16字節(jié)?
	nums  = len % PAGE_SIZE_CAT1025;								//不夠整數(shù)頁的字節(jié)數(shù)
	buff[0] = offset;					    						//buff[0]為寫入偏移地址

	for (i = 0; i < pages; i++)
	{
		memcpy(&buff[1], sendbuff, PAGE_SIZE_CAT1025);		  		//將要寫入的數(shù)據(jù)復(fù)制到寫入緩沖區(qū)
		actlen += I2cWrite(addr,buff, PAGE_SIZE_CAT1025 + 1) - 1;   //寫入數(shù)據(jù)并記錄已寫入的字節(jié)數(shù)
		OSTimeDly(OS_TICKS_PER_SEC / 100 + 1);		  			    //延時10ms的時間讓CAT1025
												  				    //內(nèi)部執(zhí)行寫操作
   		sendbuff += PAGE_SIZE_CAT1025;
	   	buff[0]  += PAGE_SIZE_CAT1025;
	}

	if (nums > 0)
	{																//下面寫不夠整數(shù)頁的字節(jié)數(shù)
		memcpy(&buff[1], sendbuff, nums);
		actlen += I2cWrite(addr, buff, nums + 1) - 1;
		OSTimeDly(OS_TICKS_PER_SEC / 100 + 1);
 	}
	
	return actlen;													//返回實(shí)際寫入的字節(jié)數(shù)
}


/************************************************************************************
** 函數(shù)名稱: void Init_I2CInt(void)
** 功能描述: 初始化I2C總線控制器的中斷
** 輸 入:   無
** 輸 出:   無
*************************************************************************************/
void Init_I2CInt(void)
{
	extern void I2c_Handler(void);
	
    VICVectAddr12 = (uint32)I2c_Handler;							// 設(shè)置I2C中斷向量地址
    VICVectCntl12 = (0x20 | 9);										// I2C中斷分配到IRQ slot 2
   	//VICIntEnable = 1 << 9;										// 暫時不允許I2C中斷
 }   
   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人小视频在线观看| 精品国产精品网麻豆系列| 99re66热这里只有精品3直播| 国模冰冰炮一区二区| 免费观看在线色综合| 青青青爽久久午夜综合久久午夜| 午夜精品久久久久久久久久久| 一区二区激情视频| 一区二区三区日韩精品视频| 亚洲色欲色欲www| 一区二区三区在线视频观看| 亚洲综合av网| 天天亚洲美女在线视频| 日本麻豆一区二区三区视频| 精品一二线国产| 国产精品性做久久久久久| 国产成人福利片| 国产不卡视频在线播放| 91亚洲永久精品| 欧美在线你懂得| 69精品人人人人| 欧美大度的电影原声| 久久婷婷久久一区二区三区| 国产精品欧美一级免费| 亚洲色图清纯唯美| 亚洲成人高清在线| 老司机午夜精品| 国产69精品久久久久777| 91在线视频播放地址| 欧美日韩一区不卡| 欧美xxxxx牲另类人与| 久久久夜色精品亚洲| 亚洲图片激情小说| 五月激情丁香一区二区三区| 色综合欧美在线视频区| 欧美亚洲丝袜传媒另类| 欧美一区二区在线视频| 欧美激情一区二区三区在线| 一区二区不卡在线视频 午夜欧美不卡在| 日日夜夜一区二区| 国产成人啪午夜精品网站男同| 91老司机福利 在线| 色婷婷国产精品久久包臀| 欧美老肥妇做.爰bbww视频| 久久新电视剧免费观看| 亚洲人吸女人奶水| 蜜臀久久久久久久| 成人av免费在线播放| 欧美日韩精品电影| 中文字幕国产精品一区二区| 亚洲国产一区二区在线播放| 国产一区二区三区久久久| 91久久久免费一区二区| 精品va天堂亚洲国产| 亚洲男人的天堂av| 激情综合网激情| 欧美亚洲丝袜传媒另类| 国产欧美日韩精品a在线观看| 亚洲日本电影在线| 国产精品一区二区久久精品爱涩| 一本久久a久久免费精品不卡| 精品裸体舞一区二区三区| 亚洲美女区一区| 国产成a人亚洲| 日韩一区二区免费高清| 亚洲人123区| 国产精品123| 欧美一级夜夜爽| 亚洲另类在线视频| 国产成人av影院| 日韩欧美www| 午夜国产精品影院在线观看| www.66久久| 欧美精品一区二区三区四区| 亚洲观看高清完整版在线观看| 懂色av一区二区夜夜嗨| 日韩视频一区在线观看| 亚洲一区二区中文在线| 91片黄在线观看| 中文字幕av免费专区久久| 久久精品国产久精国产| 欧美日韩一区视频| 亚洲乱码中文字幕| 成人国产精品免费| 国产欧美日韩综合| 国产美女av一区二区三区| 欧美一卡在线观看| 日韩成人伦理电影在线观看| 欧美亚洲高清一区| 亚洲乱码中文字幕综合| 成人高清视频免费观看| 欧美高清在线视频| 国产a级毛片一区| 国产肉丝袜一区二区| 精品夜夜嗨av一区二区三区| 日韩欧美高清在线| 久久精品国产秦先生| 91精品免费在线| 三级久久三级久久| 欧美日本在线播放| 天天影视涩香欲综合网| 欧美日本国产一区| 亚洲成人自拍偷拍| 欧美日韩一区二区电影| 亚洲va国产va欧美va观看| 欧美日韩一区不卡| 爽好多水快深点欧美视频| 欧美日韩激情一区二区三区| 亚洲va欧美va国产va天堂影院| 欧美撒尿777hd撒尿| 亚洲成人综合在线| 56国语精品自产拍在线观看| 日韩精品一级二级| 日韩欧美一区二区免费| 久久精品国产精品亚洲精品| 精品播放一区二区| 国产白丝精品91爽爽久久| 欧美激情在线一区二区| 99re这里只有精品6| 亚洲美女屁股眼交3| 欧美亚洲愉拍一区二区| 日韩高清在线一区| 精品国产乱码久久久久久夜甘婷婷 | 成人精品免费网站| 综合电影一区二区三区| 欧美在线观看视频一区二区| 性感美女久久精品| 日韩精品一区二区三区视频播放 | 日韩欧美在线不卡| 国产精品一区二区在线播放 | 成人在线综合网站| 亚洲男人的天堂一区二区| 欧美日韩免费观看一区三区| 日本不卡不码高清免费观看| 久久久久国产一区二区三区四区| proumb性欧美在线观看| 亚洲一区在线观看视频| 日韩午夜av电影| 欧美一区日本一区韩国一区| 久久99深爱久久99精品| 国产精品色呦呦| 欧美探花视频资源| 激情小说欧美图片| 1024国产精品| 正在播放亚洲一区| 国产精品视频一二三| 国产精品色哟哟网站| 国产精品免费网站在线观看| 精品伊人久久久久7777人| 欧美国产国产综合| 欧美日韩一区国产| 国模大尺度一区二区三区| 《视频一区视频二区| 欧美高清视频在线高清观看mv色露露十八| 经典三级视频一区| 一区二区三区美女视频| 久久综合九色综合97婷婷 | 欧美午夜电影在线播放| 国模套图日韩精品一区二区 | 91小视频在线观看| 日韩av一二三| 综合婷婷亚洲小说| 精品国产一区二区三区不卡 | 久久精品视频在线看| 欧美日韩欧美一区二区| 国产激情一区二区三区桃花岛亚洲| 亚洲一区二区在线播放相泽| 久久亚区不卡日本| 欧美一区二区视频在线观看| 成人av中文字幕| 久久精品国产久精国产爱| 亚洲精品久久7777| 欧美精彩视频一区二区三区| 欧美日韩国产成人在线91| 波多野洁衣一区| 国产最新精品精品你懂的| 五月综合激情婷婷六月色窝| 国产精品乱码一区二区三区软件| 欧美一区二区人人喊爽| 色综合天天性综合| 国产精品一区二区在线观看不卡 | 久久人人97超碰com| 欧美日韩一区三区| 91亚洲大成网污www| 国产激情视频一区二区三区欧美| 日本aⅴ免费视频一区二区三区| 亚洲美女屁股眼交| 中文字幕五月欧美| 久久婷婷综合激情| 欧美不卡在线视频| 91麻豆精品国产无毒不卡在线观看 | 成人av中文字幕| 激情丁香综合五月| 日韩av高清在线观看| 亚洲图片欧美色图| 亚洲一区中文日韩| 亚洲一区二区视频在线| 亚洲精品高清视频在线观看| 亚洲欧美在线视频观看| 国产农村妇女精品|