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

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

?? main.c

?? YL9200開發板的測試代碼,詳細請下載后細看
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "AT91RM9200.h"
#include "lib_AT91RM9200.h"
#include "def.h"
#include "config.h"
#include "slib.h"
#include "console.h"
#include "twi.h"
#include "params.h"

//void test_s1d13506(U32 a1,U32 a2);
void Test_SED1356_LCD_640_480( U32 m , U32 n );
void Test_SED1356_VGA_640_480( U32 m , U32 n );
void Test_SED1356_LCD_240_320( U32 m , U32 n );
// The following DBGU ASM handler is defined in asm_isr.s
//extern void AT91F_ASM_DBGU_Handler(void);

U32 downloadAddress, downloadFileSize;

//char hex_ch[16] = {'0','1','2','3','4','5','6','7',
//				   '8','9','a','b','c','d','e','f'};

static U8 OurEmacAddr[6] =
{
	0x01, 0x02, 0x03, 0x04, 0x05, 0x06
};

volatile U32 StTick;
void ( *StIrqHandler )( void );
void ( *DbguIrqHandler )( void );

static void SysIrqHandler( void )
{
	/* ========== Systimer interrupt ============== */
	if ( AT91F_ST_GetInterruptMaskStatus( AT91C_BASE_ST ) & AT91C_ST_PITS )
	{
		if ( AT91C_BASE_ST->ST_SR & AT91C_ST_PITS )
		{
			StTick++;
			if ( *StIrqHandler )
				( *StIrqHandler ) ();
			return;
		}
	}

	if ( *DbguIrqHandler )
		( *DbguIrqHandler ) ();
}

//統一的中斷入口處理
void __irq irq_handler( void )
{
	void ( *svr ) ( void );
	AT91PS_AIC ptr = AT91C_BASE_AIC;
	U32 i;
	//	U8 irq_idx;

	//取得中斷入口地址可用AIC_IVR或用AIC_ISR作索引得到AIC_SVR數組中的地址
	i = ptr->AIC_IVR;		//read AIC_IVR
	//	irq_idx = ptr->AIC_ISR&0x1f;
	//邊沿觸發中斷必須以此清中斷
	//	AT91F_AIC_ClearIt(AT91C_BASE_AIC, irq_idx);	

	// Write in the IVR to support Protect Mode
	// No effect in Normal Mode
	// De-assert the NIRQ and clear the source in Protect Mode	
	ptr->AIC_IVR = ( AT91_REG ) ptr;

	//	putch('I');
	//	printf("%x,%x,%x\n", irq_idx, ptr->AIC_IPR, ptr->AIC_CISR);

	svr = ( void ( * ) ( void ) ) i;//ptr->AIC_SVR[irq_idx];
	( *svr ) ();
	AT91F_AIC_AcknowledgeIt( ptr );	//退出中斷前必須應答
}

static void InitBuzzer( void )
{
	int val;
	AT91PS_TC pTC = AT91C_BASE_TC2;

	AT91F_TC2_CfgPMC();
	pTC->TC_IDR = 0xff;	//disable all interrupts
	//select TIMER_CLOCK2 = MCK/8, CPCTRG, up mode, Waveform mode, RB compare set, RC compare clear, software trigger clear
	pTC->TC_CMR = 1 | ( 1 << 10 ) | ( 2 << 13 ) | ( 1 << 15 ) | ( 1 << 24 ) | ( 2 << 26 ) | ( 2UL << 30 );	//must not set EEVT as TIOB!
	val = ( AT91F_PMC_GetMasterClock( AT91C_BASE_PMC , AT91C_BASE_CKGR , 32768 ) >> 3 ) / 2100;
	pTC->TC_RB = val >> 1;
	pTC->TC_RC = val;
	pTC->TC_CCR = 5;	//enable timer-counter and trig it
	/*	
		AT91F_PIO_CfgPeriph(
			AT91C_BASE_PIOA,	// PIO controller base address
			0,					// Peripheral A
			AT91C_PA22_TIOB2);	// Peripheral B
		delay(120);
		AT91F_PIO_CfgOutput(AT91C_BASE_PIOA, AT91C_PIO_PA22);
		//AT91F_PIO_SetOutput(AT91C_BASE_PIOA, AT91C_PIO_PA22);
		AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, AT91C_PIO_PA22);
	*/
}

