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

📄 miniisa.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
#include "config.h"


 
void (*IRQ_func[4])(void);





uint32 Install_IRQFunc(uint8 no, uint32 func)
{
   if(no < 4)
   {
        IRQ_func[no] =(void (*)())func; 
        return OPR_OK;
   }
   return OPR_ERR;
}






void IRQ_Def(void)
{
    return;
}

 void  MISA_ISR(void) 
{
    uint8 IRQ_Stat;
    uint8 i;
    
    IRQ_Stat = MISA_IRQStat;
    
    for(i = 0; i < 4; i++)
    {
        if((IRQ_Stat & (0x01<<i))!= 0) //如果IRQ_Stat的相应位为1,则执行相应的用户服务函数
        {
            (*IRQ_func[i])();
        }
    }
     
    VICVectAddr = 0;
}




/*********************************************************************************************************
** Function name: void MISAInit(void) 
** Descriptions:  初始化MiniISA总线
** Input:         none
** Output:        none
** Notice: 		  要根据不同的平台进行移植.
*********************************************************************************************************/
void MISAInit(void)
{
    uint8 i;
    uint8 tmp;
      
    for(i = 0; i < 4; i++)
    {
        IRQ_func[i] =IRQ_Def;     
    }    
    
    tmp =  MISA_IRQStat;   //清零IRQStat中断状态寄存器
    
    MISA_IntEn = 0x0F;     //使能所有IRQ通道
    
    MISA_SYS_CFG = 0x00;   //RESET脚输出高电平
   	OSTimeDly(OS_TICKS_PER_SEC/2);
    
    /*复位总线 */
    MISA_SYS_CFG = 0xff;   //RESET脚输出低电平
	OSTimeDly(OS_TICKS_PER_SEC/2);
    MISA_SYS_CFG = 0x01;   //RESET脚输出高电平
            
    
    MISA_SYS_CFG |= 0x02;   //使能总线桥接器IRQ输出        
}


/*********************************************************************************************************
** Function name: void EMCInit(void) 
** Descriptions:  初始化外部总线
** Input:         none
** Output:        none
** Notice: 		  要根据不同的平台进行移植.
*********************************************************************************************************/
void EMCInit(void)                   
{
   
   //uint32 tmp;
   
   PCONP |= 0x00000800; 	                               // 打开EMC控制器
   PINSEL9 |= 0x01<<28;                                                /*  CS0                         */
   PINSEL6 = 0x55555555;                                               /*  D0--D15                     */
   PINSEL8 = 0x55555555;                                               /*  A0--A15                     */
   PINSEL9 = 0x55555555;                                               /*  A19--A23,nOE,nWE            */
    
   EMCStaticConfig0 = 0x00000080;                                                                     /*     16位数据总线,使用延时       */     
   EMCStaticWaitWen0  = 0x0;//f;                                            /*  写使能延时为                */
   EMCStaticWaitOen0  = 0x0;// 0xf;                                           /*  从器件输出使能延时为        */
   EMCStaticWaitRd0   = 0x1f;// 0x2;                                          /*  延时        后再读          */
   EMCStaticWaitPage0 = 0x0;                                            /*  页读写转换时间为            */
   EMCStaticWaitWr0   = 0x1f;// 0x4;                                          /*  写失效时间为                */
   EMCStaticWaitTurn0 = 0x0;
   EMCControl = 0x00000001;

 }

⌨️ 快捷键说明

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