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

📄 bsp.c

📁 在lpc2114 上的ADS例子
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/

#define  BSP_GLOBALS
#include <includes.h>

/*
*********************************************************************************************************
*                                       LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/

CPU_INT32U  VIC_SpuriousInt;


/*
*********************************************************************************************************
*                                      LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/

static  void  LED_Init       (void);

static  void  BSP_IO_Init    (void);
static  void  BSP_PLL_Init   (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_DummyUART0 (void);
static  void  VIC_DummyUART1 (void);
static  void  VIC_DummyPWM0  (void);
static  void  VIC_DummyI2C   (void);
static  void  VIC_DummySPI   (void);
static  void  VIC_DummyRTC   (void);
static  void  VIC_DummyEINT0 (void);
static  void  VIC_DummyEINT1 (void);
static  void  VIC_DummyEINT2 (void);

static void  LCD_WriteCommand3(CPU_INT08U cmd, CPU_INT08U dat1, CPU_INT08U dat2);
static void  LCD_WriteCommand1(CPU_INT08U cmd);
static void  LCD_Command_Data_OK(void);
static void  LCD_NormalWrite_Data(CPU_INT08U data);

/*
*********************************************************************************************************
*                                             BSP_Init()
*
* Description : Initialize the Board Support Package (BSP).
*
* Argument(s) : none.
*
* Return(s)   : none.
*
* Note(s)     : (1) This function SHOULD be called before any other BSP function is called.
*********************************************************************************************************
*/

void  BSP_Init (void)
{
    BSP_PLL_Init();                                             /* Initialize PLL0 and the VPB Divider Register             */
    BSP_IO_Init();                                              /* Initialize the board's I/Os                              */

    VIC_Init();                                                 /* Initialize the Vectored Interrupt Controller             */
    LED_Init();                                                 /* Initialize the LED controls                              */
   
}




/*
*********************************************************************************************************
*                                           BSP_IntDisAll()
*
* Description : Disable ALL interrupts.
*
* Argument(s) : none.
*
* Return(s)   : none.
*********************************************************************************************************
*/

void  BSP_IntDisAll (void)
{
    VICIntEnClr = 0xFFFFFFFFL;                                /* Disable ALL interrupts                                   */
}


/*
*********************************************************************************************************
*********************************************************************************************************
**                                          uC/LCD FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* Function: LCD_Delay()
* Description:return the status of LCD controller.
*             Accroding to the cpu clock,the delay value need to be changed.
*********************************************************************************************************
*/
void LCD_Delay(CPU_INT16U delay)
{
   volatile CPU_INT16U i;
   
   for(i = 0; i < delay; i++);
}
/*
*********************************************************************************************************
* Function: LCD_GET_STATUS()
* Description:return the status of LCD controller
*关于T6963C的状态位说明:
*                                             STA0是否可以继续执行命令:1可以0不可以;
*                                             STA1是否可以读写数据:        1可以0不可以;
*
*                                             STA2是否可以自动读数据:1可以0不可以;
*                                             STA3是否可以自动写数据:1可以0不可以;
*                                             
*                                            STA4没有使用
*
*                                            STA5控制器操作状态:1使能0禁止
*                                            STA6屏幕读和屏幕复制命令执行结果:1错误0无错
*                                            STA7光标闪烁状态;1闪烁0没有
*********************************************************************************************************
*/
CPU_INT08U LCD_Get_Status(void)
{
  CPU_INT32U T6963C_STATUS;
  IO0DIR  = 0x700;  
  IO0SET |= GPIO0_LCD_CD;/* CD=1                     */
  LCD_Delay(1);  
  IO0CLR |= GPIO0_LCD_RD;/* RD=0                    */
  LCD_Delay(1);
  T6963C_STATUS = IO0PIN;/* 读数据                 */
  IO0SET |= GPIO0_LCD_RD;/* RD=1                    */ 
  IO0DIR  = 0x7ff;  
  return (CPU_INT08U)(T6963C_STATUS);/* 返回状态字节     */
}
/*
*********************************************************************************************************
* Function: LCD_Command_Data_OK()
* Description:return the status of LCD controller
*关于T6963C的状态位说明:
*                                             STA2是否可以自动读数据:1可以0不可以;
*********************************************************************************************************
*/
static void LCD_Command_Data_OK(void)
{
  while((LCD_Get_Status()&0x03)!=0x03);
}

/*
*********************************************************************************************************
* Function: LCD_WRITE_COMMAND()
* Description:WRITE A COMMAND TO THE LCD controller
*********************************************************************************************************
*/
 void LCD_Write_Command(CPU_INT08U cmd) 
 {
   IO0SET|=GPIO0_LCD_CD;/*CD=1*/
   LCD_Delay(1);
   IO0CLR|=GPIO0_LCD_DATA;/*将数据端口清零*/    
   IO0SET|=((CPU_INT32U)(cmd));/*数据出现在端口*/
   IO0CLR|=GPIO0_LCD_WR;/*WR=0*/   
   LCD_Delay(1);
   IO0SET|=GPIO0_LCD_WR;/*WR=1*/   
 }
