⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cir.c

📁 某个ARM9板子的实际bootloader 对裁剪
💻 C
字号:
/***************************************************************************** Copyright  Storlink Corp 2005.  All rights reserved.                *--------------------------------------------------------------------------* Name			: cir.c* Description	: *		Handle device driver** History**	Date		Writer		Description*	-----------	-----------	-------------------------------------------------*	07/13/2006	Middle Huang	Create*****************************************************************************/#include <define.h>#include <board_config.h>#include <sl2312.h>#include "cir.h"void cir_init(int mode);/*----------------------------------------------------------------------* 	flash_init*----------------------------------------------------------------------*/int sl_cir_init(void){	if((CIR_IP_ID&0xFFFFFF00)!=STORLINK_CIR_ID){		printf("Storlink IR Module Not Found!!\n");		return -1;							// Storlink CIR not found!!	}			if(CIR_STATUS_REG&BIT(2))		// First Power On	{		printf("Storlink CIR Initialization\n");		printf("Please reboot now.");		cir_init(TV1_PROTOCOL);	}	}void cir_init(int mode){	unsigned int baud;	unsigned int reg_v;		if(mode==VCC_PROTOCOL) {			// VCR-33		/*=================== Set RX/TX baud rate ==================*/		baud = VCC_BAUD*EXT_CLK ;		CIR_CTR_REG &= 0x0000FFE8 ;		CIR_CTR_REG |= (baud << 16) |BIT(4);		CIR_TX_CTR_REG = 0x0 ;		CIR_CTR_REG |= (baud << 16);					/*=================== Set Power key ==================*/		CIR_PWR_REG = VCR_KEY_POWER;		CIR_PWR_EXT_REG = 0;				/*=============== Set Carrier Frequency ==============*/		CIR_TX_FEQ_REG = (unsigned int)(EXT_CLK/CARR_FREQ);			CIR_CTR_REG &= 0xFFFF00FF;		CIR_CTR_REG |= (VCC_H_ACT_PER<<12)|(VCC_L_ACT_PER<<8);			CIR_STATUS_REG &= 0xFFC0FFFF;		CIR_STATUS_REG |= VCC_DATA_LEN<<16 ;		CIR_TX_CTR_REG &= 0xFFFF0000;					// Set TX para		CIR_TX_CTR_REG |= (VCC_H_ACT_PER<<12)|(VCC_L_ACT_PER<<8)|(VCC_DATA_LEN);		CIR_TX_FEQ_REG = (unsigned int)(EXT_CLK/CARR_FREQ);		}	else if(mode==TV1_PROTOCOL) {			// TV1-26		/*=================== Set RX/TX baud rate ==================*/		baud = TV1_BAUD*EXT_CLK ;		CIR_CTR_REG &= 0x0000FFE8 ;		CIR_CTR_REG |= (baud << 16) | BIT(4);		CIR_TX_CTR_REG = 0x0 ;		CIR_CTR_REG |= (baud << 16);			/*=================== Set Power key ==================*/		CIR_PWR_REG = TV1_KEY_POWER;		CIR_PWR_EXT_REG = TV1_KEY_POWER_EXT;			/*=============== Set Carrier Frequency ==============*/		CIR_TX_FEQ_REG = (unsigned int)(EXT_CLK/CARR_FREQ);			CIR_CTR_REG &= 0xFFFF00FF;		CIR_CTR_REG |= (TV1_H_ACT_PER<<12)|(TV1_L_ACT_PER<<8);		CIR_STATUS_REG &= 0xFFC0FFFF;		CIR_STATUS_REG |= TV1_DATA_LEN<<16 ;		CIR_TX_CTR_REG &= 0xFFFF0000;					// Set TX para		CIR_TX_CTR_REG |= (TV1_H_ACT_PER<<12)|(TV1_L_ACT_PER<<8)|(TV1_DATA_LEN);		CIR_TX_FEQ_REG = (unsigned int)(EXT_CLK/CARR_FREQ);	}		CIR_CTR_REG |= BIT(0);		// Initial complete	CIR_STATUS_REG &= ~BIT(1);	// Clear Interrupt	hal_delay_us(10*1000);		reg_v = PWR_CTRL_REG;	hal_delay_us(10*1000);	PWR_CTRL_REG = reg_v | BIT(2) |BIT(1);	// Clear cir interrupt;	hal_delay_us(10*1000);	reg_v &= ~BIT(1);	reg_v |= BIT(0);	PWR_CTRL_REG = reg_v|BIT(2);	// Power off machine because of first power on		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -