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

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

?? aio.c

?? DMDD的嵌入式系統(tǒng)構件源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
*********************************************************************************************************
*                                          Analog I/O Module
*
*                            (c) Copyright 1999, Jean J. Labrosse, Weston, FL
*                                          All Rights Reserved
*
* Filename   : AIO.C
* Programmer : Jean J. Labrosse
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                           INCLUDE FILES
*********************************************************************************************************
*/

#define   AIO_GLOBALS
#include "includes.h"

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

static  OS_STK      AIOTaskStk[AIO_TASK_STK_SIZE];
static  OS_EVENT   *AIOSem;

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

        void        AIOTask(void *data);

static  void        AIInit(void);
static  void        AIUpdate(void);

static  void        AOInit(void);
static  void        AOUpdate(void);

/*$PAGE*/
/*
*********************************************************************************************************
*                 CONFIGURE THE CALIBRATION PARAMETERS OF AN ANALOG INPUT CHANNEL
*
* Description : This function is used to configure an analog input channel.
* Arguments   : n        is the analog input channel to configure:
*               gain     is the calibration gain
*               offset   is the calibration offset
* Returns     : 0        if successfull.
*               1        if you specified an invalid analog input channel number.
*********************************************************************************************************
*/

INT8U  AICfgCal (INT8U n, FP32 gain, FP32 offset)
{
    INT8U err;
    AIO  *paio;


    if (n < AIO_MAX_AI) {
        paio               = &AITbl[n];               /* Point to Analog Input structure               */
        OSSemPend(AIOSem, 0, &err);                   /* Obtain exclusive access to AI channel         */
        paio->AIOCalGain   = gain;                    /* Store new cal. gain and offset into struct    */
        paio->AIOCalOffset = offset;
        paio->AIOGain      = paio->AIOCalGain   * paio->AIOConvGain;      /* Compute overall gain      */
        paio->AIOOffset    = paio->AIOCalOffset + paio->AIOConvOffset;    /* Compute overall offset    */
        OSSemPost(AIOSem);                                                /* Release AI channel        */
        return (0);
    } else {
        return (1);
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                    CONFIGURE THE CONVERSION PARAMETERS OF AN ANALOG INPUT CHANNEL
*
* Description : This function is used to configure an analog input channel.
* Arguments   : n        is the analog channel to configure (0..AIO_MAX_AI-1).
*               gain     is the conversion gain
*               offset   is the conversion offset
*               pass     is the value for the pass counts
* Returns     : 0        if successfull.
*               1        if you specified an invalid analog input channel number.
*********************************************************************************************************
*/

INT8U  AICfgConv (INT8U n, FP32 gain, FP32 offset, INT8U pass)
{
    INT8U err;
    AIO  *paio;


    if (n < AIO_MAX_AI) {
        paio                = &AITbl[n];              /* Point to Analog Input structure               */
        OSSemPend(AIOSem, 0, &err);                   /* Obtain exclusive access to AI channel         */
        paio->AIOConvGain   = gain;                   /* Store new conv. gain and offset into struct   */
        paio->AIOConvOffset = offset;
        paio->AIOGain       = paio->AIOCalGain   * paio->AIOConvGain;     /* Compute overall gain      */
        paio->AIOOffset     = paio->AIOCalOffset + paio->AIOConvOffset;   /* Compute overall offset    */
        paio->AIOPassCnts   = pass;
        OSSemPost(AIOSem);                                                /* Release AI channel        */
        return (0);
    } else {
        return (1);
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                      CONFIGURE THE SCALING PARAMETERS OF AN ANALOG INPUT CHANNEL
*
* Description : This function is used to configure the scaling parameters associated with an analog
*               input channel.
* Arguments   : n        is the analog input channel to configure (0..AIO_MAX_AI-1).
*               arg      is a pointer to arguments needed by the scaling function
*               fnct     is a pointer to a scaling function
* Returns     : 0        if successfull.
*               1        if you specified an invalid analog input channel number.
*********************************************************************************************************
*/

INT8U  AICfgScaling (INT8U n, void (*fnct)(AIO *paio), void *arg)
{
    AIO *paio;


    if (n < AIO_MAX_AI) {
        paio                  = &AITbl[n];            /* Faster to use a pointer to the structure      */
        OS_ENTER_CRITICAL();
        paio->AIOScaleFnct    = (void (*)())fnct;
        paio->AIOScaleFnctArg = arg;
        OS_EXIT_CRITICAL();
        return (0);
    } else {
        return (1);
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                GET THE VALUE OF AN ANALOG INPUT CHANNEL
*
* Description : This function is used to get the currect value of an analog input channel (in engineering
*               units).
* Arguments   : n     is the analog input channel (0..AIO_MAX_AI-1).
*               pval  is a pointer to the destination engineering units of the analog input channel
* Returns     : 0        if successfull.
*               1        if you specified an invalid analog input channel number.
*                        In this case, the destination is not changed.
*********************************************************************************************************
*/

INT8U  AIGet (INT8U n, FP32 *pval)
{
    AIO  *paio;


    if (n < AIO_MAX_AI) {
        paio  = &AITbl[n];
        OS_ENTER_CRITICAL();           /* Obtain exclusive access to AI channel                        */
        *pval = paio->AIOEU;           /* Get the engineering units of the analog input channel        */
        OS_EXIT_CRITICAL();            /* Release AI channel                                           */
        return (0);
    } else {
        return (1);
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                     ANALOG INPUTS INITIALIZATION
*
* Description : This function initializes the analog input channels.
* Arguments   : None
* Returns     : None.
*********************************************************************************************************
*/

static  void  AIInit (void)
{
    INT8U   i;
    AIO    *paio;


    paio = &AITbl[0];
    for (i = 0; i < AIO_MAX_AI; i++) {
        paio->AIOBypassEn     =  FALSE;           /* Analog channel is not bypassed                     */
        paio->AIORaw          =  0x0000;          /* Raw counts of ADC or DAC                           */
        paio->AIOEU           = (FP32)0.0;        /* Engineering units of AI channel                    */
        paio->AIOGain         = (FP32)1.0;        /* Total gain                                         */
        paio->AIOOffset       = (FP32)0.0;        /* Total offset                                       */
        paio->AIOLim          =       0;
        paio->AIOPassCnts     =       1;          /* Pass counts                                        */
        paio->AIOPassCtr      =       1;          /* Pass counter                                       */
        paio->AIOCalGain      = (FP32)1.0;        /* Calibration gain                                   */
        paio->AIOCalOffset    = (FP32)0.0;        /* Calibration offset                                 */
        paio->AIOConvGain     = (FP32)1.0;        /* Conversion gain                                    */
        paio->AIOConvOffset   = (FP32)0.0;        /* Conversion offset                                  */
        paio->AIOScaleIn      = (FP32)0.0;        /* Input  to scaling function                         */
        paio->AIOScaleOut     = (FP32)0.0;        /* Output of scaling function                         */
        paio->AIOScaleFnct    = (void *)0;        /* No function to execute                             */
        paio->AIOScaleFnctArg = (void *)0;        /* No arguments to scale function                     */
        paio++;
    }
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                   ANALOG I/O MANAGER INITIALIZATION
*
* Description : This function initializes the analog I/O manager module.
* Arguments   : None
* Returns     : None.
*********************************************************************************************************
*/

void  AIOInit (void)
{
    INT8U   err;


    AIInit();
    AOInit();
    AIOInitIO();
    AIOSem = OSSemCreate(1);                     /* Create a mutual exclusion semaphore for AIOs       */
    OSTaskCreateExt(AIOTask, (void *)0, &AIOTaskStk[AIO_TASK_STK_SIZE], AIO_TASK_PRIO,
                    AIO_TASK_PRIO, &AIOTaskStk[0], AIO_TASK_STK_SIZE, (void *)0, OS_TASK_OPT_SAVE_FP);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级免费大片| aa级大片欧美| 亚洲午夜国产一区99re久久| 国产精品久久久久影院色老大| 欧美丰满美乳xxx高潮www| 99视频超级精品| 91精品福利视频| 91久久精品一区二区三区| 欧美自拍偷拍午夜视频| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | av不卡免费电影| www.日本不卡| av电影在线观看完整版一区二区| bt欧美亚洲午夜电影天堂| 成人午夜在线播放| 99在线精品一区二区三区| 91原创在线视频| 欧美老年两性高潮| 欧美精品一区在线观看| xfplay精品久久| 国产欧美一区二区精品婷婷| 国产午夜精品福利| 亚洲欧洲综合另类| 亚洲成人免费在线观看| 日韩在线播放一区二区| 日日夜夜免费精品| 久久国产婷婷国产香蕉| 日本不卡高清视频| 国产精品77777| 欧美少妇一区二区| 久久一日本道色综合| 国产精品久久久久aaaa樱花| 亚洲亚洲精品在线观看| 麻豆久久久久久| 成人av片在线观看| 欧美日韩精品一区视频| 久久美女艺术照精彩视频福利播放| 久久久久综合网| 亚洲欧美日韩国产中文在线| 日韩成人一级大片| 不卡一区二区三区四区| 91精品国产91久久久久久一区二区| 久久久国产精品不卡| 午夜激情一区二区三区| 国产精品白丝jk黑袜喷水| 欧美色大人视频| 国产人久久人人人人爽| 丝袜诱惑亚洲看片| 99视频精品在线| 精品sm捆绑视频| 一区二区三区波多野结衣在线观看| 韩国三级在线一区| 欧美日韩亚洲综合| 国产精品欧美精品| 久久99国产精品成人| 欧美日韩一区在线观看| 国产精品久久久久久久久快鸭| 免费人成在线不卡| 欧美日韩一区二区三区四区 | 欧美精品一区二区三| 一区二区三区中文字幕在线观看| 九九国产精品视频| 欧美一卡二卡三卡| 午夜精品久久久久久久久久久| 成人一区在线看| 久久精品视频一区二区三区| 九色|91porny| 精品国产欧美一区二区| 美女精品自拍一二三四| 7777精品久久久大香线蕉| 亚洲人成网站色在线观看| 国产91精品精华液一区二区三区 | 午夜成人免费视频| 91老师片黄在线观看| 亚洲视频在线观看一区| thepron国产精品| 国产精品久久久久久久久免费樱桃| 国产v综合v亚洲欧| 国产精品三级av在线播放| 成人免费视频一区| 中文字幕中文乱码欧美一区二区| 成人免费视频网站在线观看| 中文字幕一区三区| 色婷婷综合久久久久中文一区二区| 日韩一区中文字幕| 欧洲精品中文字幕| 日韩av中文字幕一区二区三区| 欧美二区三区91| 国内成+人亚洲+欧美+综合在线| 日韩精品一区二区三区在线 | 26uuu色噜噜精品一区二区| 久久精工是国产品牌吗| 久久精品夜色噜噜亚洲aⅴ| 国产精品一区二区在线观看不卡| 国产日韩欧美电影| 91麻豆国产精品久久| 天天综合色天天综合| 亚洲精品一区二区三区精华液 | 91丨porny丨蝌蚪视频| 亚洲美腿欧美偷拍| 91麻豆精品国产91久久久| 精品亚洲porn| 1024国产精品| 91精品国产免费| 成人精品免费视频| 香蕉加勒比综合久久| 久久这里只有精品6| 色综合久久六月婷婷中文字幕| 亚洲一区二区三区在线播放| 日韩欧美久久久| 色综合久久久久综合体| 麻豆91免费观看| 亚洲码国产岛国毛片在线| 欧美一区二区女人| 91色porny在线视频| 美国十次了思思久久精品导航| 国产精品欧美经典| 日韩欧美卡一卡二| 欧美日韩一卡二卡三卡| 国产91丝袜在线播放| 日一区二区三区| 亚洲视频小说图片| 精品少妇一区二区三区在线视频| 99久久精品费精品国产一区二区| 日产国产欧美视频一区精品| 国产精品久久久久久久久免费丝袜| 日韩一区二区影院| 欧日韩精品视频| av电影在线不卡| 国产成人午夜精品5599| 免费视频最近日韩| 天天综合网 天天综合色| 国产精品久久综合| 国产亚洲一区二区三区在线观看 | 国产精品电影一区二区| 日韩免费性生活视频播放| 在线观看视频欧美| av资源网一区| 不卡的av电影| 成人黄色网址在线观看| 国产一区二区三区黄视频 | 久久精品欧美一区二区三区麻豆| 欧美一区二区三区精品| 欧美无砖专区一中文字| 91麻豆国产香蕉久久精品| 99re成人精品视频| jlzzjlzz亚洲日本少妇| av午夜精品一区二区三区| 国产精品资源网站| 国产精品69毛片高清亚洲| 国产永久精品大片wwwapp| 久久国产精品露脸对白| 久久国产精品第一页| 久久精品国产精品青草| 极品美女销魂一区二区三区 | 欧美图片一区二区三区| 色综合色狠狠综合色| 91精品福利在线| 精品1区2区3区| 日韩亚洲欧美高清| 久久综合色综合88| 国产日产亚洲精品系列| 国产色爱av资源综合区| 国产精品美女久久久久久久久 | 成人福利视频网站| av亚洲精华国产精华精| 色综合av在线| 欧美一区二区三区免费视频| 日韩精品一区二区在线| 国产清纯白嫩初高生在线观看91| 亚洲国产高清不卡| 一区二区三区四区精品在线视频| 亚洲国产精品久久久男人的天堂| 日韩专区在线视频| 激情综合网最新| 99久久精品免费看| 欧美无砖专区一中文字| 精品国产欧美一区二区| 中文字幕在线观看一区| 丝瓜av网站精品一区二区| 国内精品写真在线观看| 91免费小视频| 日韩视频免费观看高清完整版在线观看 | 久久黄色级2电影| 国产成人日日夜夜| 欧美怡红院视频| 久久久国产一区二区三区四区小说 | 亚洲视频你懂的| 男人的j进女人的j一区| 成人美女视频在线观看18| 精品视频一区二区三区免费| 久久夜色精品一区| 一区二区三区国产| 国产精品一区一区| 欧美日韩激情一区二区三区| 久久久99精品久久| 视频一区二区中文字幕| 99re这里都是精品| 久久久激情视频| 美女在线一区二区|