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

📄 bsp.c

📁 keil编译器下uocs在lpc2214上的移植
💻 C
📖 第 1 页 / 共 2 页
字号:
*/

static  void  Tmr_TickInit (void)
{
    CPU_INT32U  pclk_freq;
    CPU_INT32U  tmr_reload;

                                                                /* 初始化TIMER0的VIC*/
    VICIntSelect &= ~(1 << VIC_TIMER0);                         /* TIMER0中断使能*/
    VICVectAddr2  = (CPU_INT32U)Tmr_TickISR_Handler;            /* 设置中断向量地址*/
    VICVectCntl2  = 0x20 | VIC_TIMER0;                          /* 允许中断*/
    VICIntEnable  = (1 << VIC_TIMER0);                          /* 中断使能*/
																
    pclk_freq     = BSP_CPU_PclkFreq();							/*读取CPU主频*/
    tmr_reload    = pclk_freq / OS_TICKS_PER_SEC;
    T0TCR         = 0;                                          /* 停TIME0*/
    T0PC          = 0;                                          /* 清TIME0的预分频寄存器*/

    T0MR0         = tmr_reload;
    T0MCR         = 3;                                          /* Interrupt on MR0 (reset TC)                              */

    T0CCR         = 0;                                          /* Capture is disabled.                                     */
    T0EMR         = 0;                                          /* No external match output.                                */
    T0TCR         = 1;                                          /* Enable timer 0                                           */
}


/*
*********************************************************************************************************
*                                       Tmr_TickISR_Handler()
*
* 功能描述: 处理用来产生uC/OS-II节拍的定时器中断
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/

void  Tmr_TickISR_Handler (void)
{
    T0IR = 0xFF;     /*复位TIME0的所有中断*/

    OSTimeTick();    /* 调用uC/OS-II的OSTimeTick()*/
}


/*
*********************************************************************************************************
*********************************************************************************************************
**                                          本地函数
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                        BSP_PLL_Init()
*
* 功能描述: 设置和激活锁相环PLL
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/

static  void  BSP_PLL_Init (void)
{
#if OS_CRITICAL_METHOD == 3  /* 为CPU的状态寄存器分配存储空间*/
    OS_CPU_SR   cpu_sr = 0;
#endif
    OS_ENTER_CRITICAL();
    /* 设置系统各部分时钟 */
/* Set system timers for each component */
    	PLLCON = 1;
	#if (Fpclk / (Fcclk / 4)) == 1
    	VPBDIV = 0;
	#endif
	#if (Fpclk / (Fcclk / 4)) == 2
    	VPBDIV = 2;
	#endif
	#if (Fpclk / (Fcclk / 4)) == 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;

	/* 设置存储器加速模块 */
	/* Set memory accelerater module*/
    	MAMCR = 0;
	#if Fcclk < 20000000
    	MAMTIM = 1;
	#else
	#if Fcclk < 40000000
    	MAMTIM = 2;
	#else
    	MAMTIM = 3;
	#endif
	#endif
    	MAMCR = 2;
    OS_EXIT_CRITICAL();
}


/*
*********************************************************************************************************
*                                          BSP_IO_Init()
*
* 功能描述: 初始化GPIO引脚.
*
* 入口参数: 无
*
* 返回参数: 无
*
* 注意事项:
*********************************************************************************************************
*/

static  void  BSP_IO_Init (void)
{
	PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
	#ifdef __IN_CHIP    
    PINSEL2 = 0x0f814910;
	#else
	PINSEL2 = 0x0f814914;
	#endif

	BCFG0=0x1000ffef;
	BCFG1=0x1000ffef;

}


/*
*********************************************************************************************************
*                                             BSP_MAM_Init()
*
* 功能描述: 初始化存储器加速模块
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/

//static  void  BSP_MAM_Init (void)
//{
//    MAMCR  = 0x00;                                              /* Disable the Memory Accelerator Module                    */
//    MAMTIM = 0x03;                                              /* MAM fetch cycles are 3 CCLKs in duration                 */
//    MAMCR  = 0x02;                                              /* Enable the Memory Accelerator Module                     */
//}

/*
*********************************************************************************************************
*********************************************************************************************************
**                                            VIC FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                        中断控制器的设置
*********************************************************************************************************
*/

static  void  VIC_Init (void)
{
    VICIntEnClear = 0xFFFFFFFF;/*禁止所有中断*/
    VICProtection = 0;/*设置保护使能寄存器使得VIC寄存器可在用户模式或特权模式下访问*/
    /* 以下是设置中断向量地址*/
//    VICVectAddr1  = (CPU_INT32U)VIC_DummyWDT;                   
    VICVectAddr2  = (CPU_INT32U)VIC_DummyTIMER0;
//    VICVectAddr3  = (CPU_INT32U)VIC_DummyTIMER1;
//    VICVectAddr4  = (CPU_INT32U)VIC_DummyUART0;
//    VICVectAddr5  = (CPU_INT32U)VIC_DummyUART1;
//    VICVectAddr6  = (CPU_INT32U)VIC_DummyPWM0;
//    VICVectAddr7  = (CPU_INT32U)VIC_DummyI2C;
//    VICVectAddr8  = (CPU_INT32U)VIC_DummySPI;
//    VICVectAddr9  = (CPU_INT32U)VIC_DummyRTC;
//    VICVectAddr10 = (CPU_INT32U)VIC_DummyEINT0;
//    VICVectAddr11 = (CPU_INT32U)VIC_DummyEINT1;
//    VICVectAddr12 = (CPU_INT32U)VIC_DummyEINT2;
}
static  void  VIC_DummyTIMER0 (void)
{
    VIC_SpuriousInt = VIC_TIMER0;//TIME0的设置中断源 ????
    VIC_Dummy();
}
static  void  VIC_Dummy (void)
{
    while (1) {
        (void)VIC_SpuriousInt;
    }
}
/*


static  void  VIC_DummyWDT (void)
{
    VIC_SpuriousInt = VIC_WDT;
    VIC_Dummy();
}



static  void  VIC_DummyTIMER1 (void)
{
    VIC_SpuriousInt = VIC_TIMER1;
    VIC_Dummy();
}

static  void  VIC_DummyUART0 (void)
{
    VIC_SpuriousInt = VIC_UART0;
    VIC_Dummy();
}

static  void  VIC_DummyUART1 (void)
{
    VIC_SpuriousInt = VIC_UART1;
    VIC_Dummy();
}

static  void  VIC_DummyPWM0 (void)
{
    VIC_SpuriousInt = VIC_UART1;
    VIC_Dummy();
}

static  void  VIC_DummyI2C (void)
{
    VIC_SpuriousInt = VIC_I2C;
    VIC_Dummy();
}

static  void  VIC_DummySPI (void)
{
    VIC_SpuriousInt = VIC_SPI;
    VIC_Dummy();
}

static  void  VIC_DummyRTC (void)
{
    VIC_SpuriousInt = VIC_RTC;
    VIC_Dummy();
}

static  void  VIC_DummyEINT0 (void)
{
    VIC_SpuriousInt = VIC_EINT0;
    VIC_Dummy();
}

static  void  VIC_DummyEINT1 (void)
{
    VIC_SpuriousInt = VIC_EINT1;
    VIC_Dummy();
}

static  void  VIC_DummyEINT2 (void)
{
    VIC_SpuriousInt = VIC_EINT2;
    VIC_Dummy();
}
*/






⌨️ 快捷键说明

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