亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ts_example.c

?? Sharp LH7A400 BSP平臺無關部分的代碼,有很高的參考價值,尤其是系統架構設計上,設計成移植度很高的BSP.
?? C
字號:
/***********************************************************************
 * $Workfile:   ts_example.c  $
 * $Revision:   1.0  $
 * $Author:   WellsK  $
 * $Date:   Dec 03 2003 13:53:34  $
 *
 * Project: Touchscreen driver example
 *
 * Description:
 *     A touchscreen driver (interrupt mode) example.
 *
 * Revision History:
 * $Log:   //smaicnt2/pvcs/VM/sharpmcu/archives/sharpmcu/software/csps/lh7a400/bsps/sdk7a400/examples/ts_int/ts_example.c-arc  $
 * 
 *    Rev 1.0   Dec 03 2003 13:53:34   WellsK
 * Initial revision.
 * 
 *
 ***********************************************************************
 * SHARP MICROELECTRONICS OF THE AMERICAS MAKES NO REPRESENTATION
 * OR WARRANTIES WITH RESPECT TO THE PERFORMANCE OF THIS SOFTWARE,
 * AND SPECIFICALLY DISCLAIMS ANY RESPONSIBILITY FOR ANY DAMAGES, 
 * SPECIAL OR CONSEQUENTIAL, CONNECTED WITH THE USE OF THIS SOFTWARE.
 *
 * SHARP MICROELECTRONICS OF THE AMERICAS PROVIDES THIS SOFTWARE SOLELY 
 * FOR THE PURPOSE OF SOFTWARE DEVELOPMENT INCORPORATING THE USE OF A 
 * SHARP MICROCONTROLLER OR SYSTEM-ON-CHIP PRODUCT. USE OF THIS SOURCE
 * FILE IMPLIES ACCEPTANCE OF THESE CONDITIONS.
 *
 * COPYRIGHT (C) 2001 SHARP MICROELECTRONICS OF THE AMERICAS, INC.
 *     CAMAS, WA
 **********************************************************************/

#include "abl_types.h"
#include "abl_irq_fiq.h"
#include "abl_swim.h"
#include "abl_swim_font.h"
#include "abl_arm922t_cp15_driver.h"
#include "lh7a400_clcdc_driver.h"
#include "lh7a400_gpio_driver.h"
#include "lh7a400_int_driver.h"
#include "lh7a400_timer_driver.h"
#include "sdk7a400_cpld_driver.h"
#include "sdk7a400_cpld_int_router.h"
#include "sdk7a400_ts_driver.h"

/* Logical address of LCD frame buffer */
#define FBLOG 0xC1C00000

/* Pick only one display! */
#define LCD_DISPLAY sharp_lq035
//#define LCD_DISPLAY sharp_lq039
//#define LCD_DISPLAY sharp_lq057
//#define LCD_DISPLAY sharp_lq064
//#define LCD_DISPLAY sharp_lq104
//#define LCD_DISPLAY sharp_lq121

/* Touchscreen, timer, and LCD device handles */
STATIC INT_32 tsdev, lcddev, timerdev;

/* Sample counter */
volatile INT_32 samples;

/***********************************************************************
 *
 * Function: timer_user_interrupt
 *
 * Purpose: Timer 1 interrupt handler
 *
 * Processing:
 *     Clear the touchscreen and timer interrupts.
 *
 * Parameters: None
 *
 * Outputs: None
 *
 * Returns: Nothing
 *
 * Notes: None
 *
 **********************************************************************/
void timer_user_interrupt(void)
{
    /* Re-enable the touchscreen interrupt */
    ts_ioctl(tsdev, TS_ENABLE_INT, 1);

    /* Clear the timer interrupt */
    timer_ioctl(timerdev, TIMER_INT_CLEAR, 0);
}

/***********************************************************************
 *
 * Function: ts_callback
 *
 * Purpose: Touchscreen controller driver callback function
 *
 * Processing:
 *     This function is called whenever a touchscreen interrupt occurs
 *     and the touchscreen data has been placed into the queue. All
 *     this does is increment the sample count.
 *
 * Parameters: None
 *
 * Outputs: None
 *
 * Returns: Nothing
 *
 * Notes: None
 *
 **********************************************************************/
void ts_callback(void)
{
    samples++;
}

/***********************************************************************
 *
 * Function: make_hex_str
 *
 * Purpose: Convert a number to a hex string
 *
 * Processing:
 *     Using successive nibble computation, compute the base16 value of
 *     a number into a string and return the string value to the caller.
 *
 * Parameters:
 *     str      : Where to place the generated string
 *     iteration: Number to generate a string from
 *
 * Outputs: None
 *
 * Returns: Nothing
 *
 * Notes: None
 *
 **********************************************************************/
