lpc1788_ucos\cmsis\include.h bsp.h.c --ucosii移植在lpc1788--part7

/*****************************************************************************************
include.h
*****************************************************************************************/
#include <ucos_ii.h>
#include "app_cfg.h"
#include "os_cfg.h"
#include "cpu.h"
/*****************************************************************************************
*                                      驱动层总入口函数
*****************************************************************************************/
#ifndef  __BSP_H__
#define  __BSP_H__
//***************************************************************************************
void BspTest(void);
void BspInit(void);
//****************************************************************************************
#endif

/*****************************************************************************************
*                                      驱动层总入口函数
*****************************************************************************************/
#define  __BSP_C_
#include "includes.h"
#include "lpc177x_8x_clkpwr.h"
#include "bsp.h"
#define  BSP_INT_SRC_NBR                                 35
static   CPU_FNCT_VOID  BSP_IntVectTbl[BSP_INT_SRC_NBR];    //中断向量表
/*****************************************************************************************
*                                      LOCAL FUNCTION PROTOTYPES
*****************************************************************************************/
static  void  BSP_IntHandler (CPU_DATA  int_id);
static  void  BSP_IntHandlerDummy(void);
void BspInit(void)
{
    SystemInit();
    //ucosii ticks时钟初始化
    CCLK_Frq = CLKPWR_GetCLK(CLKPWR_CLKTYPE_CPU);
    OS_CPU_SysTickInit();
}
/*****************************************************************************************
*                                              BSP_IntClr()
* Description : Clear interrupt.
* Note(s)     : (1) An interrupt does not need to be cleared within the interrupt controller.
*****************************************************************************************/
void  BSP_IntClr (CPU_DATA  int_id)
{
}
/*****************************************************************************************
*                                              BSP_IntDis()
* Description : Disable interrupt.
*****************************************************************************************/
void  BSP_IntDis (CPU_DATA  int_id)
{
    if (int_id < BSP_INT_SRC_NBR)
    {
        CPU_IntSrcDis(int_id + 16);
    }
}

/*****************************************************************************************
*                                           BSP_IntDisAll()
* Description : Disable ALL interrupts.
*****************************************************************************************/
void  BSP_IntDisAll (void)
{
    CPU_IntDis();
}

/*****************************************************************************************
*                                               BSP_IntEn()
* Description : Enable interrupt.
* Argument(s) : int_id      Interrupt to enable.
*****************************************************************************************/
void  BSP_IntEn (CPU_DATA  int_id)
{
    if (int_id < BSP_INT_SRC_NBR) {
        CPU_IntSrcEn(int_id + 16);
    }
}

/*****************************************************************************************
*                                            BSP_IntVectSet()
* Description : Assign ISR handler.
* Argument(s) : int_id      Interrupt for which vector will be set.
*               isr         Handler to assign
*****************************************************************************************/
void  BSP_IntVectSet (CPU_DATA       int_id,
                      CPU_FNCT_VOID  isr)
{
    #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
        CPU_SR   cpu_sr;
    #endif
    if (int_id < BSP_INT_SRC_NBR)
    {
        CPU_CRITICAL_ENTER();
        BSP_IntVectTbl[int_id] = isr;
        CPU_CRITICAL_EXIT();
    }
}
/*****************************************************************************************
*                                            BSP_IntPrioSet()
* Description : Assign ISR priority.
* Argument(s) : int_id      Interrupt for which vector will be set.
*               prio        Priority to assign
*****************************************************************************************/
void  BSP_IntPrioSet (CPU_DATA    int_id,
                      CPU_INT08U  prio)
{
    #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
        CPU_SR    cpu_sr;
    #endif

    if (int_id < BSP_INT_SRC_NBR)
    {
        CPU_CRITICAL_ENTER();
        CPU_IntSrcPrioSet(int_id + 16, prio);
        CPU_CRITICAL_EXIT();
    }
}

/*****************************************************************************************
*                                              BSP_IntInit()
* Description : Initialize interrupts:
* Argument(s) : none
* Return(s)   : none.
* Caller(s)   : BSP_Init().
* Note(s)     : none.
*****************************************************************************************/
void  BSP_IntInit (void)
{
    CPU_DATA  int_id;
    for (int_id = 0; int_id < BSP_INT_SRC_NBR; int_id++)
    {
        BSP_IntVectSet(int_id, BSP_IntHandlerDummy);
    }
}

