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

📄 bsp.c

📁 大名鼎鼎的uCOS-II在ARM1176处理器上的移植源代码+说明文档.强烈推荐!
💻 C
📖 第 1 页 / 共 3 页
字号:
        case 0:
             LED_LIGHTS |= 0x0000000F;
             break;
        case 1:
             LED_LIGHTS |= 0x00000001;
             break;
        case 2:
             LED_LIGHTS |= 0x00000002;
             break;
        case 3:
             LED_LIGHTS |= 0x00000004;
             break;
        case 4:
             LED_LIGHTS |= 0x00000008;
             break;
        default:
             break;
    }
}

/*
*********************************************************************************************************
*                                             LED OFF
*
* Description : This function is used to control any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to turn OFF
*                      0    indicates that you want ALL the LEDs to be OFF
*                      1    turns OFF LED1  on the board
*                      .
*                      .
*                      4    turns OFF LED16 on the board
*********************************************************************************************************
*/

void  LED_Off (CPU_INT08U led)
{
    switch (led) {
        case 0:
             LED_LIGHTS &= ~0x0000000F;
             break;
        case 1:
             LED_LIGHTS &= ~0x00000001;
             break;
        case 2:
             LED_LIGHTS &= ~0x00000002;
             break;
        case 3:
             LED_LIGHTS &= ~0x00000004;
             break;
        case 4:
             LED_LIGHTS &= ~0x00000008;
             break;
        default:
             break;
    }
}

/*
*********************************************************************************************************
*                                             LED TOGGLE
*
* Description : This function is used to toggle any or all the LEDs on the board.
*
* Arguments   : led    is the number of the LED to control
*                      0    indicates that you want to toggle ALL the LEDs
*                      1    toggles LED1  on the board
*                      .
*                      .
*                     4    toggles LED16 on the board
*********************************************************************************************************
*/

void  LED_Toggle (CPU_INT08U led)
{
    switch (led) {
        case 0:
             LED_LIGHTS ^= 0x0000000F;
             break;
        case 1:
             LED_LIGHTS ^= 0x00000001;
             break;
        case 2:
             LED_LIGHTS ^= 0x00000002;
             break;
        case 3:
             LED_LIGHTS ^= 0x00000004;
             break;
        case 4:
             LED_LIGHTS ^= 0x00000008;
             break;
        default:
             break;
    }
}


/*
******************************************************************************************************************************
******************************************************************************************************************************
*                                        LCD FUNCTIONS
******************************************************************************************************************************
******************************************************************************************************************************
*/

/*
*********************************************************************************************************
*                                  INITIALIZE THE LCD DISPLAY
*
* Description: This function initializes the LCD display.
*
* Argument(s): None
*
* Returns    : None
*********************************************************************************************************
*/

static  void  LCD_Init (void)
{
    LCD_TIMING0 = LCD_TIMING0_PPL(LCD_PIXELS_PER_LINE);
    LCD_TIMING1 = LCD_TIMING1_LPP(LCD_LINES_PER_PANEL);
    LCD_TIMING2 = LCD_TIMING2_CPL(LCD_CLOCKS_PER_LINE);
    LCD_UPBASE  = LCD_UPBASE_UPBASE((CPU_INT32U)(&LCD_Buffer[0]));
    LCD_LPBASE  = LCD_LPBASE_LPBASE(0);
    LCD_CONTROL = LCD_CONTROL_LCDEN 
                | LCD_CONTROL_LCDBPP_16
                | LCD_CONTROL_LCDTFT;

}

/*
*********************************************************************************************************
*                                  WRITE LINE TO DISPLAY
*
* Description: This function displays on the LCD display at a specified line position.
*
* Argument(s): s        is an array of ASCII-encoded characters.
*              line     is the character line number between 0 and 7.
*
* Returns    : None
*
* Note(s)    : 
*********************************************************************************************************
*/

void  LCD_DispStr (CPU_INT08U line, CPU_INT08U col, CPU_INT08U *s, CPU_INT16U color)
{
    CPU_INT16U  i;
    CPU_INT16U  j;
    CPU_INT08U  c;
    CPU_INT32U  x;
    CPU_INT32U  y;
    CPU_INT32U  offset;
    CPU_INT08U  pixels;
    
    
    x       = col  * 8;
    y       = line * 8;
    offset  = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
    
    
    while (*s != 0) {
        c = *s;                                                 /* Store the current character                              */
        for (i = 0; i < 8; i++) {                               /* For each of the eight columns in the character           */
            pixels = LCD_Charset[c-32][i];
            for (j = 0; j < 8; j++) {
                if (pixels & 0x01) {
#if   LCD_BYTES_PER_PIXEL == 1
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = color;
#elif LCD_BYTES_PER_PIXEL == 2
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = color        & 0xFF;
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = (color >> 8) & 0xFF;
#endif
                } else {
#if   LCD_BYTES_PER_PIXEL == 1
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = LCD_BGColor;
                    LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = LCD_BGColor;
#endif
                }
                pixels >>= 1;
            }
            offset      += LCD_BYTES_PER_PIXEL;
        }
        s++;                                                    /* Increment the pointer                                    */
    }
}

