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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? aio.c

?? DMDD的嵌入式系統(tǒng)構(gòu)件源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/*
*********************************************************************************************************
*                                          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);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本系列欧美系列| 久草热8精品视频在线观看| 555www色欧美视频| 九九国产精品视频| 亚洲欧美韩国综合色| 91精品啪在线观看国产60岁| 精品一区二区三区在线播放视频| 中文字幕乱码日本亚洲一区二区 | 欧美日韩国产另类不卡| 精品一区二区国语对白| 亚洲视频一二三区| 久久久久久免费| 这里只有精品视频在线观看| 一本色道久久综合亚洲精品按摩| 国产乱码精品一区二区三区av | 国产丝袜在线精品| 欧美日本在线一区| 日本黄色一区二区| 91香蕉视频mp4| 成人开心网精品视频| 国产乱码精品一区二区三区忘忧草| 日韩精品欧美精品| 亚洲一区二区综合| 国产精品三级久久久久三级| 久久亚洲一区二区三区明星换脸| 在线成人高清不卡| 欧美日韩成人在线| 欧美视频一区二区三区| av福利精品导航| 99国产精品久久久久| 国产成人精品亚洲日本在线桃色| 精品一区二区在线播放| 首页综合国产亚洲丝袜| 亚洲h精品动漫在线观看| 亚洲精品日日夜夜| 亚洲美女少妇撒尿| 亚洲综合视频网| 亚洲18影院在线观看| 亚洲综合在线电影| 亚洲一区免费在线观看| 亚洲一二三四区| 亚洲超碰精品一区二区| 午夜av区久久| 亚洲视频在线一区观看| 精品婷婷伊人一区三区三| 美女爽到高潮91| 欧美高清dvd| 777亚洲妇女| 欧美一区二区精美| 欧美成人精品1314www| 精品国产乱码久久久久久1区2区 | 成人午夜伦理影院| 国产传媒欧美日韩成人| 成人av网站在线观看免费| 91在线国产观看| 在线观看亚洲a| 在线播放国产精品二区一二区四区| 欧美日韩国产另类不卡| 日韩精品自拍偷拍| 亚洲国产高清不卡| 亚洲综合丝袜美腿| 久久精品国产一区二区三| 国产二区国产一区在线观看| 成人免费的视频| 欧美日韩黄色影视| 久久免费偷拍视频| 一区二区三区四区不卡视频 | 丝袜诱惑制服诱惑色一区在线观看| 男人的j进女人的j一区| 秋霞电影网一区二区| 精品亚洲国产成人av制服丝袜| 国产成人av电影在线观看| 色综合久久久久| 欧美电影免费观看高清完整版在线 | 亚洲电影激情视频网站| 久久www免费人成看片高清| 久88久久88久久久| 99久久免费视频.com| 欧美精品免费视频| 国产色一区二区| 性做久久久久久免费观看欧美| 国产精品自拍三区| 欧美日本国产视频| 国产日本一区二区| 日韩精品91亚洲二区在线观看| 国产99久久久国产精品潘金网站| 91视频在线观看免费| 日韩午夜在线播放| 亚洲精品伦理在线| 国产九色sp调教91| 欧美日韩国产小视频在线观看| 欧美激情综合五月色丁香 | 国产精品77777| 欧美日韩在线播| 国产日韩三级在线| 免费欧美高清视频| 色久综合一二码| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲国产精品综合小说图片区| 国产精品1024久久| 日韩视频免费直播| 亚洲图片欧美综合| 粉嫩一区二区三区性色av| 欧美老年两性高潮| 一区二区在线观看视频| 国产综合色在线视频区| 色猫猫国产区一区二在线视频| 2020国产精品自拍| 丝袜a∨在线一区二区三区不卡| 成人免费毛片a| 国产亚洲综合av| 精品一二三四区| 日韩欧美国产一区在线观看| 亚洲午夜免费电影| 91视频你懂的| 国产精品蜜臀av| 国产黄色精品网站| 久久蜜桃一区二区| 精品一区二区久久| 精品欧美一区二区久久 | 日韩电影在线观看网站| 色诱视频网站一区| 国产精品欧美久久久久无广告| 国模一区二区三区白浆| 欧美一级日韩不卡播放免费| 三级影片在线观看欧美日韩一区二区| 一本色道久久综合狠狠躁的推荐| 国产精品黄色在线观看| 成人国产精品免费观看动漫| 国产色产综合色产在线视频| 国产精品一区一区三区| 2023国产精华国产精品| 国产一区二区精品久久91| 精品国产乱码久久久久久夜甘婷婷| 美国精品在线观看| 欧美成人精品高清在线播放| 精品一区二区在线看| 26uuu精品一区二区在线观看| 国产在线看一区| 欧美韩国日本不卡| 国产不卡视频一区| 国产精品久久久久天堂| 一本大道久久a久久精二百| 亚洲精品久久久蜜桃| 欧美色图免费看| 日韩主播视频在线| 日韩欧美在线影院| 国产高清亚洲一区| 国产精品毛片久久久久久久| 91麻豆免费视频| 午夜精品一区二区三区免费视频 | 久久久久久久久久久电影| 国产电影精品久久禁18| 中文字幕一区二区三区在线观看 | 国产精品五月天| 91美女福利视频| 亚洲一区二区偷拍精品| 欧美一区二区三区视频免费播放 | 亚洲欧美在线视频观看| 在线观看国产一区二区| 全国精品久久少妇| 国产午夜精品一区二区三区嫩草| 99在线精品免费| 亚洲福中文字幕伊人影院| 日韩一卡二卡三卡国产欧美| 国产成人免费视频精品含羞草妖精| 国产精品久久一级| 欧美区视频在线观看| 国产精品一卡二卡| 亚洲影院免费观看| 亚洲精品一区二区精华| 99热国产精品| 男男gaygay亚洲| 国产精品白丝在线| 日韩一区二区精品在线观看| 成人高清在线视频| 日本视频一区二区三区| 欧美国产精品中文字幕| 6080亚洲精品一区二区| 成人精品国产福利| 亚洲五月六月丁香激情| 久久影院视频免费| 在线观看成人小视频| 国产黑丝在线一区二区三区| 亚洲电影一区二区| 中文字幕欧美激情| 欧美一区二区三区系列电影| 97成人超碰视| 久久国产精品72免费观看| 曰韩精品一区二区| 亚洲欧美激情在线| 国产精品色婷婷久久58| 91麻豆精品国产无毒不卡在线观看| 国产成人午夜视频| 日本欧美久久久久免费播放网| 成人欧美一区二区三区小说| 日韩精品在线一区| 欧美日韩免费一区二区三区视频| 国产成人精品影视| 激情综合网天天干|