/******************************************************************************************
*                                        BSP_IntHandler####()
* Description : Handle an interrupt.
******************************************************************************************/
void  WDT_IRQHandler              (void)  { BSP_IntHandler(ID_WDT_IRQn);        }
void  TIMER0_IRQHandler           (void)  { BSP_IntHandler(ID_TIMER0_IRQn);     }
void  TIMER1_IRQHandler           (void)  { BSP_IntHandler(ID_TIMER1_IRQn);     }
void  TIMER2_IRQHandler           (void)  { BSP_IntHandler(ID_TIMER2_IRQn);     }
void  TIMER3_IRQHandler           (void)  { BSP_IntHandler(ID_TIMER3_IRQn);     }
void  UART0_IRQHandler            (void)  { BSP_IntHandler(ID_UART0_IRQn);      }
void  UART1_IRQHandler            (void)  { BSP_IntHandler(ID_UART1_IRQn);      }
void  UART2_IRQHandler            (void)  { BSP_IntHandler(ID_UART2_IRQn);      }
void  UART3_IRQHandler            (void)  { BSP_IntHandler(ID_UART3_IRQn);      }
void  PWM1_IRQHandler             (void)  { BSP_IntHandler(ID_PWM1_IRQn);       }
void  I2C0_IRQHandler             (void)  { BSP_IntHandler(ID_I2C0_IRQn);       }
void  I2C1_IRQHandler             (void)  { BSP_IntHandler(ID_I2C1_IRQn);       }
void  I2C2_IRQHandler             (void)  { BSP_IntHandler(ID_I2C2_IRQn);       }
void  SPI_IRQHandler              (void)  { BSP_IntHandler(ID_SPI_IRQn);        }
void  SSP0_IRQHandler             (void)  { BSP_IntHandler(ID_SSP0_IRQn);       }
void  SSP1_IRQHandler             (void)  { BSP_IntHandler(ID_SSP1_IRQn);       }
void  PLL0_IRQHandler             (void)  { BSP_IntHandler(ID_PLL0_IRQn);       }
void  RTC_IRQHandler              (void)  { BSP_IntHandler(ID_RTC_IRQn);        }
void  EINT0_IRQHandler            (void)  { BSP_IntHandler(ID_EINT0_IRQn);      }
void  EINT1_IRQHandler            (void)  { BSP_IntHandler(ID_EINT1_IRQn);      }
void  EINT2_IRQHandler            (void)  { BSP_IntHandler(ID_EINT2_IRQn);      }
void  EINT3_IRQHandler            (void)  { BSP_IntHandler(ID_EINT3_IRQn);      }
void  ADC_IRQHandler              (void)  { BSP_IntHandler(ID_ADC_IRQn);        }
void  BOD_IRQHandler              (void)  { BSP_IntHandler(ID_BOD_IRQn);        }
void  USB_IRQHandler              (void)  { BSP_IntHandler(ID_USB_IRQn);        }
void  CAN_IRQHandler              (void)  { BSP_IntHandler(ID_CAN_IRQn);        }
void  DMA_IRQHandler              (void)  { BSP_IntHandler(ID_DMA_IRQn);        }
void  I2S_IRQHandler              (void)  { BSP_IntHandler(ID_I2S_IRQn);        }
void  ENET_IRQHandler             (void)  { BSP_IntHandler(ID_ENET_IRQn);       }
void  RIT_IRQHandler              (void)  { BSP_IntHandler(ID_RIT_IRQn);        }
void  MCPWM_IRQHandler            (void)  { BSP_IntHandler(ID_MCPWM_IRQn);      }
void  QEI_IRQHandler              (void)  { BSP_IntHandler(ID_QEI_IRQn);        }
void  PLL1_IRQHandler             (void)  { BSP_IntHandler(ID_PLL1_IRQn);       }

void  USBActivity_IRQHandler      (void)  { BSP_IntHandler(ID_USBActivity_IRQn);}
void  CANActivity_IRQHandler      (void)  { BSP_IntHandler(ID_CANActivity_IRQn);}
void  UART4_IRQHandler            (void)  { BSP_IntHandler(ID_UART4_IRQn);      }
void  SSP2_IRQHandler             (void)  { BSP_IntHandler(ID_SSP2_IRQn);     }
void  LCD_IRQHandler              (void)  { BSP_IntHandler(ID_LCD_IRQn);        }
void  GPIO_IRQHandler             (void)  { BSP_IntHandler(ID_GPIO_IRQn);       }
void  PWM0_IRQHandler             (void)  { BSP_IntHandler(ID_PWM0_IRQn);       }
void  EEPROM_IRQHandler           (void)  { BSP_IntHandler(ID_EEPROM_IRQn);     }
/*****************************************************************************************
*                                   中断总入口
* Description : Central interrupt handler.
* Argument(s) : int_id          Interrupt that will be handled.
* Caller(s)   : ISR handlers.
*****************************************************************************************/
static  void  BSP_IntHandler (CPU_DATA  int_id)
{
    #if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
        CPU_SR         cpu_sr;
    #endif
    CPU_FNCT_VOID  isr;

    CPU_CRITICAL_ENTER();   /* Tell uC/OS-II that we are starting an ISR    */
    OSIntNesting++;
    CPU_CRITICAL_EXIT();

    if (int_id < BSP_INT_SRC_NBR)
    {
        isr = BSP_IntVectTbl[int_id];
        if (isr != (CPU_FNCT_VOID)0)
        {
            isr();
        }
    }
    OSIntExit();            /* Tell uC/OS-II that we are leaving the ISR    */
}
/*****************************************************************************************
*                                        BSP_IntHandlerDummy()
* Description : Dummy interrupt handler.
* Caller(s)   : BSP_IntHandler().
*****************************************************************************************/
static  void  BSP_IntHandlerDummy (void)
{
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值