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

📄 dm_usb_bfinit.c

📁 blackfin 的 usb devise 的代码 很基础
💻 C
字号:
/************************************************************************** 
文件名称: dm_usb_bfinit.c
作者: Andy
版本: 0.1 
创建时间 : 2007-11 
描述: 
	文件实现了USB工作下ADSP-BF533的一些常用初始化函数
修改历史: 
****************************************************************************/ 

#ifndef __CPU_H__
#define __CPU_H__

#include <ccblkfn.h>
#include <cdefBF533.h>
#include <sys/exception.h>
#include "bf5xx.h"
#include "cpu.h"

/**********************************************************************************
* 名称 :isp1362_ebiuinit
* 功能 :初始化BF533 EBIU
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
void isp1362_ebiuinit(void)
{
	*pEBIU_AMBCTL0	= 0x7bb07bb0;
	*pEBIU_AMBCTL1	= 0xffc27bb0;
	*pEBIU_AMGCTL	= 0x000f;
}

/**********************************************************************************
* 名称 :usbpf_init
* 功能 :初始化BF533的PF接口
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
void usbpf_init(void)
{//rising edge
	// set up programmable flags
	*pFIO_DIR		&= ~IRQ_PF;//0=Input 1=Output
	*pFIO_EDGE		|= IRQ_PF;//0-level,1-edge

	*pFIO_POLAR		|= IRQ_PF;//0-high or rising edge,1-low or falling edge 
    *pFIO_BOTH      &= ~IRQ_PF;    //0-sigle edge, 1-both edge
	*pFIO_INEN		|= IRQ_PF; //0-input buffer disable,1-input buffer enable
	
	*pFIO_MASKB_D   |= IRQ_PF;
}

/**********************************************************************************
* 名称 :timer_init
* 功能 :初始化内核时钟和系统时钟
* 入口参数 :pmsel pssel 设置参数
* 出口参数 :无
***********************************************************************************/
void timer_init(void)
{
	*pTIMER0_CONFIG		= 0x0019;
	*pTIMER0_PERIOD		= 0x001e8800;
	*pTIMER0_WIDTH		= 0x00000040;
	*pTIMER_DISABLE		= 0x0001;
	*pTIMER_ENABLE		= 0x0001;

}

unsigned char led_value = 0xff;
int timer_cnt = 0;
/**********************************************************************************
* 名称 :EX_INTERRUPT_HANDLER(Timer0_ISR)
* 功能 :定时器中断函数
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
EX_INTERRUPT_HANDLER(Timer0_ISR)
{
    // confirm interrupt handling
	*pTIMER_STATUS = 0x0001;
	timer_cnt++;

	if (timer_cnt%2)
		Led4_On();
	else
		Led4_Off();		

	usb_isr();
}


int int_cnt = 0;
/**********************************************************************************
* 名称 :EX_INTERRUPT_HANDLER(PFB_ISR)
* 功能 :外部中断函数
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
EX_INTERRUPT_HANDLER(PFB_ISR)		// <--|declaration in  exception.h -->
{										//    |declaration with _pragma(interrupt) the ISR Startaddress 					//close Interrupt
	*pFIO_FLAG_C = IRQ_PF;           // NIC_INT connected to PFx 

	usb_isr();
	int_cnt++;

	if (int_cnt%2)
		Led4_On();
	else
		Led4_Off();
}


/**********************************************************************************
* 名称 :irq_init
* 功能 :初始化中断函数
* 入口参数 :无
* 出口参数 :无
***********************************************************************************/
void irq_init(void)
{
	// configure interrupt
	*pSIC_IAR0 = *pSIC_IAR0 & 0x0fffffff | 0x30000000;	
	*pSIC_IAR1 = *pSIC_IAR1 & 0xffffffff | 0x00000000;	
	*pSIC_IAR2 = *pSIC_IAR2 & 0xfff0fff0 | 0x00040006;	// map PFB -> ID5 IVG12 ;Timer0 -> ID4 IVG11;

	register_handler(ik_ivg11, PFB_ISR);
//	register_handler(ik_ivg13, Timer0_ISR);				// Timer0 ISR -> IVG 11

	*pSIC_IMASK=*pSIC_IMASK | 0x00110000;
}

#endif

⌨️ 快捷键说明

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