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

📄 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通道				 */

    MISARst (100);

    MISA_SYS_CFG |= 0x02;                                  				/* MiniISA中断总使能 			 */       
}

/**********************************************************************************************************
** Function name: void EMCInit(void) 
** Descriptions:  初始化外部总线
** Input:         
** Output:        无 
**********************************************************************************************************/
void EMCInit(void)                   
{
  
   PCONP |= 0x00000800; 	                               				/*  打开EMC控制器				 */
   PINSEL9 |= 0x01<<28;                                                	/*  CS0                          */
   PINSEL6 = 0x55555555;                                               	/*  D0--D15                      */
   PINSEL8 = 0x55555555;                                               	/*  A0--A15                      */
   PINSEL9 = 0x55555555;                                               	/*  A19--A23,nOE,nWE             */
    
                                    									/*  使能EMC、禁止映象            */
                                                                        /*  字节状态位PB为1,nOE读、nWR写*/
   EMCStaticConfig0 = 0x00000080;                                       /*  16位数据总线,使用延时    	 */     
   EMCStaticWaitWen0  = 0x0;                                       		/*  写使能延时为                 */
   EMCStaticWaitOen0  = 0x0;                                     		/*  从器件输出使能延时为         */
   EMCStaticWaitRd0   = 0x1f;                                   		/*  延时        后再读           */
   EMCStaticWaitPage0 = 0x0;                                            /*  页读写转换时间为             */
   EMCStaticWaitWr0   = 0x1f;                                  			/*  写失效时间为                 */
   EMCStaticWaitTurn0 = 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 Eint0_Exception(void);

void InitExInt(void)
{
	PINSEL4 = PINSEL4 & (~(0x03 << 20)) | (0x01 << 20);	   				/* 	P2.10连接EINT0				 */
	EXTINT |= 0xf; 						                   				/* 	清外部中断0中断标志			 */
	EXTMODE |= 0x01;                                      
	EXTPOLAR = 0x00;
	
	SetVICIRQ(14, 4, (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) {                                        
	
		OSSemPost(MiniSem);                                      		/* 	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 + -