void make_hex_str(CHAR *str,
                  UNS_16 iteration)
{
    INT_32 cnt = 0;
    UNS_8 li;

    while (cnt < 4)
    {
        li = (UNS_8) ((iteration >> ((3 - cnt) * 4)) & 0xF);
        if (li > 9)
        {
            str[cnt] = 'A' + li - 10;
        }
        else
        {
            str[cnt] = '0' + li;
        }

        cnt++;
    }

    str[cnt] = '\0';
}

/***********************************************************************
 *
 * Function: c_entry
 *
 * Purpose: Touchscreen example code without interrupts
 *
 * Processing:
 *     Initialize the LCD display and the touchscreen controller.
 *     While valid touchscreen controller samples are read, display
 *     the coordinates for the sample on the display. After 3000 samples
 *     are read, quit the program.
 *
 * Parameters: None
 *
 * Outputs: None
 *
 * Returns: Always returns 1
 *
 * Notes: None
 *
 **********************************************************************/
int c_entry(void)
{
    TS_DATA_T tsample;
    SWIM_WINDOW_T win1;
    COLOR_T *fblog;
    CHAR str[32];
    INT_32 bytesr;

    /* Disable interrupts in ARM core */
    disable_irq_fiq();

    /* Initialize CPLD */
    cpld_init();

    /* Set virtual address of MMU table (needed for VIC driver
       functions) */
    cp15_set_vmmu_addr((UNS_32 *) cp15_get_ttb());

    /* Initialize interrupt system */
    int_initialize(0xC0000000);

    /* Install standard IRQ dispatcher at ARM IRQ vector */
    int_install_handler(IRQ_VEC, (PFV) irq_dispatcher);

    /* Setup LCD muxing for all 16 data bits */
    gpio_lcd_signal_select(GPIO_LCDV_0_15);

    /* Setup LCD paramaters in the LCD controller */
    lcddev = lcd_open(CLCDC, (INT_32) &LCD_DISPLAY);

    /* Set frame buffer address */
    lcd_ioctl(lcddev, LCD_SET_UP_FB,
        (INT_32) cp15_map_virtual_to_physical((UNS_32 *) FBLOG));

    /* Make sure shared JTAG signal on PA2 is not active */
    gpio_set_data_dir(GPIO_PORT_A, 0x04, GPIO_OUTPUT);
    gpio_data_write(GPIO_PORT_A, 0x04);

    /* Turn on the LCD backlight */
    cpld_enable_lcd_veeen(TRUE);

    /* Set color depth to 16 bits per pixel */
    lcd_ioctl(lcddev, LCD_SET_BPP, 16);
 
    /* For displays that require more bandwidth, set DMA to request
       a transfer on 4 words empty instead of the default 8. This may
       help prevent 'display tearing' due to a starved LCD controller */
    samples = lcd_ioctl(lcddev, LCD_GET_STATUS, LCD_XSIZE) *
        lcd_ioctl(lcddev, LCD_GET_STATUS, LCD_YSIZE) *
        sizeof (COLOR_T);
    if (samples >= (800 * 600 * 2))
    {
        /* Displays of 800x600 pixels and 16-bits of color (or larger)
           will use faster DMA requests */
        lcd_ioctl(lcddev, LCD_DMA_ON_4MT, 1);
    }

    /* Enable LCD controller and power signals */
    lcd_ioctl(lcddev, LCD_PWENABLE, 1);

    /* Get virtual address of frame buffer */
    fblog = (COLOR_T *) FBLOG;

    /* Create a SWIM window */
    swim_window_open(&win1, LCD_DISPLAY.pixels_per_line,
        LCD_DISPLAY.lines_per_panel, fblog, 0,
        0, (LCD_DISPLAY.pixels_per_line - 1),
        (LCD_DISPLAY.lines_per_panel - 1), 0, WHITE, RED, DARKGRAY);
    
    /* Open the touchscreen interface */
    if ((tsdev = ts_open(0, 0)) == 0x00000000)
    {
        return 0;
    }

    /* Install touchscreen callback function */
    ts_ioctl(tsdev, TS_INSTALL_TSCB, (INT_32) ts_callback);
    
    /* Open timer 1 */
    if ((timerdev = timer_open(TIMER1, 0)) == 0x00000000)
    {
        return 0;
    }

    /* Setup timer 1 for a 10Hz tick */
    timer_ioctl(timerdev, TIMER_SET_USECS, (100 * TIMER_MSEC));

    /* Enable timer (starts counting) */
    timer_ioctl(timerdev, TIMER_ENABLE, 1);

    /* Clear any latched timer interrupts */
    timer_ioctl(timerdev, TIMER_INT_CLEAR, 0);

    /* Install timer handler in the IRQ dispatcher */
    int_install_irq_handler(INT_TC1UINTR, (PFV) timer_user_interrupt);

    /* Enable timer interrupt in the interrupt controller */
    int_enable(INT_TC1UINTR);

    /* Install CPLD handler in the IRQ dispatcher and enable CPLD
       interrupts */
    cpld_int_router_init();
    cpld_int_router_enable(TRUE);

    samples = 0;

    /* Enable IRQ interrupts in the ARM core */
    enable_irq();

    /* Perform about 10 seconds of samples and display the raw
       coordinates */
    while (samples < (10 * 10))
    {
        /* Read the data */
        bytesr = ts_read(tsdev, &tsample, sizeof(tsample));

        /* Only update if pendown was detected */
        if ((tsample.pendown == TRUE) && (bytesr > 0))
        {
            swim_put_text_xy(&win1, "Events: ", 5, 5);
            make_hex_str(str, samples);
            swim_put_text(&win1, str);
            swim_put_text(&win1, "    ");
            swim_put_text_xy(&win1, "X: ", 5, 30);
            make_hex_str(str, tsample.xraw);
            swim_put_text(&win1, str);
            swim_put_text(&win1, "    ");
            swim_put_text_xy(&win1, "Y: ", 5, 55);
            make_hex_str(str, tsample.yraw);
            swim_put_text(&win1, str);
            swim_put_text(&win1, "    ");
        }
    }

    /* Disable interrupts */
    cpld_int_router_enable(TRUE);
    int_disable(INT_TC1UINTR);

    /* Disable interrupts in ARM core */
    disable_irq_fiq();

    /* Close touchscreen, LCD, and timer */
    ts_close(tsdev);
    ts_close(timerdev);
    ts_close(lcddev);

    return 1;
}

