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

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

?? main.c

?? zlg開發套件ucos系統下讀寫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 "D13Driver.h"					 //包含D13 驅動程序的頭文件
#include "I2C.h"						 //包含I2C 總線中間件的頭文件

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

OS_STK  TaskStartStk[128];				 //操作系統起動任務堆棧
OS_STK  ReadTaskStk[256];				 //讀任務堆棧
OS_STK  WriteTaskStk[256];				 //寫任務堆棧

OS_EVENT *Write_Sem;					 //讀任務就緒信號量
OS_EVENT *Read_Sem;						 //寫任務就緒信號量

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);

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

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

/************************************************************
*         起動任務, 優先級 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定時器及相關中斷初始化
	I2cInit(30000);				 			//I2C控制器初始化	
	Init_I2CInt();					 		//初始化I2C的中斷
	Init_D13Int();					 		//配置D13的中斷
	err = Init_D13();			  			//D13初始化
	
	Write_Sem = OSSemCreate(0);	 	 		//創建控制讀寫任務的兩個信號量,信號量初值為0
	Read_Sem  = OSSemCreate(0);   
	OSTaskCreate(TaskRead, (void *)0, &ReadTaskStk[255], 1);	   	//創建讀任務
	OSTaskCreate(TaskWrite, (void *)0, &WriteTaskStk[255], 2);		//創建寫任務
			            
	if (err == 0)				  									//如果初始化D13成功,才創建傳輸控制處理任務
  		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);								//使讀任務就緒
			if (cmd == CMD_WRITE_CAT1025)
				OSSemPost(Write_Sem);								//使寫任務就緒
		} 		 
    }  
 }

/************************************************************
** 函數名稱: void TaskRead(void *pdata)
** 功能描述: 寫 CAT1025 任務,優先級為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];			  						 //接收緩沖區
	INT8U ack = 0x01;				  						 //應答字
	INT16U reclen;
	
	for (;;)
	{ 
	   	OSSemPend(Read_Sem, 0, &err);						 //等待TaskStart讀命令
    	err = WritePort1(1, &ack, 200);						 //應答PC主機
    	if (err == USB_NO_ERR)
    	{						 							 //應答正確
  	   		reclen = Read_CAT1025(0xA0, 0, 256, &buff[2]);   //讀取數據   			
    																	
    		buff[0] = reclen / 256;
    		buff[1] = reclen % 256;
  	 		WritePort2(258, buff, 200);			    		 //發送讀取到的數據
   	  	}
    }
}

/************************************************************
** 函數名稱: void TaskWrite(void *pdata)
** 功能描述: 寫 CAT1025 任務,優先級為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];									//發送緩沖區
	INT8U ack = 0x02;										//應答字
	INT16U actlen;
	
	for (;;)
	{ 
	   	OSSemPend(Write_Sem, 0, &err);						//等待TaskStart的命令
        err = WritePort1(1, &ack, 200);						//應答PC機
    	if (err == USB_NO_ERR)
    	{													//應答正確
       		err = ReadPort2(256, buff, 200);				//接收要寫入的數據
       		if (err == USB_NO_ERR)
       		{												//接收正確
    			actlen = Write_CAT1025(0xA0, 0, 256, buff); //執行寫入  		
    		    		
    			buff[0] = actlen / 256;
    			buff[1] = actlen % 256;
       			WritePort1(2, buff, 200);					//發送實際寫入的字節數
       		}
   	  	}
    }
}

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


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

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

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


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

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品1024久久| 久久久久久黄色| 成人一区在线观看| 美日韩一区二区三区| 一区二区在线观看免费视频播放| 久久久电影一区二区三区| 日韩精品一区二区三区三区免费| 欧美丝袜自拍制服另类| 欧美在线观看18| 欧美日韩国产一级二级| 欧美一区二区三区婷婷月色| 欧美一区二区三区日韩视频| 日韩欧美一区二区三区在线| 日韩女优av电影在线观看| 26uuu亚洲婷婷狠狠天堂| 精品国产乱码久久久久久图片| 精品日韩99亚洲| 国产日产欧美一区| 亚洲欧美日韩中文播放| 亚洲国产va精品久久久不卡综合| 天天综合色天天综合色h| 久久国产视频网| 丁香婷婷综合色啪| 在线观看91视频| 久久综合久久久久88| 国产精品久久久久久久久免费桃花 | 欧美日本高清视频在线观看| 欧美视频一区在线| 欧美大片一区二区| 欧美国产国产综合| 亚洲蜜臀av乱码久久精品| 亚洲一区二区成人在线观看| 美女视频黄 久久| 国产99久久精品| 欧美三级在线视频| 日韩久久久久久| 久久久国际精品| 亚洲成人av一区二区| 国产尤物一区二区| 91黄色在线观看| 精品久久人人做人人爽| 亚洲欧洲精品一区二区精品久久久| 亚洲成人av中文| 成人三级在线视频| 日韩午夜中文字幕| 亚洲视频每日更新| 六月丁香婷婷久久| 欧美亚洲国产一区二区三区| 久久久国产精品午夜一区ai换脸| 亚洲欧美一区二区三区极速播放| 精品在线免费观看| 精品视频在线免费看| 国产精品久久久久久久久免费相片| 日本成人超碰在线观看| 不卡一区二区三区四区| 精品久久久久一区| 日韩精品电影一区亚洲| 色婷婷综合久久久久中文 | 一区二区三区高清不卡| 国产很黄免费观看久久| 欧美美女一区二区三区| 亚洲免费伊人电影| 成人激情午夜影院| 精品国产sm最大网站免费看| 亚洲成av人**亚洲成av**| 午夜久久电影网| 国产精品18久久久久久久久久久久| 欧美亚洲精品一区| 中文字幕亚洲一区二区va在线| 麻豆成人av在线| 99久久99久久精品免费看蜜桃| 26uuu精品一区二区三区四区在线| 一区二区久久久久久| 成人免费观看视频| 中文字幕免费观看一区| 国产在线一区观看| 欧美一区二区三区啪啪| 亚洲免费资源在线播放| 色综合久久综合网欧美综合网| 欧美国产日本韩| 久久国内精品视频| 久久综合九色综合97婷婷女人| 日韩av中文在线观看| 欧美一区二区黄| 久久精品久久综合| 久久先锋影音av| 国产酒店精品激情| 国产精品伦理一区二区| 成人av网站在线观看| 国产精品高潮呻吟| 色成年激情久久综合| 亚洲综合999| 欧美午夜在线一二页| 亚洲777理论| 欧美一区二区三区啪啪| 狠狠色狠狠色综合日日91app| 精品国产成人在线影院| 粉嫩一区二区三区在线看| 亚洲欧洲一区二区三区| 欧美色成人综合| 老鸭窝一区二区久久精品| 久久先锋影音av鲁色资源网| 国产电影一区在线| 一区二区理论电影在线观看| 91精品欧美福利在线观看| 精品亚洲国内自在自线福利| 国产欧美日产一区| 91麻豆蜜桃一区二区三区| 亚欧色一区w666天堂| 精品国产乱码久久| 成人不卡免费av| 一区二区在线看| 日韩免费高清电影| 成人h动漫精品| 日韩精品成人一区二区在线| 国产精品情趣视频| 3d成人动漫网站| 国产69精品一区二区亚洲孕妇| 亚洲老妇xxxxxx| 日韩精品自拍偷拍| 91一区二区三区在线观看| 亚洲国产综合91精品麻豆| 久久亚洲捆绑美女| 欧美日韩亚洲丝袜制服| 国产麻豆欧美日韩一区| 一区二区三区欧美亚洲| 国产色综合久久| 日韩丝袜美女视频| 在线看一区二区| 高清视频一区二区| 麻豆成人综合网| 亚洲午夜一区二区三区| 中文子幕无线码一区tr| 日韩精品一区二区三区在线| 在线观看视频一区二区欧美日韩| 国产原创一区二区| 日韩成人dvd| 亚洲精品欧美综合四区| 国产免费观看久久| 日韩免费视频一区| 91精品在线观看入口| 欧美无砖砖区免费| 色噜噜狠狠成人网p站| 成人在线视频首页| 国产风韵犹存在线视精品| 青草av.久久免费一区| 亚洲一区二区三区国产| 日韩美女精品在线| 中文字幕一区二区三区蜜月 | 国产日韩欧美高清在线| 精品国产制服丝袜高跟| 欧美一级理论片| 日韩一级成人av| 欧美大片拔萝卜| 欧美精品一区二区三区一线天视频| 91精品国产综合久久久久| 欧美日韩高清不卡| 欧美高清视频一二三区| 91精品国产综合久久久久久久久久 | 久久综合色鬼综合色| 欧美电影免费观看高清完整版在线 | 91在线你懂得| a级高清视频欧美日韩| 不卡一区中文字幕| 色欧美乱欧美15图片| 日本乱人伦一区| 欧美日韩免费视频| 日韩欧美成人激情| 久久久久久97三级| 亚洲色图欧洲色图| 亚洲午夜激情网页| 日韩电影免费在线看| 国模无码大尺度一区二区三区| 国产成人精品免费视频网站| 成人avav影音| 6080日韩午夜伦伦午夜伦| 日韩你懂的电影在线观看| 久久精品视频一区二区三区| 欧美国产一区视频在线观看| 亚洲免费在线观看| 免费观看成人av| av亚洲产国偷v产偷v自拍| 欧美丝袜自拍制服另类| 久久综合九色综合欧美98| 中文字幕中文字幕一区| 日韩极品在线观看| 国产成人精品一区二区三区四区| 91网站黄www| 欧美va亚洲va香蕉在线| 亚洲欧洲av一区二区三区久久| 亚洲国产一二三| 国产91丝袜在线播放0| 欧美影视一区二区三区| 精品av久久707| 一区二区三区欧美日| 国产一区二区不卡老阿姨| 91国偷自产一区二区开放时间| 欧美成人aa大片| 亚洲资源在线观看| 国产91丝袜在线播放九色|