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

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

?? os_dcc.c

?? KEIL平臺下,LPC23XX官方的UCOSii的移植文件,包含各種功能的測試程序.
?? 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一区二区三区免费野_久草精品视频
国产精品国产三级国产a| 中文在线免费一区三区高中清不卡| av亚洲精华国产精华精华 | 亚洲欧美日韩系列| 国产拍欧美日韩视频二区| 精品电影一区二区| 精品国产乱码久久| 国产欧美精品日韩区二区麻豆天美| 精品国产乱码久久久久久牛牛| 精品成a人在线观看| www欧美成人18+| 国产精品丝袜一区| 亚洲日韩欧美一区二区在线| 一区二区三区四区av| 亚洲18影院在线观看| 麻豆精品一区二区综合av| 国内精品伊人久久久久影院对白| 国产一区二区三区黄视频 | 99久久777色| 在线观看av不卡| 欧美xfplay| 国产精品少妇自拍| 亚洲国产成人91porn| 蜜臀av国产精品久久久久| 国产成a人亚洲| 欧美午夜寂寞影院| 久久综合一区二区| 亚洲免费资源在线播放| 久久精品久久久精品美女| 丁香另类激情小说| 欧美猛男超大videosgay| 久久综合久色欧美综合狠狠| 亚洲另类春色国产| 久久er精品视频| 一本到一区二区三区| 日韩女优制服丝袜电影| 亚洲国产精品99久久久久久久久| 一区二区欧美在线观看| 国内外成人在线| 欧美日韩一级黄| 中文字幕欧美一区| 激情丁香综合五月| 欧美视频在线播放| 综合婷婷亚洲小说| 国产精品1区2区3区在线观看| 精品1区2区3区| 中文字幕一区免费在线观看| 久久99热这里只有精品| 欧美自拍偷拍一区| 最新不卡av在线| 国产麻豆精品视频| 日韩精品一区二区三区蜜臀 | 韩国三级电影一区二区| 在线视频你懂得一区二区三区| 久久久精品tv| 青青青伊人色综合久久| 色香色香欲天天天影视综合网| 久久精品人人做| 日韩av中文字幕一区二区三区| 91在线视频免费观看| 国产精品丝袜久久久久久app| 极品美女销魂一区二区三区| 在线成人av影院| 亚洲午夜久久久久中文字幕久| 成人午夜在线视频| 国产精品无圣光一区二区| 精品一区在线看| 日韩一二三区不卡| 日韩成人精品在线| 欧美变态tickle挠乳网站| 毛片av中文字幕一区二区| 精品视频免费看| 水野朝阳av一区二区三区| 欧美三级视频在线| 天天综合日日夜夜精品| 欧美日韩国产综合草草| 亚洲大尺度视频在线观看| 欧美日韩另类一区| 午夜精品久久久久久久| 欧美一区二区三区四区久久| 日本vs亚洲vs韩国一区三区二区| 欧美日韩国产一区二区三区地区| 亚洲成人免费看| 日韩欧美国产午夜精品| 韩国av一区二区三区四区| 国产精品污网站| 91精品办公室少妇高潮对白| 亚洲一区二区三区爽爽爽爽爽| 欧美高清视频www夜色资源网| 久久精品国产澳门| 国产亚洲自拍一区| 色婷婷综合五月| 日韩国产欧美一区二区三区| 精品国一区二区三区| 国产99久久久国产精品潘金| 国产精品欧美极品| 欧美日韩一区在线观看| 国产中文字幕精品| 一区二区三区精品久久久| 欧美一级欧美三级| proumb性欧美在线观看| 五月婷婷综合激情| 久久久精品国产免费观看同学| 99国产精品99久久久久久| 天天色天天爱天天射综合| 久久天天做天天爱综合色| 99v久久综合狠狠综合久久| 秋霞电影网一区二区| 国产精品第13页| 欧美一区二区三区在| www..com久久爱| 精品写真视频在线观看| 亚洲免费在线观看视频| 精品国产髙清在线看国产毛片| 波多野结衣精品在线| 捆绑调教一区二区三区| 亚洲在线一区二区三区| 精品对白一区国产伦| 欧美日韩国产一级二级| 不卡电影免费在线播放一区| 日韩av中文在线观看| 一区二区三区蜜桃网| 久久精品一级爱片| 7777精品久久久大香线蕉 | 亚洲成人综合视频| 欧美高清在线一区| 2021久久国产精品不只是精品| 欧美艳星brazzers| a美女胸又www黄视频久久| 久久精品国产亚洲aⅴ| 亚洲国产精品久久不卡毛片| 中文字幕一区二区三区视频 | 成人黄色一级视频| 麻豆传媒一区二区三区| 三级在线观看一区二区| 一区二区三区在线免费| 亚洲日本在线a| 国产日产亚洲精品系列| 26uuu国产一区二区三区| 欧美一区二区三区四区久久 | 久久精品男人天堂av| 日韩视频一区在线观看| 欧美一区二区精美| 欧美久久一区二区| 欧美日韩在线播| 欧美日韩aaaaaa| 欧美三级电影在线看| 欧美日韩中文国产| 欧美精品tushy高清| 欧美色综合久久| 欧美性大战久久久| 欧美人与性动xxxx| 91精品国产综合久久福利| 欧美日韩国产首页| 欧美顶级少妇做爰| 日韩欧美一区二区免费| 日韩视频免费直播| 久久久久久黄色| 欧美激情一二三区| 一区二区三区精品视频| 亚洲大尺度视频在线观看| 亚洲综合久久久久| 日韩在线卡一卡二| 免费高清视频精品| 国产成人av一区| 在线视频国内自拍亚洲视频| 欧美老肥妇做.爰bbww视频| 日韩免费电影网站| 国产精品理论片| 亚洲综合色成人| 激情五月激情综合网| 97久久超碰国产精品| 欧美精品在线一区二区| 26uuu欧美| 一区二区三区欧美激情| 免费观看在线综合色| 高清国产一区二区| 欧美年轻男男videosbes| 久久精品综合网| 亚洲曰韩产成在线| 国内成人免费视频| 91女神在线视频| 26uuuu精品一区二区| 一区二区欧美视频| 国产精品自在欧美一区| 一本色道**综合亚洲精品蜜桃冫| 91精品国产日韩91久久久久久| 欧美激情综合网| 欧美aaaaa成人免费观看视频| 国产成人精品一区二区三区网站观看| 91影视在线播放| 欧美电影免费观看高清完整版在 | 91在线小视频| 在线电影院国产精品| 国产精品久久久久影院亚瑟| 婷婷中文字幕综合| 91在线国产福利| 精品国产人成亚洲区| 亚洲一区二区三区四区的| 高清免费成人av|