/*
********************************************************************************************************
**函数名称:LCD_WriteCommand1()
**函数功能:写双参数命令子程序。会先判断LCM状态字。
**入口参数:command  	要写入LCM的命令字
**说    明:发送命令字
********************************************************************************************************
*/
static void  LCD_WriteCommand1(CPU_INT08U cmd)
{  
   LCD_Command_Data_OK();
   LCD_Write_Command(cmd);              // 发送命令字
}

/*
********************************************************************************************************
**函数名称:LCD_WriteCommand3()
**函数功能:写双参数命令子程序。会先判断LCM状态字。
**入口参数:command  	要写入LCM的命令字
*                     dat1		参数1
*                     dat2		参数2
**说    明:先发送两字节参数据数据,再发送命令字
********************************************************************************************************
*/
static void  LCD_WriteCommand3(CPU_INT08U cmd, CPU_INT08U dat1, CPU_INT08U dat2)
{  
   LCD_NormalWrite_Data(dat1);			// 发送数据1   
   LCD_NormalWrite_Data(dat2);			// 发送数据2    
   LCD_WriteCommand1(cmd);		        // 发送命令字
}
/*
*********************************************************************************************************
* Function: LCD_WRITE_DATA()
* Description:WRITE A DATA TO THE  LCD controller
*********************************************************************************************************
*/
void LCD_Write_Data(CPU_INT08U data)
{
  IO0CLR|=GPIO0_LCD_CD;/*CD=0*/
  LCD_Delay(1);
  IO0CLR|=GPIO0_LCD_DATA;/*将数据端口清零*/
  IO0SET|=GPIO0_LCD_DATA&(((CPU_INT32U)(data)));/*数据出现在端口*/
  IO0CLR|=GPIO0_LCD_WR;/*WR=0*/  
  LCD_Delay(1);
  IO0SET|=GPIO0_LCD_WR;/*WR=1*/ 
  IO0SET|=GPIO0_LCD_CD;/*CD=1*/
}
/*
*********************************************************************************************************
* Function: LCD_NormalWrite_Data()
* Description:WRITE A DATA TO THE  LCD controller normally
*********************************************************************************************************
*/
static void LCD_NormalWrite_Data(CPU_INT08U data)
{
  LCD_Command_Data_OK();
  LCD_Write_Data(data);
}

/*
*********************************************************************************************************
* Function: LCD_Read_Data()
* Description:READ A DATA TO THE  LCD controller
*********************************************************************************************************
*/
CPU_INT08U LCD_Read_Data(void)
{
  CPU_INT32U data;
  IO0DIR = 0x700;
  IO0CLR|=GPIO0_LCD_CD;/*CD=0*/
  LCD_Delay(1);  
  IO0CLR|=GPIO0_LCD_RD;/*RD=0*/  
  LCD_Delay(1);
  data=IO0PIN;
  IO0SET|=GPIO0_LCD_RD;/*RD=1*/ 
  IO0SET|=GPIO0_LCD_CD;/*CD=1*/
  IO0DIR = 0x7ff;
  return (CPU_INT08U)(data);
}

/*
*********************************************************************************************************
* Function: LCD_Initialize_Controller()
* Description:WRITE A DATA TO THE  LCD controller
*********************************************************************************************************
*/
void LCD_Initialize_Controller(void)
{
 
 /*设置文本显示起始位置*/
 LCD_WriteCommand3(LCD_TXT_STP, 0x00, 0x00);
 
 /*设置文本显示宽度*/
 LCD_WriteCommand3(LCD_TXT_WID, 30, 0x00);
 
 /*设置图形显示起始位置*/
 LCD_WriteCommand3(LCD_GRH_STP, 0x00, 0x10); 
 
 /*设置图形显示宽度*/
 LCD_WriteCommand3(LCD_GRH_WID, 30, 0x00); 
 
 /*光标形状设置*/
 LCD_WriteCommand1(LCD_CUR_SHP|CUR_SHP_8_LINE);
 
 /*设置模式:或显示,CGROM*/ 
 LCD_WriteCommand1(LCD_MOD_SET|MODE_OR|MODE_CGROM);
 
 /*设置显示开关控制:文字显示,显示图形*/
 LCD_WriteCommand1(LCD_DIS_SW|DIS_SW_GRAPHIC_ON|DIS_SW_CRUSOR_ON|DIS_SW_BLINK_ON|DIS_SW_TEXT_ON); 
}

/*
*********************************************************************************************************
*                                             LED_Init()
*
* Description : Setup the I/O for the LEDs.
*
* Argument(s) : none.
*
* Return(s)   : none.
*********************************************************************************************************
*/

static void  LED_Init (void)
{
    LED_Off(0);                                                 /* Turn OFF all the LEDs                                    */
}


/*
*********************************************************************************************************
*                                             LED_On()
*
* Description : Turn ON any or all the LEDs on the board.
*
* Argument(s) : led     The ID of the LED to control:
*
*                       0    turn ON all LEDs on the board
*                       1    turn ON LCD backlight
*
* Return(s)   : none.
*********************************************************************************************************
*/

void  LED_On (CPU_INT08U led)
{
  switch (led) 
    {
        case 0:

⌨️ 快捷键说明

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