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

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

?? aio.c

?? 是uC/OS II的作者寫的東西關于IO應用,強烈推薦
?? 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一区二区三区免费野_久草精品视频
日韩三级中文字幕| 亚洲一卡二卡三卡四卡| 一区二区三区不卡视频在线观看| 视频一区视频二区中文| 不卡一卡二卡三乱码免费网站| 欧美高清视频不卡网| 亚洲特级片在线| 福利一区二区在线| 日韩一级高清毛片| 视频一区视频二区在线观看| 色先锋资源久久综合| 中文在线资源观看网站视频免费不卡 | 成人午夜视频免费看| 69av一区二区三区| 亚洲午夜电影在线观看| 日本二三区不卡| 国产精品美女久久久久av爽李琼| 狂野欧美性猛交blacked| 欧美色图一区二区三区| 国产精品福利影院| a在线欧美一区| 国产精品久久久久久户外露出| 国产精品一品二品| 国产亚洲一区二区在线观看| 久久福利视频一区二区| 日韩欧美一级片| 极品尤物av久久免费看| 日韩欧美久久一区| 黑人巨大精品欧美黑白配亚洲 | 在线观看免费成人| 亚洲欧美日韩精品久久久久| 大桥未久av一区二区三区中文| 国产欧美一区二区三区在线看蜜臀| 国产在线精品免费| 欧美高清在线一区| 春色校园综合激情亚洲| 1024亚洲合集| 欧美在线观看视频在线| 日韩综合在线视频| 日韩视频免费观看高清在线视频| 麻豆精品蜜桃视频网站| 久久久久久99久久久精品网站| 国产成人精品一区二| 中文字幕日韩精品一区| 精品视频在线看| 久久超碰97人人做人人爱| 国产视频一区在线观看| 91在线看国产| 亚洲h动漫在线| 久久综合久色欧美综合狠狠| 国产精品一区二区三区99| 国产精品剧情在线亚洲| 欧美亚洲精品一区| 麻豆国产精品一区二区三区| 国产欧美一区二区精品久导航| 99视频超级精品| 日韩电影免费在线看| 国产亚洲1区2区3区| 色88888久久久久久影院按摩| 日韩av午夜在线观看| 亚洲国产精品精华液ab| 欧美日韩视频在线第一区| 国产一区二区视频在线| 亚洲欧美另类小说视频| 日韩久久久精品| 色播五月激情综合网| 免费成人在线影院| 亚洲美女免费在线| 欧美mv和日韩mv的网站| 成人av在线一区二区三区| 亚洲一区电影777| 欧美韩日一区二区三区四区| 欧美日韩国产美| 丁香天五香天堂综合| 五月开心婷婷久久| 国产精品欧美一级免费| 日韩欧美国产精品| 欧美手机在线视频| 福利一区二区在线观看| 美美哒免费高清在线观看视频一区二区 | 欧美一级片免费看| 91香蕉视频mp4| 国产一区二区精品在线观看| 性做久久久久久久免费看| 国产视频亚洲色图| 日韩欧美综合在线| 在线观看91视频| www.亚洲在线| 国产麻豆精品在线| 久久丁香综合五月国产三级网站| 亚洲综合一二区| 国产精品二区一区二区aⅴ污介绍| 日韩女优视频免费观看| 欧美日韩国产123区| 91福利小视频| 91色.com| 91论坛在线播放| 成人av电影在线| 国产传媒欧美日韩成人| 韩国三级电影一区二区| 久久福利资源站| 麻豆国产91在线播放| 麻豆成人综合网| 美女视频黄频大全不卡视频在线播放| 午夜影视日本亚洲欧洲精品| 亚洲美女偷拍久久| 亚洲伦理在线免费看| 国产精品成人一区二区艾草| 国产精品毛片大码女人| 亚洲国产成人在线| 国产精品妹子av| 中文字幕一区二区三| 亚洲欧美日韩国产成人精品影院| 最新高清无码专区| 亚洲综合男人的天堂| 亚洲一区二区三区四区不卡| 亚洲高清免费一级二级三级| 亚洲国产aⅴ天堂久久| 日精品一区二区三区| 免费高清视频精品| 国产麻豆成人传媒免费观看| 国产寡妇亲子伦一区二区| 成人涩涩免费视频| 94色蜜桃网一区二区三区| 在线观看日韩av先锋影音电影院| 欧美三区在线观看| 日韩一区二区三区免费观看| 久久亚洲捆绑美女| 中文字幕中文字幕在线一区| 一区2区3区在线看| 日韩影院在线观看| 国产精品一区二区男女羞羞无遮挡 | 久久精品夜色噜噜亚洲aⅴ| 国产欧美日韩视频在线观看| 亚洲桃色在线一区| 日韩国产精品久久久| 黄色日韩三级电影| av一本久道久久综合久久鬼色| 欧美性猛交xxxxxxxx| 日韩视频一区二区在线观看| 国产亚洲欧美色| 亚洲午夜激情网站| 国产乱子伦视频一区二区三区| 99热精品国产| 日韩欧美成人午夜| 亚洲色图色小说| 日本不卡视频一二三区| 丁香激情综合五月| 91精品国产丝袜白色高跟鞋| 国产精品久久久久四虎| 日韩 欧美一区二区三区| 成人免费观看视频| 欧美精品一级二级三级| 国产日韩精品一区| 无码av免费一区二区三区试看 | 日韩码欧中文字| 日韩av一二三| 日本道色综合久久| 久久综合国产精品| 亚洲成人一二三| caoporn国产一区二区| 日韩欧美国产三级| 亚洲国产精品一区二区www在线| 国产在线精品不卡| 4438x亚洲最大成人网| 亚洲欧美自拍偷拍色图| 精品一区二区在线看| 欧美精品乱人伦久久久久久| 综合av第一页| 懂色av噜噜一区二区三区av| 日韩欧美成人午夜| 日韩在线播放一区二区| 欧美亚洲综合另类| 综合久久久久久| 成人h动漫精品一区二| 久久网站最新地址| 捆绑调教一区二区三区| 欧美高清你懂得| 香蕉av福利精品导航| 欧美性淫爽ww久久久久无| 自拍偷拍国产亚洲| 99re这里只有精品首页| 欧美激情综合五月色丁香小说| 韩国精品主播一区二区在线观看| 在线播放/欧美激情| 亚洲123区在线观看| 欧美日韩精品综合在线| 亚洲午夜一区二区三区| 在线观看日韩国产| 亚洲一区二区在线播放相泽 | 成人一区二区三区中文字幕| 久久久亚洲精华液精华液精华液| 久久黄色级2电影| 日韩欧美电影一区| 国内精品国产成人国产三级粉色| 欧美一区二区福利视频| 五月激情综合色| 日韩美女一区二区三区| 精东粉嫩av免费一区二区三区| 精品国产乱码久久久久久夜甘婷婷|