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

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

?? os_dcc.c

?? NXPLPC2138 平臺下使用UC/0S-II 操作系統. 在IAR工工程環境下的源代碼.帶有一此驅動程序,LCD驅動,還有原開發板的BSP包.
?? C
字號:
/*
*********************************************************************************************************
*                                               uC/OS-II
*                                         The Real-Time Kernel
*
*
*                             (c) Copyright 1992-2007, Micrium, Weston, FL
*                                          All Rights Reserved
*
*                                           Generic ARM Port
*                                          DCC Communication
*
* File      : OS_DCC.C
* Version   : V1.82
*
* For       : ARM7 or ARM9
* Mode      : ARM or Thumb
* Toolchain : IAR's EWARM V4.40a and higher
*********************************************************************************************************
*/

#include <ucos_ii.h>
                                                     /* This directive suppresses warnings for non-... */
#pragma  diag_suppress=Pe940                         /* ...void functions with no return values.       */

#if OS_CPU_ARM_DCC_EN > 0

/*
*********************************************************************************************************
*                                           CONSTANTS
*********************************************************************************************************
*/

#define  OS_DCC_OP_READ_U32     0x01000000
#define  OS_DCC_OP_READ_U16     0x02000000
#define  OS_DCC_OP_READ_U8      0x04000000
#define  OS_DCC_OP_GET_CAPS     0x08000000
#define  OS_DCC_OP_WRITE_U32    0x10000000
#define  OS_DCC_OP_WRITE_U16    0x20000000
#define  OS_DCC_OP_WRITE_U8     0x40000000
#define  OS_DCC_OP_ODD_ADDR     0x80000000
#define  OS_DCC_OP_COMMAND      0x00000001

#define  OS_DCC_COMM_CTRL_RD    0x00000001
#define  OS_DCC_COMM_CTRL_WR    0x00000002

#define  OS_DCC_SIGNATURE       0x91CA0000
#define  OS_DCC_CONFIG          0x00000077

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

static  INT32U  OSDCC_Cmd;
static  INT32U  OSDCC_Addr;
static  INT32U  OSDCC_ItemCnt;
static  INT32U  OSDCC_Data;

/*
*********************************************************************************************************
*                                       OSDCC_ReadCtrl()
*
* Description: This function retrieves data from the comms control register.
*
* Arguments  : none
*
* Returns    : The contents of the comms control register
*
* Notes      : 1) This function uses a coprocessor register transfer instruction to place the contents
*                 of the comms control register in R0.  Thus, the function does not contain an
*                 explicit return statement.  "#pragma diag_suppress=Pe940", which appears at the
*                 top of this file, is used to suppress the warning that normally results from non-
*                 void functions lacking return statements.
*********************************************************************************************************
*/

static  __arm  INT32U  OSDCC_ReadCtrl (void)
{
    __asm("mrc  P14,0,R0,C0,C0");
}

/*
*********************************************************************************************************
*                                         OSDCC_Read()
*
* Description: This function retrieves data from the comms data read register.
*
* Arguments  : none
*
* Returns    : The contents of the comms data read register
*
* Notes      : 1) This function uses a coprocessor register transfer instruction to place the contents
*                 of the comms data read register in R0.  Thus, the function does not contain an
*                 explicit return statement.  "#pragma diag_suppress=Pe940", which appears at the
*                 top of this file, is used to suppress the warning that normally results from non-
*                 void functions lacking return statements.
*********************************************************************************************************
*/

static  __arm  INT32U  OSDCC_Read (void)
{
    __asm("mrc  P14,0,R0,C1,C0");
}

/*
*********************************************************************************************************
*                                        OSDCC_Write()
*
* Description: This function places data in the comms data write register.
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/

static  __arm  void  OSDCC_Write (INT32U data)
{
    __asm("mcr  P14,0,R0,C1,C0");
}

/*
*********************************************************************************************************
*                                        OSDCC_Handler()
*
* Description: This function reads commands from the DCC comms data read register.  Data may be
*              transferred to or from memory based on those commands.
*
* Arguments  : none
*
* Returns    : none
*
* Notes      : 1) This function should be called periodically.  If OS_CPU_ARM_DCC_EN is '1', this
*                 function will be called from both the idle task hook and the tick interrupt hook.
*********************************************************************************************************
*/

