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

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

?? aio.c

?? 一些ucos的外圍接口原代碼,如鍵盤LCDLED
?? 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一区二区三区免费野_久草精品视频
天天做天天摸天天爽国产一区| 国产精品午夜久久| 91视频国产资源| 成人中文字幕合集| 在线亚洲免费视频| 色哟哟精品一区| 色婷婷综合久久久久中文一区二区| 波多野结衣亚洲一区| a美女胸又www黄视频久久| 99久久婷婷国产综合精品 | 国产日韩欧美一区二区三区综合| 欧美成人一区二区三区| 精品日韩av一区二区| 久久综合狠狠综合久久激情 | 韩国成人福利片在线播放| 免费一区二区视频| 国产在线播精品第三| 国产福利视频一区二区三区| k8久久久一区二区三区| 欧美性色黄大片手机版| 日韩一区二区影院| 2022国产精品视频| 亚洲欧美激情小说另类| 日韩中文字幕麻豆| 高清成人免费视频| 欧美性受xxxx黑人xyx| 日韩精品中文字幕一区| 国产精品久久久久久亚洲毛片| 亚洲人成在线播放网站岛国| 日韩国产欧美三级| 成人福利在线看| 欧美日本一区二区在线观看| 亚洲欧洲日本在线| 亚洲chinese男男1069| 韩国成人在线视频| 欧美日韩视频第一区| 国产欧美一区二区精品忘忧草 | 欧美日韩国产综合草草| 日韩精品一区二区三区在线观看| 综合中文字幕亚洲| 久久99精品久久久久久国产越南 | 91国产免费看| 久久婷婷国产综合国色天香 | 精品伦理精品一区| 亚洲激情五月婷婷| 国产在线不卡视频| 777亚洲妇女| 亚洲美女淫视频| 国内成人精品2018免费看| 欧美亚洲一区三区| 国产精品视频一二三| 欧美a级理论片| 成人免费看片app下载| 欧美电视剧在线看免费| 亚洲图片欧美色图| 日本精品一区二区三区高清 | 国产色爱av资源综合区| 国产乱码精品一品二品| 色94色欧美sute亚洲线路二 | 欧美日韩三级一区| 亚洲精品五月天| a4yy欧美一区二区三区| 26uuu久久综合| 日韩高清在线一区| 欧美视频一区在线观看| 亚洲视频一二三| 国产精品一区二区x88av| 精品动漫一区二区三区在线观看 | 精品人在线二区三区| 天涯成人国产亚洲精品一区av| 色94色欧美sute亚洲线路一ni| 国产欧美精品一区| 国产精品一区二区久久精品爱涩| 精品国产伦理网| 九色综合国产一区二区三区| 欧美一区二区大片| 黑人巨大精品欧美黑白配亚洲| 337p亚洲精品色噜噜| 丝袜亚洲另类丝袜在线| 欧美群妇大交群中文字幕| 午夜日韩在线观看| 在线综合视频播放| 精品在线观看免费| 国产亚洲午夜高清国产拍精品| 狠狠色综合日日| 国产精品黄色在线观看| 91国模大尺度私拍在线视频| 亚洲不卡av一区二区三区| 日韩女优视频免费观看| 国产精品亚洲午夜一区二区三区| 亚洲国产精品成人综合色在线婷婷| 国产成人亚洲精品青草天美| 中文字幕日韩一区| 欧美精三区欧美精三区| 国产一区二区网址| 专区另类欧美日韩| 在线播放中文一区| 国产老妇另类xxxxx| |精品福利一区二区三区| 欧洲中文字幕精品| 久草在线在线精品观看| 亚洲成人精品影院| 欧美一区二区三区人| 国产成人av影院| 亚洲综合无码一区二区| 日韩精品一区二区三区中文不卡 | 成人h精品动漫一区二区三区| 亚洲精品视频免费看| 在线播放国产精品二区一二区四区| 精品中文av资源站在线观看| 日韩美女啊v在线免费观看| 欧美午夜精品一区二区蜜桃| 国产一区二区主播在线| 亚洲综合男人的天堂| 精品少妇一区二区三区视频免付费| 国产91综合一区在线观看| 亚洲不卡一区二区三区| 国产精品久久看| 日韩欧美成人午夜| 欧美日韩在线三级| 国产成人午夜电影网| 日本va欧美va瓶| 亚洲精品日韩综合观看成人91| 日韩午夜在线观看视频| jlzzjlzz亚洲日本少妇| 激情五月婷婷综合| 日韩影院在线观看| 中文字幕在线一区| 久久综合久久久久88| 欧美精品久久久久久久多人混战| 成人福利视频网站| 极品美女销魂一区二区三区| 亚洲1区2区3区视频| 亚洲人成网站影音先锋播放| 久久综合色天天久久综合图片| 欧美不卡一区二区三区四区| 91一区二区三区在线播放| 久久99久久久久| 三级在线观看一区二区| 一区二区三区四区高清精品免费观看 | 欧美三级在线视频| 91色乱码一区二区三区| 不卡的av在线| av亚洲精华国产精华精华| 国产精品99久久久久久久vr| 麻豆精品视频在线| 久久国产夜色精品鲁鲁99| 日本成人中文字幕| 日韩成人免费在线| 人人爽香蕉精品| 麻豆精品在线看| 国精产品一区一区三区mba桃花| 视频在线观看91| 蜜桃精品在线观看| 久久福利资源站| 国内精品免费**视频| 国产美女精品人人做人人爽| 日本午夜一区二区| 免费成人小视频| 国产精品一二二区| 不卡一区中文字幕| 97超碰欧美中文字幕| 91国产福利在线| 91麻豆精品久久久久蜜臀 | 国产一区二区三区黄视频| 国产剧情一区二区三区| 大胆欧美人体老妇| 在线精品视频一区二区| 欧美日韩国产综合草草| 日韩视频中午一区| 国产亚洲欧美日韩俺去了| 国产精品久久久久久久久久久免费看| 国产精品福利一区| 亚洲图片欧美一区| 韩国成人精品a∨在线观看| 成人黄色av电影| 精品视频1区2区| 久久无码av三级| 亚洲精品视频在线看| 蜜臀av一级做a爰片久久| 国产91精品一区二区| 欧美亚洲尤物久久| 久久网站最新地址| 亚洲精品videosex极品| 免费在线看成人av| 91在线无精精品入口| 日韩一级精品视频在线观看| 国产日韩欧美精品电影三级在线| 亚洲人123区| 免费xxxx性欧美18vr| 国产在线播放一区三区四| 色琪琪一区二区三区亚洲区| 91精品国产综合久久久久久漫画| 国产性做久久久久久| 亚洲va欧美va国产va天堂影院| 国产一区在线观看麻豆| 欧美日韩国产综合视频在线观看| 国产亚洲精品aa午夜观看| 图片区小说区国产精品视频| 播五月开心婷婷综合|