/*
*********************************************************************************************************
*                                  WRITE CHARACTER TO DISPLAY
*
* Description: This function displays a character at the specified position of the LCD display.
*
* Argument(s): c        is an ASCII-encoded character.
*              line     is the character line number between 0 and 7.
*              col      is the character column number between 0 and 15.
*
* Returns    : None
*
* Note(s)    : 
*********************************************************************************************************
*/

void  LCD_DispChar (CPU_INT08U line, CPU_INT08U col, CPU_INT08U c, CPU_INT16U color)
{
    CPU_INT16U  i;
    CPU_INT16U  j;
    CPU_INT32U  x;
    CPU_INT32U  y;
    CPU_INT32U  offset;
    CPU_INT08U  pixels;

    
    x           = col  * 8;
    y           = line * 8;
    offset      = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
    
    for (i = 0; i < 8; i++) {                                   /* For each of the eight columns in the character           */
        pixels  = LCD_Charset[c-32][i];                         /*  ... Read intended pixel ON/OFF setting ...              */
        for (j = 0; j < 8; j++) {                               /*  ... For each pixel in column ...                        */
            if (pixels & 0x01) {                                /*  ... ... If pixel is ON, then assign color ...           */
#if   LCD_BYTES_PER_PIXEL == 1
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = color;
#elif LCD_BYTES_PER_PIXEL == 2
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     =  color       & 0xFF;
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = (color >> 8) & 0xFF;
#endif
            } else {                                            /*  ... ... If pixel is OFF, assign no color ...            */
#if   LCD_BYTES_PER_PIXEL == 1
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL]     = LCD_BGColor;
                LCD_Buffer[offset + j * LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL + 1] = LCD_BGColor;
#endif
            }
            pixels >>= 1;                                       /*  ... Move to next pixel.                                 */
        }
        offset      += LCD_BYTES_PER_PIXEL;                     /*  ... Move to data for next pixel.                        */
    }
}

/*
*********************************************************************************************************
*                                   CLEAR LINE ON DISPLAY
*
* Description: This function clears one line of the display.
*
* Argument(s): line     is the character line number between 0 and 7.
*
* Returns    : None
*********************************************************************************************************
*/

void  LCD_DispClrLine (CPU_INT08U line)
{
    CPU_INT16U  i;
    CPU_INT16U  j;
    CPU_INT32U  x;
    CPU_INT32U  y;
    CPU_INT08U  *p_buf;
    CPU_INT32U  offset;
    CPU_INT08U  pixels;
    
    
    x       = 0;
    y       = line * 8;
    offset  = (y * LCD_PIXELS_PER_LINE + x) * LCD_BYTES_PER_PIXEL;
    

    for (j = 0; j < 8; j++) {                                   /* For each of the rows of pixels in the line ...           */
        p_buf   = &LCD_Buffer[offset];
    
        for (i = 0; i < LCD_PIXELS_PER_LINE; i++) {             /*  ... For each of the pixels in the row ...               */
                                                                /*  ... ... Display in the background color.                */
#if   LCD_BYTES_PER_PIXEL == 1
            *p_buf++       =  LCD_BGColor;
#elif LCD_BYTES_PER_PIXEL == 2
            *p_buf++       =  LCD_BGColor       & 0xFF;
            *p_buf++       = (LCD_BGColor >> 8) & 0xFF;
#endif
        }
        offset  += LCD_PIXELS_PER_LINE * LCD_BYTES_PER_PIXEL;   /*  ... Move to next line                                   */
    }
}

/*
*********************************************************************************************************
*                                         CLEAR DISPLAY
*
* Description: This function clears the display.
*
* Argument(s): None
*
* Returns    : None
*
* Note(s)    : 
*********************************************************************************************************
*/

void  LCD_ClrScr (void)
{
    CPU_INT16U   i;
    CPU_INT16U   j;
    CPU_INT08U  *p_buf;

⌨️ 快捷键说明

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