static void InitPio( void )
{
	//led
	AT91F_PIO_CfgOutput( AT91C_BASE_PIOB , AT91C_PIO_PB8 | AT91C_PIO_PB15 | AT91C_PIO_PB16 | AT91C_PIO_PB17 );
	//AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB8|AT91C_PIO_PB15|AT91C_PIO_PB16|AT91C_PIO_PB17);
	AT91F_PIO_SetOutput( AT91C_BASE_PIOB , AT91C_PIO_PB8 | AT91C_PIO_PB15 | AT91C_PIO_PB16 | AT91C_PIO_PB17 );
	//key
	AT91F_PIO_CfgInput( AT91C_BASE_PIOA , AT91C_PIO_PA24 );
	AT91F_PIO_CfgInput( AT91C_BASE_PIOB , AT91C_PIO_PB1 | AT91C_PIO_PB2 | AT91C_PIO_PB6 );
	AT91F_PIO_CfgOutput( AT91C_BASE_PIOB , AT91C_PIO_PB7 );
	AT91F_PIO_ClearOutput( AT91C_BASE_PIOB , AT91C_PIO_PB7 );
	//buzzer
	InitBuzzer();
}

/****************add by cgf**************************/
//Function:AT91F_RS485_putc
//Object  :Send a character
/*****************************************************/
static void AT91F_RS485_putc(char buffer)
{
	if(buffer=='\n') {
		while(!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_US3));
		AT91F_US_PutChar((AT91PS_USART)AT91C_BASE_US3, '\r');
		delay(1);
	}
	while(!AT91F_US_TxReady((AT91PS_USART)AT91C_BASE_US3));
	AT91F_US_PutChar(AT91C_BASE_US3,buffer);
	delay(5);
}

//*----------------------------------------------------------------------------
//* \fn    puts
//* \brief This function is used to send a string through the DBGU channel (Very low level debugging)
//*----------------------------------------------------------------------------
void AT91F_RS485_puts(char *buffer) // \arg pointer to a string ending by \0
{	
	while(*buffer != '\0') {		
		AT91F_RS485_putc(*buffer++);
	}
}

/****************add by cgf**************************/
//Function:AT91F_RS485_getc()
//Object  :Get a character
/*****************************************************/
char AT91F_RS485_getc()
{
	while(!AT91F_US_RxReady((AT91PS_USART)AT91C_BASE_US3));
	return AT91F_US_GetChar(AT91C_BASE_US3);
}
/****************add by cgf**************************/
//Function:InitRs485
//Object  :Set PIO & PMC for USART2
/*****************************************************/
static void InitRS485(void)
{
	//AT91F_US2_CfgPIO();	//Configure PIO controllers to drive US2 singal
	AT91F_PIO_CfgPeriph(
		AT91C_BASE_PIOA, // PIO controller base address
		0,
		((unsigned int) AT91C_PA5_TXD3    ) |
		((unsigned int) AT91C_PA6_RXD3    )); // Peripheral A); // Peripheral B
		
	AT91F_US3_CfgPMC();	//Enable Peripheral clock in PMC for US2
	//AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, ((U32) 1 << AT91C_ID_US3));
	AT91F_PIO_CfgOutput(AT91C_BASE_PIOB,AT91C_PIO_PB0);
	// Configure USART2 
	AT91F_US_Configure (
		AT91C_BASE_US3,            // USART2 base address
		AT91C_MASTER_CLOCK,        // 48 MHz
		AT91C_US_ASYNC_MODE,//AT91C_US_ASYNC_RS485_MODE ,     // mode Register to be programmed
		115200 ,                     // baudrate to be programmed
		0);                       // timeguard to be programmed
	
	//c=AT91F_RS485_getc();
	
}
/****************add by cgf**************************/
//Function:TestRs485
//Object  :RS485 Test
/*****************************************************/

void TestRs485(U32 a1,U32 a2)
{
	char c;
	InitRS485();

	//AT91F_PIO_SetOutput(AT91C_BASE_PIOB,AT91C_PIO_PB0);//Enable RS485
	//c=AT91F_RS485_getc();
	//while(1)
	//{
	puts("RS485 Test\n");
	
	//}
	c='a';
	puts("Please switch to RS485 connect\n'ESC' key to exit...\n");
	AT91F_US_EnableRx(AT91C_BASE_US3);
	AT91F_US_EnableTx(AT91C_BASE_US3);
	while((getkey()!=ESC_KEY))
	{
		
		AT91F_PIO_SetOutput(AT91C_BASE_PIOB,AT91C_PIO_PB0);
		AT91F_RS485_putc(c);
		while ( !(AT91C_BASE_US3->US_CSR & AT91C_US_TXEMPTY) );
		delay(8000);
	
		AT91F_PIO_ClearOutput(AT91C_BASE_PIOB,AT91C_PIO_PB0);
		c=AT91F_RS485_getc();
		if (c == ESC_KEY)
			break;
		putch(c);
		delay(8000);
	}
	
}
	
	
	

