target.c

来自「UcosiiForLPC21xx 在ads1.2 建立的工程」· C语言 代码 · 共 136 行

C
136
字号

#define IN_TARGET
#include "config.h"
#include "harder.h"
#include "LibTimer.h"

/*********************************************************************************************************
** 函数名称: FIQ_Exception
** 功能描述: 快速中断异常处理程序,用户根据需要自己改变程序
********************************************************************************************************/
        void FIQ_Exception(void)
{
    while(1);
}

/*********************************************************************************************************
** 函数名称: Timer0
** 功能描述: 定时器0中断服务程序
** 输 入: 无
**
** 输 出: 无
**         
** 全局变量: 无
** 调用模块: OSTimeTick
********************************************************************************************************/
        void IRQCTimer0(void)
{
   #if OS_CRITICAL_METHOD == 3                                
    OS_CPU_SR  cpu_sr;
#endif


    OS_ENTER_CRITICAL();
    T0IR = 0x01;
    VICVectAddr = 0;            // 通知中断控制器中断结束
    OS_EXIT_CRITICAL();
    OSTimeTick();
}


/*********************************************************************************************************
** 函数名称: TargetInit
** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
** 输 入: 无
**
** 输 出: 无
**         
** 全局变量: 无
** 调用模块: 无
********************************************************************************************************/
        void TargetInit(void)
{

    extern void IRQASMTimer0(void);
    
    T0IR  = 0xffffffff;
    T0TC  = 0;
    T0TCR = 0x01;
    T0MCR = 0x03;
    T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
    
    VICIntEnClr =  (1 << 4);
    VICVectAddr0 = (uint32)IRQASMTimer0;
    VICVectCntl0 = (0x20 | 0x04);
    VICIntEnable = (1 << 4);
       
  }
  
  

/*********************************************************************************************************
** 函数名称: TargetResetInit
** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
** 输 入: 无
**
** 输 出: 无
**         
** 全局变量: 无
** 调用模块: 无
********************************************************************************************************/
        void TargetResetInit(void)
{
  
/* 设置系统各部分时钟 */
    PLLCON = 1;
#if ((Fcclk / 4) / Fpclk) == 1
    VPBDIV = 0;
#endif
#if ((Fcclk / 4) / Fpclk) == 2
    VPBDIV = 2;
#endif
#if ((Fcclk / 4) / Fpclk) == 4
    VPBDIV = 1;
#endif


#if (Fcco / Fcclk) == 2
    PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
    PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
    PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
    PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
    PLLFEED = 0xaa;
    PLLFEED = 0x55;
    while((PLLSTAT & (1 << 10)) == 0);
    PLLCON = 3;
    PLLFEED = 0xaa;
    PLLFEED = 0x55;

/* 设置存储器加速模块 */
    MAMCR = 2;
#if Fcclk < 20000000
    MAMTIM = 1;
#else
#if Fcclk < 40000000
    MAMTIM = 2;
#else
    MAMTIM = 3;
#endif
#endif


    VICIntEnClr = 0xffffffff;
    VICVectAddr = 0;
    VICIntSelect = 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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