#ifndef __GNUC__
/* With ARM and GHS toolsets, the entry point is main() - this will
   allow the linker to generate wrapper code to setup stacks, allocate
   heap area, and initialize and copy code and data segments. For GNU
   toolsets, the entry point is through __start() in the crt0_gnu.asm
   file, and that startup code will setup stacks and data */
int main(void)
{
    return c_entry();
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美日韩三区| 欧美午夜电影在线播放| 亚洲国产你懂的| 亚洲欧美视频在线观看视频| 国产精品色在线| 中文字幕日韩一区二区| 国产精品麻豆99久久久久久| 久久色.com| 91精品国产aⅴ一区二区| 欧美精品亚洲二区| 日韩美一区二区三区| 精品日产卡一卡二卡麻豆| 日韩精品一区二区三区swag| 久久久综合精品| 国产精品久久久久永久免费观看 | 亚洲愉拍自拍另类高清精品| 亚洲欧美精品午睡沙发| 一区2区3区在线看| 性感美女极品91精品| 久久er精品视频| 国产精品系列在线观看| 成人三级在线视频| 91福利国产成人精品照片| 欧美精品乱码久久久久久按摩 | 日av在线不卡| 韩国欧美国产一区| 99天天综合性| 在线不卡中文字幕| 国产三级精品三级在线专区| 亚洲乱码国产乱码精品精98午夜 | 国产精品女主播在线观看| 樱花影视一区二区| 天天综合日日夜夜精品| 国产一区欧美二区| 在线观看三级视频欧美| 日韩精品一区二区三区swag| 1区2区3区精品视频| 日韩av中文在线观看| 国产.欧美.日韩| 欧美日韩高清一区二区不卡| 久久久一区二区三区捆绑**| 亚洲与欧洲av电影| 岛国av在线一区| 欧美二区三区91| 亚洲同性同志一二三专区| 久久丁香综合五月国产三级网站| 不卡影院免费观看| 日韩精品一区二区三区四区视频| 亚洲私人影院在线观看| 国产老肥熟一区二区三区| 在线视频欧美精品| 国产欧美在线观看一区| 日本特黄久久久高潮| 色诱亚洲精品久久久久久| 久久久不卡网国产精品二区| 五月天丁香久久| 日本伦理一区二区| 国产精品色在线| 国产精品18久久久久久久网站| 欧美日韩一区三区| 亚洲老妇xxxxxx| 99久精品国产| 中文字幕亚洲视频| 粉嫩蜜臀av国产精品网站| 欧美大度的电影原声| 偷窥国产亚洲免费视频| 在线精品视频免费播放| 亚洲欧洲精品一区二区三区不卡| 国产成人自拍在线| 精品国产三级a在线观看| 日韩不卡在线观看日韩不卡视频| 欧美日韩精品一区二区| 亚洲精品成人悠悠色影视| 成人av资源在线| 国产日韩在线不卡| 国产99久久久国产精品免费看| 欧美精品一区二区久久婷婷| 精品中文av资源站在线观看| 欧美精品精品一区| 日韩激情视频网站| 日韩欧美电影在线| 韩国在线一区二区| 国产女同性恋一区二区| 成人免费视频一区二区| 国产精品久久久久久久久免费桃花| 国产91露脸合集magnet| 国产精品久久久久一区二区三区共| 成人精品一区二区三区四区| 国产免费成人在线视频| 99久久精品99国产精品| 亚洲一区二区黄色| 欧美一二三四区在线| 久久66热re国产| 中国av一区二区三区| 97aⅴ精品视频一二三区| 一区二区三区中文字幕精品精品 | 国产日韩精品一区二区浪潮av| 国产一区在线精品| 日韩一区在线看| 欧美丝袜自拍制服另类| 奇米影视一区二区三区| 国产区在线观看成人精品| 91小视频在线免费看| 日日骚欧美日韩| 久久精品欧美一区二区三区麻豆| 成人av先锋影音| 天天综合天天综合色| 国产目拍亚洲精品99久久精品| 91久久国产最好的精华液| 久久精品国产精品亚洲综合| 国产精品灌醉下药二区| 69p69国产精品| 成人免费视频播放| 日本不卡1234视频| 中文字幕中文字幕在线一区 | 久久夜色精品一区| 91麻豆成人久久精品二区三区| 婷婷综合五月天| 亚洲欧美自拍偷拍色图| 日韩精品一区二区三区视频| 一本高清dvd不卡在线观看| 麻豆国产欧美一区二区三区| 中文字幕日韩av资源站| 日韩你懂的在线播放| 一本色道久久加勒比精品| 国产精品一区专区| 日韩二区在线观看| 一区二区在线免费| 日本一区二区三区在线不卡| 欧美丰满少妇xxxbbb| 91女神在线视频| 国产精品亚洲а∨天堂免在线| 日韩福利电影在线| 亚洲自拍偷拍网站| 亚洲人精品午夜| 国产精品午夜春色av| 日韩免费一区二区| 91精品免费观看| 欧美人妖巨大在线| 欧美丝袜自拍制服另类| 91蜜桃免费观看视频| 成人不卡免费av| 成人免费高清视频在线观看| 国产美女在线精品| 国内成人精品2018免费看| 美女久久久精品| 天堂成人国产精品一区| 亚洲第一二三四区| 亚洲高清免费观看高清完整版在线观看| 中文字幕国产一区| 国产精品视频在线看| 国产精品久久久久久久蜜臀| 国产欧美日韩另类视频免费观看 | 亚洲欧美日韩国产一区二区三区 | 91麻豆视频网站| 99re66热这里只有精品3直播| 国产精品一区在线| 国产成人日日夜夜| 成人妖精视频yjsp地址| 国产成人精品综合在线观看 | 91免费在线看| 色94色欧美sute亚洲线路一久| 99久久免费精品高清特色大片| av在线播放不卡| 色综合久久99| 欧美精品黑人性xxxx| 日韩美女在线视频| 国产色产综合产在线视频| 国产精品每日更新| 亚洲精品一二三| 日韩综合小视频| 国内精品写真在线观看| 成人一区二区三区在线观看 | 丝袜美腿成人在线| 久久精工是国产品牌吗| 国产盗摄精品一区二区三区在线| 成人av免费在线| 在线观看www91| 欧美成人r级一区二区三区| 国产欧美一区二区三区沐欲| 中文字幕中文字幕一区| 午夜激情综合网| 国产精品亚洲а∨天堂免在线| 91影院在线观看| 欧美一级免费大片| 国产精品高潮呻吟| 日韩国产在线观看| 成人国产视频在线观看| 欧美日韩一区国产| 国产日韩精品视频一区| 亚洲一区二区三区四区在线| 国内成人免费视频| 欧美亚洲自拍偷拍| 国产无遮挡一区二区三区毛片日本 | 在线观看精品一区| 国产欧美日本一区视频| 日本不卡在线视频| 99re热这里只有精品免费视频| 欧美va亚洲va国产综合| 亚洲欧美一区二区三区久本道91|