U32 GetFlashID( void );
int SectorProg( U32 begin , U16* data , U32 size );
int SectorRead( U32 begin , U16* data , U32 size );

void start_kernel( U32 , U32 );

static void InitNorFlash( void )
{
//printf("into InitNorFlash\n");
#ifdef	NOR_SUPPORT
	// Setup MEMC to support CS0 = static memory
	AT91C_BASE_EBI->EBI_CSA &= ~1;
	// [D15:0] pull-up
	AT91C_BASE_EBI->EBI_CFGR = ( AT91C_EBI_DBPUC & 0x00 ) | ( AT91C_EBI_EBSEN & 0x00 );

	// Setup Flash 存儲器參數設置CS0-CS7對應SMC2_CSR[0]-SMC2_CSR[7]
	AT91C_BASE_SMC2->SMC2_CSR[0] = ( AT91C_SMC2_NWS & 0x7f ) |
		AT91C_SMC2_WSEN |
		( AT91C_SMC2_TDF & 0x200 ) |
		AT91C_SMC2_BAT |
		AT91C_SMC2_DBW_16 |
		AT91C_SMC2_ACSS_STANDARD;/* |
								 	 AT91C_SMC2_RWSETUP | AT91C_SMC2_RWHOLD; */
	printf( "Nor FLASH ID = %x\n" , GetFlashID() );
#endif
}


static void RunProgFrNor( U32 addr , U32 size )
{
#ifdef	NOR_SUPPORT	
	downloadAddress = 0x20800000;
	downloadFileSize = 0x200000;
//	printf( "Read Program From Nor Flash to 0x%8x, Size 0x%x\n" , downloadAddress , downloadFileSize );
	SectorRead( 0x100000 , ( U16 * ) downloadAddress , downloadFileSize );
	start_kernel( downloadAddress , 0 );
#endif
}

static void WrFileToNor( U32 addr , U32 size )
{
#ifdef	NOR_SUPPORT
	//printf( "Write Data From 0x%8x, Size 0x%x to Nor Flash\n" , addr , size );
	SectorProg( 0x000000 , ( U16 * ) addr , size );
#endif
}


void GetNandFlashChip( void );

static void InitNandFlash( void )
{
#ifdef	NAND_SUPPORT
	AT91F_PIO_CfgPeriph( AT91C_BASE_PIOC , // PIO controller base address
		( unsigned int ) AT91C_PC1_BFRDY_SMOE | ( unsigned int ) AT91C_PC3_BFBAA_SMWE ,	// Peripheral A
		0 );	// Peripheral B

	// Setup MEMC to support CS3 = NAND Flash
	AT91C_BASE_EBI->EBI_CSA |= AT91C_EBI_CS3A_SMC_SmartMedia;
	// [D15:0] pull-up
	AT91C_BASE_EBI->EBI_CFGR = ( AT91C_EBI_DBPUC & 0x00 ) | ( AT91C_EBI_EBSEN & 0x00 );

	// Setup Flash 存儲器參數設置CS0-CS7對應SMC2_CSR[0]-SMC2_CSR[7]
	AT91C_BASE_SMC2->SMC2_CSR[3] = ( AT91C_SMC2_NWS & 0x4 ) |
		AT91C_SMC2_WSEN |
		( AT91C_SMC2_TDF & 0x200 ) |
		AT91C_SMC2_BAT |
		AT91C_SMC2_DBW_8;
	// Enable PIOC clock for input
	AT91F_PMC_EnablePeriphClock( AT91C_BASE_PMC , ( ( unsigned int ) 1 << AT91C_ID_PIOC ) );
	AT91F_PIO_CfgInput( AT91C_BASE_PIOC , AT91C_PIO_PC14 );
	AT91F_PIO_CfgPullup( AT91C_BASE_PIOC , AT91C_PIO_PC14 );
	AT91F_PIO_CfgOutput( AT91C_BASE_PIOC , AT91C_PIO_PC15 );
	//	AT91F_PIO_GetInput(AT91C_BASE_PIOC) & AT91C_PIO_PC14;

	GetNandFlashChip();

	AT91F_PIO_CfgPeriph( AT91C_BASE_PIOC ,	// PIO controller base address
		AT91C_PC6_NWAIT ,	// Peripheral A
		0 );					// Peripheral B

	AT91C_BASE_SMC2->SMC2_CSR[7] = ( AT91C_SMC2_NWS & 4 ) |
		AT91C_SMC2_WSEN |
		( AT91C_SMC2_TDF & 0x100 ) |   //AT91C_SMC2_BAT  |
		//AT91C_SMC2_DBW_16 | AT91C_SMC2_ACSS_1_CYCLE |
	AT91C_SMC2_DBW_16 |
		AT91C_SMC2_ACSS_STANDARD |
		( AT91C_SMC2_RWSETUP & ( 0 << 24 ) ) |
		( AT91C_SMC2_RWHOLD & ( 0 << 28 ) );
#endif
}

