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

📄 bsp.c

📁 keil编译器下uocs在lpc2214上的移植
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************************************************
*
*                                        		目标板程序包
*
*                                              NXP LPC2214
*                                                on the
*
* 文件名: bsp.c
* 版本  : V1.00
* 程序员: 王志辉
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                             包含路径
*********************************************************************************************************
*/

#define  BSP_GLOBALS
#include <includes.h>
/*
*********************************************************************************************************
*                                            本地宏定义
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                           本地常量
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                          本地数据类型
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                            本地表格
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                       本地全局变量
*********************************************************************************************************
*/

        CPU_INT32U  VIC_SpuriousInt;
/*
*********************************************************************************************************
*                                      本地函数原型
*********************************************************************************************************
*/
static  void  BSP_PLL_Init   (void);//锁相环初始化
static  void  BSP_IO_Init    (void);//IO口初始化
//static  void  BSP_MAM_Init   (void);

static  void  Tmr_TickInit   (void);//节拍发生器初始化

static  void  VIC_Init       (void);//中断向量初始化
static  void  VIC_Dummy      (void);
//static  void  VIC_DummyWDT   (void);
static  void  VIC_DummyTIMER0(void);
//static  void  VIC_DummyTIMER1(void);
//static  void  VIC_DummyRTC   (void);
//static  void  VIC_DummyEINT0 (void);
//static  void  VIC_DummyEINT1 (void);
//static  void  VIC_DummyEINT2 (void);

/*
*********************************************************************************************************
*                                     本地错误配置
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*********************************************************************************************************
**                                         本地函数代码
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                             BSP_Init()
*
* 描    述: 初始化实验板使其支持BSP程序包
*
* 入口参数: 无
*
* 返回参数: 无
*
* 注意事项: 这个函数应该在调用BSP函数包中的其他函数前调用
*********************************************************************************************************
*/

void  BSP_Init (void)
{
//    #ifdef __DEBUG    
//    MEMMAP = 0x3;                   //remap
//	#endif

//	#ifdef __OUT_CHIP    
//    MEMMAP = 0x3;                   //remap
//	#endif

//	#ifdef __IN_CHIP    
//    MEMMAP = 0x1;                   //remap
//	#endif


    OS_CPU_InitExceptVect();   /*初始化默认的中断向量*/

    BSP_PLL_Init();           /* 初始化锁相环PLL和VPB分屏器*/
//    BSP_MAM_Init();           /* 初始化存储器加速模块*/
    BSP_IO_Init();            /* 初始化IO引脚*/

    VIC_Init();               /*初始化向量中断控制器*/
//    LED_Init();               /*初始化指示灯控制*/
//    ADC_Init();               /*初始化ADC控制*/

    Tmr_TickInit();           /* 初始化uC/OS-II的节拍生成器*/
}


/*
*********************************************************************************************************
*                                            BSP_CPU_ClkFreq()
*
* 功能描述: 得到CPU的时钟频率
*
* 入口参数: 无
*
* 返回参数: CPU的时钟频率单位为HZ
*********************************************************************************************************
*/

CPU_INT32U  BSP_CPU_ClkFreq (void)
{
    CPU_INT32U  msel;
    CPU_INT32U  cpu_clk_freq;


    msel         = (CPU_INT32U)(PLLCFG & 0x1F);/*得到(PLL倍频-1的)值*/
    cpu_clk_freq = Fosc * (msel + 1);  /*倍频乘以晶振频率得到主频值*/
    return (cpu_clk_freq);					   /*返回主频值*/
}


/*
*********************************************************************************************************
*                                            BSP_CPU_PclkFreq()
* 功能描述: 得到CPU外设的时钟频率
*
* 入口参数: 无
*
* 返回参数: CPU外设的时钟频率单位为HZ
*********************************************************************************************************
*/

CPU_INT32U  BSP_CPU_PclkFreq (void)
{
    CPU_INT32U  msel;
    CPU_INT32U  vpbdiv;
    CPU_INT32U  clk_freq;
    CPU_INT32U  pclk_freq;


    msel         = (CPU_INT32U)(PLLCFG   & 0x1F);
    clk_freq     = Fosc * (msel + 1);	  /*倍频乘以晶振频率得到主频值*/

    vpbdiv       = (CPU_INT32U)(VPBDIV & 0x03);
   /*根据分频器计算外设频率*/
    switch (vpbdiv) {
        case 0:
             pclk_freq = clk_freq / 4;
             break;

        case 1:
             pclk_freq = clk_freq;
             break;

        case 2:
             pclk_freq = clk_freq / 2;
             break;

        default:
             pclk_freq = clk_freq / 4;
             break;
    }
    return (pclk_freq);							  /*返回外设频率*/
}


/*
*********************************************************************************************************
*                                          OS_CPU_ExceptHndlr()
* 功能描述: 处理所有异常
* 入口参数: except_id     ARM异常的种类:
*
*                                  OS_CPU_ARM_EXCEPT_RESET             0x00
*                                  OS_CPU_ARM_EXCEPT_UNDEF_INSTR       0x01
*                                  OS_CPU_ARM_EXCEPT_SWI               0x02
*                                  OS_CPU_ARM_EXCEPT_PREFETCH_ABORT    0x03
*                                  OS_CPU_ARM_EXCEPT_DATA_ABORT        0x04
*                                  OS_CPU_ARM_EXCEPT_ADDR_ABORT        0x05
*                                  OS_CPU_ARM_EXCEPT_IRQ               0x06
*                                  OS_CPU_ARM_EXCEPT_FIQ               0x07
* 入口参数: 无
*
* 返回参数: CPU外设的时钟频率单位为HZ
* 调用模块:	声明在os_cpu_a.s中的OS_CPU_ARM_EXCEPT_HANDLER()
*********************************************************************************************************
*/

void  OS_CPU_ExceptHndlr (CPU_INT32U  except_id)
{
    CPU_FNCT_VOID  pfnct;


    if (except_id == OS_CPU_ARM_EXCEPT_IRQ) {

        pfnct = (CPU_FNCT_VOID)VICVectAddr;       /*从VIC读取中断向量*/
        while (pfnct != (CPU_FNCT_VOID)0) {       /* 确保没有空指针*/
          (*pfnct)();                             /* 为申请中断的设备执行中断程序*/
            VICVectAddr = 1;                      /* 通知中断结束*/
            pfnct = (CPU_FNCT_VOID)VICVectAddr;   /* 从VIC读取中断向量*/
        }

    } else {

                                                  /* 无限循环等待其他中断*/
                                                  /* 这里应该增加其他功能如(reboot等等)      */
        while (DEF_TRUE) {
            ;
        }
    }
}


/*
*********************************************************************************************************
*                                           BSP_IntDisAll()
*
* 功能描述: 禁止所有中断
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************
*/

void  BSP_IntDisAll (void)
{
    VICIntEnClear = 0xFFFFFFFFL;   /*禁止所有中断*/
}


/*
*********************************************************************************************************
*********************************************************************************************************
**                                       目标板测试程序待加入
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*********************************************************************************************************
**                                     uC/OS-II 定时器函数
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                            Tmr_TickInit()
*
* 功能描述: 初始化uC/OS-II的节拍发生器
*
* 入口参数: 无
*
* 返回参数: 无
*********************************************************************************************************

⌨️ 快捷键说明

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