void  OSDCC_Handler (void)
{
    INT32U  reg_val;
#if OS_CRITICAL_METHOD == 3                          /* Allocate storage for CPU status register       */
    OS_CPU_SR  cpu_sr = 0;
#endif


    OS_ENTER_CRITICAL();                             /* Disable interrupts                             */

                                                     /* Check for the presence of new data             */
    if ((OSDCC_ReadCtrl() & OS_DCC_COMM_CTRL_RD) != 0) {
        reg_val = OSDCC_Read();                      /* Read the new data                              */

        if ((reg_val & OS_DCC_OP_COMMAND) != 0) {    /* Determine whether a command has been received  */
            OSDCC_Cmd = reg_val;
                                                     /* Check for an odd address in the next operation */
            if ((OSDCC_Cmd & OS_DCC_OP_ODD_ADDR) != 0) {
                OSDCC_Addr |= 1;
            }
                                                     /* If data will be read, adjust OSDCC_ItemCnt     */
            if ((OSDCC_Cmd & (OS_DCC_OP_READ_U32 | OS_DCC_OP_READ_U16 | OS_DCC_OP_READ_U8
                                                 |  OS_DCC_OP_GET_CAPS)) != 0) {
                OSDCC_ItemCnt = (OSDCC_Cmd >> 2) & 0xffff;
            } else {                                 /* Data will be written; initialize OSDCC_Data    */
                if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U32) != 0) {
                    OSDCC_Data |= (OSDCC_Cmd << 14) & 0xffff0000;
                } else {
                    OSDCC_Data = (OSDCC_Cmd >> 2) & 0xffff;
                }
                                                     /* Write a single byte                            */
                if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U8) != 0) {
                    *(INT8U *)OSDCC_Addr = OSDCC_Data;
                    OSDCC_Addr += 1;
                }
                                                     /* Write two bytes                                */
                if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U16) != 0) {
                    *(INT16U *)OSDCC_Addr = OSDCC_Data;
                    OSDCC_Addr += 2;
                }
                                                     /* Write four bytes                               */
                if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U32) != 0) {
                    *(INT32U *)OSDCC_Addr =OSDCC_Data;
                    OSDCC_Addr += 4;
                }
            }
            OS_EXIT_CRITICAL();
            return;
        }
        OSDCC_Addr     = reg_val;                    /* An address was received; OSDCC_Addr is updated */
    }
                                                     /* Determine whether data must be read            */
    if (OSDCC_ItemCnt != 0) {
                                                     /* Confirm that the comms data write register...  */
                                                     /* ...is free from the processor point of view    */
        if ((OSDCC_ReadCtrl() & OS_DCC_COMM_CTRL_WR) == 0) {
            reg_val = (OS_DCC_CONFIG | OS_DCC_SIGNATURE);
                                                     /* Read a single byte                             */
            if ((OSDCC_Cmd & OS_DCC_OP_READ_U8) != 0) {
                reg_val = *(INT8U *)OSDCC_Addr;
                OSDCC_Addr += 1;
            }
                                                     /* Read two bytes                                 */
            if ((OSDCC_Cmd & OS_DCC_OP_READ_U16) != 0) {
                reg_val = *(INT16U *)OSDCC_Addr;
                OSDCC_Addr += 2;
            }
                                                     /* Read four bytes                                */
            if ((OSDCC_Cmd & OS_DCC_OP_READ_U32) != 0) {
                reg_val = *(INT32U *)OSDCC_Addr;
                OSDCC_Addr += 4;
            }

            OSDCC_Write(reg_val);                    /* Place data in the comms data write register    */
            OSDCC_ItemCnt--;                         /* Decrement the number of items to be read       */
        }
    }
    OS_EXIT_CRITICAL();
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲欧美日韩俺去了| 久久久久久久久蜜桃| 日韩欧美在线网站| 中文字幕一区二区三| 裸体一区二区三区| 91首页免费视频| 精品福利一二区| 五月综合激情网| 一本大道久久a久久精二百| 日韩免费成人网| 亚洲国产一区二区三区| 成人在线视频首页| 精品欧美一区二区三区精品久久| 亚洲激情欧美激情| 成人黄页在线观看| 精品av综合导航| 天天亚洲美女在线视频| 色婷婷av一区二区三区大白胸| 久久久精品人体av艺术| 久久国产人妖系列| 日韩一级二级三级| 视频一区二区三区中文字幕| 在线观看成人小视频| 国产精品高潮久久久久无| 国内精品久久久久影院色| 日韩午夜三级在线| 日韩精彩视频在线观看| 欧美日韩一区中文字幕| 亚洲国产精品嫩草影院| 在线免费亚洲电影| 亚洲乱码国产乱码精品精小说 | 欧美色网一区二区| 中文字幕中文字幕在线一区| 国产成人a级片| 国产精品网站在线| 99re在线视频这里只有精品| 中文字幕一区二区日韩精品绯色| 成人av在线一区二区三区| 中文在线一区二区| 9i看片成人免费高清| 中文字幕制服丝袜成人av | 秋霞午夜av一区二区三区| 欧美日韩一区小说| 奇米精品一区二区三区在线观看| 在线播放91灌醉迷j高跟美女 | 日韩va欧美va亚洲va久久| 欧美日韩国产综合一区二区| 水野朝阳av一区二区三区| 日韩欧美电影一区| 国产麻豆精品theporn| 国产精品久久国产精麻豆99网站| 91在线观看视频| 亚洲综合免费观看高清完整版在线 | 99国产精品视频免费观看| 亚洲人成精品久久久久久| 欧洲一区在线电影| 青青国产91久久久久久| 久久精品人人爽人人爽| 91亚洲国产成人精品一区二区三| 亚洲一区二区三区四区中文字幕 | 精品国产电影一区二区| 国产成人精品亚洲777人妖| 亚洲色图都市小说| 欧美一区二区久久久| 国产一区二区福利| 亚洲人快播电影网| 日韩一级免费观看| 99国产一区二区三精品乱码| 日韩国产欧美在线视频| 91色乱码一区二区三区| 麻豆传媒一区二区三区| 91在线国产福利| 蜜桃精品视频在线| 国产精品久久久久一区二区三区| 欧美日韩三级在线| 欧美亚洲国产bt| 精久久久久久久久久久| 亚洲综合丝袜美腿| 国产日产亚洲精品系列| 51午夜精品国产| 99r精品视频| 国产裸体歌舞团一区二区| 亚洲一区二区三区四区中文字幕| 久久久久9999亚洲精品| 欧美日韩电影一区| thepron国产精品| 久久99精品国产麻豆不卡| 亚洲综合精品自拍| 国产精品伦理在线| 亚洲精品一区二区在线观看| 欧美在线观看视频一区二区三区 | 国产激情一区二区三区四区 | 在线看不卡av| 国产98色在线|日韩| 蜜桃视频在线观看一区二区| 亚洲国产乱码最新视频| 亚洲欧美一区二区视频| 国产色产综合色产在线视频| 91精品国产综合久久香蕉的特点| 日本韩国欧美国产| av高清不卡在线| 国产高清成人在线| 国产乱子伦视频一区二区三区| 视频一区二区三区中文字幕| 亚洲午夜精品久久久久久久久| 中文字幕五月欧美| 国产精品久久久久天堂| 久久精品欧美一区二区三区不卡| 欧美zozo另类异族| 日韩一区二区免费高清| 欧美日韩一区二区三区在线| 欧美系列日韩一区| 欧美亚洲综合另类| 欧美日韩一级片网站| 在线免费观看不卡av| 色综合久久天天| 91福利视频网站| 欧美在线综合视频| 欧美三级资源在线| 51午夜精品国产| 91精品国产综合久久精品麻豆| 欧美久久婷婷综合色| 欧美日韩不卡在线| 日韩欧美一级二级三级| 欧美成人激情免费网| 久久久久久免费网| 国产欧美日韩三区| 免费一级片91| 久久国产生活片100| 国产精品99久| 91视频国产观看| 欧美另类videos死尸| 日韩精品一区二区三区蜜臀 | 7777精品伊人久久久大香线蕉超级流畅| 欧美在线观看视频在线| 欧美一级黄色片| 久久久美女毛片| 亚洲欧美综合在线精品| 亚洲午夜国产一区99re久久| 日本女优在线视频一区二区| 国产一区啦啦啦在线观看| 不卡电影一区二区三区| 91福利视频久久久久| 欧美一区三区二区| 国产婷婷色一区二区三区在线| 亚洲天堂网中文字| 日本一不卡视频| 不卡av在线免费观看| 欧美乱妇23p| 欧美国产精品劲爆| 香蕉成人啪国产精品视频综合网| 久久超碰97中文字幕| 成人精品视频一区二区三区尤物| 欧亚洲嫩模精品一区三区| 日韩视频一区二区三区在线播放 | 91精品国产美女浴室洗澡无遮挡| 久久亚洲免费视频| 亚洲综合在线视频| 国产一区二区三区视频在线播放| 一本色道久久综合精品竹菊| 日韩一区二区中文字幕| 亚洲欧美一区二区视频| 久久国产精品第一页| 日本丰满少妇一区二区三区| 26uuu亚洲综合色欧美| 亚洲国产成人高清精品| 成人一级片在线观看| 日韩欧美综合一区| 亚洲综合色区另类av| 成人h动漫精品一区二区| 日本一区二区三区四区在线视频| 亚洲18色成人| 91污片在线观看| 国产日韩成人精品| 久久99精品国产麻豆婷婷 | 欧美一级高清片在线观看| 亚洲乱码一区二区三区在线观看| 国产伦精品一区二区三区视频青涩 | 国产精品久久久久aaaa樱花| 久久精品国产亚洲5555| 欧美无乱码久久久免费午夜一区| 日本一区二区三级电影在线观看| 日韩精品成人一区二区在线| 在线观看日产精品| 国产精品久久久久久久久快鸭 | 成人一区在线看| 精品久久一区二区| 蜜臀精品一区二区三区在线观看| 在线免费一区三区| 日韩伦理免费电影| 成人av一区二区三区| 国产欧美一区二区精品婷婷| 国产一区二区在线观看视频| 欧美xxxxx牲另类人与| 日韩国产在线观看| 欧美一区二区三区思思人| 石原莉奈一区二区三区在线观看| 欧美无砖砖区免费| 天天色综合成人网| 欧美一区二区不卡视频|