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

📄 miniisa.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			
** Last modified Date:  
** Last Version:		1.0
** Descriptions:	MiniISA基本操作函数	
**
**------------------------------------------------------------------------------------------------------
** Created by:			
** Created date:		
** Version:				
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/


#include "config.h"


/*
******************************************************************************************
** Function name:  void MISARst(uint32 time)
** Descriptions:   复位MiniISA总线
** Input:          复位时间(根据系统TICK设定)
** Output:         无 
******************************************************************************************
*/
void MISARst(uint32 time)
{
    uint8 tmp;
        
    tmp =  MISA_SYS_CFG;
    tmp &= 0xFE;
    
    MISA_SYS_CFG = tmp;                                    // RESET脚输出低电平
    OSTimeDly(time);
    MISA_SYS_CFG = tmp | 0x01;                             // RESET脚输出高电平
            
}

/*
******************************************************************************************
** Function name: void MISAInit(void)
** Descriptions:  初始化MiniISA总线
** Input:         
** Output:        无 
******************************************************************************************
*/
void MISAInit(void)
{
	uint8 tmp;
	
	tmp = MISA_IRQStat;                                    // 清中断标志
    MISA_IntEn = 0x0F;                                     // 使能所有IRQ通道
    //while(1){
    MISARst (200);
    //}
    MISA_SYS_CFG |= 0x02;                                  // MiniISA中断总使能        
}

/*
******************************************************************************************
** Function name: void EMCInit(void) 
** Descriptions:  初始化外部总线
** Input:         
** Output:        无 
******************************************************************************************
*/
void EMCInit(void)                   
{
   //uint32 tmp;
   
   PCONP |= 0x00000800; 	                               // 打开EMC控制器
   PINSEL4 |= 0x01<<28;                                                /*  CS2                         */
   PINSEL6 = 0x55555555;                                               /*  D0--D15                     */
   PINSEL8 = 0x55555555;                                               /*  A0--A15                     */
   PINSEL9 = 0x55555555;                                               /*  A19--A23,nOE,nWE            */
    
    //EMCControl = 0x01;                                                  /*  使能EMC、禁止映象           */
                                                                        /*  字节状态位PB为1,nOE读、nWR写*/
   EMCStaticConfig2 = 0x00000080;                                                                     /*     16位数据总线,使用延时       */     
   EMCStaticWaitWen2  = 0x0;//f;                                            /*  写使能延时为                */
   EMCStaticWaitOen2  = 0x0;// 0xf;                                           /*  从器件输出使能延时为        */
   EMCStaticWaitRd2   = 0x1f;// 0x2;                                          /*  延时        后再读          */
   EMCStaticWaitPage2 = 0x0;                                            /*  页读写转换时间为            */
   EMCStaticWaitWr2   = 0x1f;// 0x4;                                          /*  写失效时间为                */
   EMCStaticWaitTurn2 = 0x0;
   EMCControl = 0x00000001;

  
 }


/*
******************************************************************************************
** Function name: void WriteBus(const uint8 *str, uint8 base, uint8 len)
** Descriptions:  写总线
** Input:         str  写入数据指针
**                base 起始地址
**                len  长度
** Output:        无 
******************************************************************************************
*/
void WriteBus(const uint8 *str, uint8 base, uint8 len)
{
	uint8 i;
	for (i=0; i<len; i++)
	{
		 *(volatile unsigned char *)(MISA_BASE_ADDR + base + i) = str[i]; 
	}
}


/*
******************************************************************************************
** Function name: void ReadBus(uint8 *info, uint8 base, uint8 len)
** Descriptions:  读总线
** Input:         info 读取数据缓存首地址
**                base 起始地址
**                len  字节数
** Output:        无 
******************************************************************************************
*/
void ReadBus(uint8 *info, uint8 base, uint8 len)
{
	uint8 i;	
	for (i=0; i<len; i++)
	{
		info[i] = *(volatile unsigned char *)(MISA_BASE_ADDR + base + i); 
	}
}

/*
******************************************************************************************
** Function name: void InitExInt(void)
** Descriptions:  初始化外部中断0 (EINT0)
** Input:         
** Output:        无 
******************************************************************************************
*/
void InitExInt(void)
{
	PINSEL4 = PINSEL4 & (~(0x03 << 20)) | (0x01 << 20);	   // P2.10连接EINT0
	EXTINT |= 0xf; 						                   // 清外部中断0中断标志	
	EXTMODE |= 0x01;                                      
	EXTPOLAR = 0x00;
	
	SetVICIRQ(0x14, 14, (uint32)Eint0_Exception);          // 初始化VIC		
}

/*
******************************************************************************************
** Function name: void Eint0_Exception(void)
** Descriptions:  MiniISA中断函数
** Input:         
** Output:        无 
******************************************************************************************
*/
void Eint0_Exception(void)
{
	uint8 tmp;
	
	tmp = MISA_IRQStat & 0xf;
	if (tmp & 0x01)                                        
	{
		Int8016A();                                        // 8016A使用IRQ0	
	}
	if (tmp & 0x02)
	{                                                      // 针对不同中断号的处理 
	
	}
	if (tmp & 0x04)
	{
	
	}
	if (tmp & 0x08)
	{
	
	}

	EXTINT = 1<<0;						                   // 清外部中断0中断标志		
	VICVectAddr = 0x00;					                   // 通知VIC中断处理结束
}


⌨️ 快捷键说明

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