#ifdef	IIC_SUPPORT
#define	EEP_RW_CHK_CNT	32
#endif	/* IIC_SUPPORT */

static void InitTwi( void )
{
#ifdef	IIC_SUPPORT
	int loop;
	char data[EEP_RW_CHK_CNT];

	// Configure TWI PIOs
	AT91F_TWI_CfgPIO();
	AT91F_PIO_CfgOpendrain( AT91C_BASE_PIOA , ( unsigned int ) AT91C_PA25_TWD );

	// Configure PMC by enabling TWI clock
	AT91F_TWI_CfgPMC();

	// Configure TWI in master mode
	AT91F_TWI_Configure( AT91C_BASE_TWI );

	// Set TWI Clock Waveform Generator Register	
	AT91F_SetTwiClock( AT91C_BASE_TWI );

	// IIC啟動,先測試IIC讀
	//printf( "EEPREOM address is 0x%x\n" , AT91C_EEPROM_I2C_ADDRESS );

	//	for(loop=0; loop<EEP_RW_CHK_CNT; loop++)
	//		data[loop] = loop;

	// Write and read iic
	//	AT91F_TWI_Write(AT91C_BASE_TWI, 0x0, data, EEP_RW_CHK_CNT);

	// Wait 10 ms before data is written into EEPROM
	//	puts("Wait at least 10 ms before value is written into EEPROM\n");
	//	for (loop=0; loop<100000; loop++);

	for ( loop = 0; loop < EEP_RW_CHK_CNT; loop++ )
		data[loop] = 0;	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品区一区二区| 韩国午夜理伦三级不卡影院| 91色综合久久久久婷婷| 国产精品久久久久久久第一福利| 色域天天综合网| 亚洲色欲色欲www| 欧美精品久久99| 久久aⅴ国产欧美74aaa| 中文字幕亚洲欧美在线不卡| 欧美性大战久久| 日韩成人免费看| 国产欧美一区二区精品性| 欧美亚洲丝袜传媒另类| 男女性色大片免费观看一区二区 | 欧美日本乱大交xxxxx| 激情另类小说区图片区视频区| 国产精品久久久久久久午夜片| 精品视频色一区| 美女视频黄免费的久久 | 国产麻豆9l精品三级站| 一区二区三区在线视频观看58| 91精品在线免费| 91伊人久久大香线蕉| 九九九久久久精品| 一区二区久久久久| 91久久国产最好的精华液| 免费成人在线播放| 丝袜美腿亚洲综合| 亚洲综合视频在线| 一区二区三区中文字幕| 亚洲欧洲日韩av| 中文字幕色av一区二区三区| 欧美国产精品一区二区三区| 2024国产精品视频| 26uuu另类欧美亚洲曰本| 精品日韩欧美一区二区| 日韩亚洲欧美综合| 欧美一二三四在线| 欧美一区二区三区啪啪| 欧美一区二区三区在线看| 欧美日韩国产片| 91麻豆精品国产91久久久更新时间| 欧美日韩视频在线第一区| 欧美性色欧美a在线播放| 欧美少妇一区二区| 欧美三级电影在线看| 欧美人体做爰大胆视频| 91精品麻豆日日躁夜夜躁| 91精品黄色片免费大全| 91精品国产综合久久久久久漫画| 在线播放一区二区三区| 日韩精品一区二区三区蜜臀| 精品福利av导航| 国产午夜精品理论片a级大结局| 久久精品欧美一区二区三区麻豆| 国产亚洲欧美色| 国产精品成人网| 一区二区三区四区在线播放 | 久久精品二区亚洲w码| 久久激情五月激情| 国产电影一区二区三区| 成人黄色国产精品网站大全在线免费观看| 成人综合在线观看| 欧美在线制服丝袜| 欧美一级日韩一级| 国产女人18水真多18精品一级做| 中文字幕五月欧美| 午夜欧美电影在线观看| 国产在线不卡视频| 91女人视频在线观看| 欧美一区二区视频在线观看| 久久久噜噜噜久噜久久综合| 中文字幕永久在线不卡| 午夜av区久久| 国产成a人亚洲精| 欧洲中文字幕精品| 最新高清无码专区| 日韩影院精彩在线| 国产不卡高清在线观看视频| 色综合久久综合| 日韩免费福利电影在线观看| 国产精品午夜电影| 午夜视频一区二区| 国产成人免费xxxxxxxx| 欧美在线综合视频| 日本一区二区三区dvd视频在线| 亚洲黄色小视频| 国产一区二区三区久久悠悠色av | 日韩欧美国产综合| 亚洲欧美视频在线观看| 老司机精品视频线观看86| av电影天堂一区二区在线观看| 欧美福利电影网| 日本一区二区综合亚洲| 丝袜亚洲另类欧美| 91污在线观看| 久久久综合网站| 日韩高清欧美激情| 99久久精品久久久久久清纯| 欧美大尺度电影在线| 亚洲视频小说图片| 国产在线看一区| 欧美久久久久久蜜桃| 综合久久一区二区三区| 精品一区二区av| 欧美日韩精品欧美日韩精品 | 欧美videossexotv100| 一级做a爱片久久| 春色校园综合激情亚洲| 精品国产91亚洲一区二区三区婷婷| 亚洲黄色av一区| 91一区二区在线| 国产亚洲成年网址在线观看| 日韩在线a电影| 在线观看亚洲专区| 亚洲欧美自拍偷拍色图| 国产成人综合亚洲91猫咪| 日韩一卡二卡三卡国产欧美| 一区二区在线看| 91浏览器入口在线观看| 国产精品丝袜一区| 国产乱妇无码大片在线观看| 日韩视频在线观看一区二区| 日精品一区二区| 欧美性videosxxxxx| 亚洲精品欧美专区| 91香蕉国产在线观看软件| 国产精品美女久久久久久| 国产成人精品综合在线观看 | 亚洲国产一区在线观看| 91捆绑美女网站| 亚洲视频香蕉人妖| 91丝袜美腿高跟国产极品老师| 中文字幕精品一区二区精品绿巨人| 国产一区二区三区电影在线观看| 欧美不卡123| 国产又粗又猛又爽又黄91精品| 日韩欧美一卡二卡| 狠狠色综合色综合网络| 欧美大片在线观看一区| 久久精品国产精品青草| 久久综合九色综合欧美就去吻 | 久久99精品久久久久久| 欧美变态tickle挠乳网站| 蜜桃av一区二区| 精品1区2区在线观看| 国产一区 二区| 中文字幕免费观看一区| 91在线视频免费观看| 亚洲视频一区在线| 欧洲亚洲国产日韩| 日韩av在线播放中文字幕| 欧美一区午夜视频在线观看 | 另类小说色综合网站| 日韩精品一区二区三区四区视频 | av中文字幕不卡| 亚洲女人的天堂| 欧美日本乱大交xxxxx| 韩国一区二区三区| 中文字幕在线不卡视频| 欧美三级欧美一级| 久久国产精品99久久人人澡| 国产亚洲一区二区三区四区| 一本久道中文字幕精品亚洲嫩| 亚洲在线视频一区| 精品人在线二区三区| 成人av在线网| 亚洲成a人片在线不卡一二三区| 欧美va亚洲va香蕉在线| 成人黄色在线视频| 五月婷婷欧美视频| 久久久蜜臀国产一区二区| 91免费看片在线观看| 日本不卡一二三| 中文乱码免费一区二区| 在线视频综合导航| 九九视频精品免费| 亚洲精品免费电影| 日韩精品综合一本久道在线视频| 成人黄色免费短视频| 日韩高清不卡一区| 亚洲国产精品成人综合| 欧美性高清videossexo| 国产高清视频一区| 一区二区激情小说| 久久久久久久性| 欧美羞羞免费网站| 粉嫩在线一区二区三区视频| 五月综合激情日本mⅴ| 欧美国产一区二区在线观看| 欧美裸体一区二区三区| www.色精品| 精一区二区三区| 亚洲国产日韩在线一区模特| 国产欧美日韩另类一区| 欧美日韩精品免费| 9色porny自拍视频一区二区| 久久99精品视频| 午夜亚洲国产au精品一区二区| 中文乱码免费一区二区|