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

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

?? bsp_stlm75.c

?? stm32+ucos-ii
?? C
字號:
/*
*********************************************************************************************************
*                                     MICRIUM BOARD SUPPORT SUPPORT
*
*                          (c) Copyright 2003-2009; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*               Knowledge of the source code may NOT be used to develop a similar product.
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                     MICIUM BOARD SUPPORT PACKAGE
*                                 STLM75 CMOS TEMPERATURE SENSOR DRIVER
*                                                                         
*
* Filename      : bsp_stlm75.c
* Version       : V1.00
* Programmer(s) : FT
*********************************************************************************************************
* Note(s)       :
*********************************************************************************************************
*/

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

#define  BSP_STLM75_MODULE
#include <bsp.h>


/*
*********************************************************************************************************
*                                              LOCAL DEFINES
*********************************************************************************************************
*/

#define BSP_STLM75_REG_TEMP                      DEF_BIT_NONE
#define BSP_STLM75_REG_CONF                      DEF_BIT_00
#define BSP_STLM75_REG_T_HYST                    DEF_BIT_01
#define BSP_STLM75_REG_T_OS                     (DEF_BIT_01 | DEF_BIT_00)


#define BSP_STLM75_REG_CONF_SD                   DEF_BIT_00
#define BSP_STLM75_REG_CONF_THERMOSTAT_MODE      DEF_BIT_01
#define BSP_STLM75_REG_CONF_POL                  DEF_BIT_02
#define BSP_STLM75_REG_CONF_FT0                  DEF_BIT_03
#define BSP_STLM75_REG_CONF_FT1                  DEF_BIT_04


#define BSP_STLM75_I2C_ADDR                    ((CPU_INT08U)0x48)


/*
*********************************************************************************************************
*                                           LOCAL CONSTANTS
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                           LOCAL MACRO'S
*********************************************************************************************************
*/

#define  BSP_STLM75_TEMP_TO_REG(temp)         ((CPU_INT16U)((((CPU_INT16U)(temp) << 8) & DEF_BIT_FIELD(9, 7))))
#define  BSP_STLM75_REG_TO_TEMP(reg)          ((CPU_INT08S)((((CPU_INT16U)(reg)  >> 8) & DEF_BIT_FIELD(9, 0))))


/*
*********************************************************************************************************
*                                          LOCAL DATA TYPES
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                            LOCAL TABLES
*********************************************************************************************************
*/


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


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


static  CPU_BOOLEAN  BSP_STLM75_WrReg_08  (CPU_INT08U  reg,
                                           CPU_INT08U  reg_val);

static  CPU_BOOLEAN  BSP_STLM75_WrReg_16  (CPU_INT08U  reg,
                                           CPU_INT16U  reg_val);

static  CPU_BOOLEAN  BSP_STLM75_RdReg_16  (CPU_INT08U  reg,
                                           CPU_INT16U *p_reg_val);


/*
*********************************************************************************************************
*                                     LOCAL CONFIGURATION ERRORS
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*********************************************************************************************************
**                                         GLOBAL FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                        BSP_STLM75_Init ()
*
* Description : Initialize the the STLM75 Tempeture sensor.
*
* Argument(s) : none.
*
* Return(s)   : DEF_OK     If the STLM75 Tempeture sensor was initialized
*               DEF_FAIL   If the STLM75 Tempeture sensor could not be initialized.
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

CPU_BOOLEAN  BSP_STLM75_Init (void)
{
    CPU_BOOLEAN  err;
    
    
    err = BSP_I2C_Init(BSP_I2C_ID_I2C1, 
                       BSP_I2C_MODE_STANDARD, 
                       BSP_I2C_MODE_STANDARD_MAX_FREQ_HZ);
    
    return (err);
    
}


/*
*
*********************************************************************************************************
*                                        BSP_STLM75_CfgSet()
*
* Description : Configures the STLM75 Tempeture sensor
*
* Argument(s) : p_stlm75_cfg    Pointer to the STLM75 configuration.
*
* Return(s)   : DEF_OK     If the STLM75 Tempeture Sensor configuration could be returned
*               DEF_FAIL   If the STLM75 Tempeture sensor configuration could not be returned
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

CPU_BOOLEAN  BSP_STLM75_CfgSet (BSP_STLM75_CFG  *p_stlm75_cfg)
{
    CPU_INT16U   reg_val;
    CPU_BOOLEAN  err;
    
    
    if (p_stlm75_cfg == (BSP_STLM75_CFG *)0) {
        return (DEF_FAIL);
    }
                                                                /* --------- SET THE CONFIGURATION REGISTER -------- */
    reg_val = DEF_BIT_NONE;
    
    if (p_stlm75_cfg->Mode == BSP_STLM75_MODE_INTERRUPT) {
        reg_val = BSP_STLM75_REG_CONF_THERMOSTAT_MODE;
    }

    if (p_stlm75_cfg->IntPol == BSP_STLM75_INT_POL_HIGH) {
        DEF_BIT_SET(reg_val, BSP_STLM75_REG_CONF_POL);
    }
    
    switch (p_stlm75_cfg->FaultLevel) {
        case BSP_STLM75_FAULT_LEVEL_2:
             DEF_BIT_SET(reg_val, BSP_STLM75_REG_CONF_FT0);
             break;
             
        case BSP_STLM75_FAULT_LEVEL_4:
             DEF_BIT_SET(reg_val, BSP_STLM75_REG_CONF_FT1);
             break;

        case BSP_STLM75_FAULT_LEVEL_6:
             DEF_BIT_SET(reg_val, BSP_STLM75_REG_CONF_FT1 | BSP_STLM75_REG_CONF_FT0);
             break;

        case BSP_STLM75_FAULT_LEVEL_1:
             break;
             
        default:
             return (DEF_FAIL);
    }
    
    err = BSP_STLM75_WrReg_08((CPU_INT08U)BSP_STLM75_REG_CONF, 
                              (CPU_INT08U)reg_val);
    
    if (err == DEF_FAIL) {
        return (DEF_FAIL);
    }
    
    reg_val = BSP_STLM75_TEMP_TO_REG(p_stlm75_cfg->HystTemp);
    
    err = BSP_STLM75_WrReg_16((CPU_INT08U)BSP_STLM75_REG_T_HYST, 
                              (CPU_INT16U)reg_val);
    
    if (err == DEF_FAIL) {
        return (DEF_FAIL);
    }

    
    reg_val = BSP_STLM75_TEMP_TO_REG(p_stlm75_cfg->OverLimitTemp);
    
    err = BSP_STLM75_WrReg_16((CPU_INT08U)BSP_STLM75_REG_T_OS, 
                              (CPU_INT16U)reg_val);
    
    return (err);

}


/*
*********************************************************************************************************
*                                        BSP_STLM75_WrReg_08()
*
* Description : Write 8-bit value to STLM75 register.
*
* Argument(s) : reg        STLM75's register
*                              BSP_STLM75_REG_TEMP
*                              BSP_STLM75_REG_CONF
*                              BSP_STLM75_REG_T_HYST
*                              BSP_STLM75_REG_T_OS
*
* Return(s)   : DEF_OK     If the STLM75's register could be written.
*               DEF_FAIL   If the STLM75's register could not be written.
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  CPU_BOOLEAN  BSP_STLM75_WrReg_08  (CPU_INT08U  reg,
                                           CPU_INT08U  reg_val)
{
    CPU_INT08U   i2c_buf[2];
    CPU_BOOLEAN  err;
    
    
    i2c_buf[0] = reg;
    i2c_buf[1] = reg_val;
    
    
    err = BSP_I2C_Wr( BSP_I2C_ID_I2C1, 
                      BSP_STLM75_I2C_ADDR, 
                     &i2c_buf[0], 
                      2);
    
    return (err);
}


/*
*********************************************************************************************************
*                                        BSP_STLM75_WrReg_16()
*
* Description : Write 16-bit value to STLM75 register.
*
* Argument(s) : reg        STLM75's register
*                              BSP_STLM75_REG_TEMP
*                              BSP_STLM75_REG_CONF
*                              BSP_STLM75_REG_T_HYST
*                              BSP_STLM75_REG_T_OS
*
* Return(s)   : DEF_OK     If the STLM75's register could be written.
*               DEF_FAIL   If the STLM75's register could not be written.
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  CPU_BOOLEAN  BSP_STLM75_WrReg_16  (CPU_INT08U  reg,
                                           CPU_INT16U  reg_val)
{
    CPU_INT08U   i2c_buf[3];
    CPU_BOOLEAN  err;
    
    
    i2c_buf[0] = reg;
    i2c_buf[1] = (reg_val >> 8) & DEF_BIT_FIELD(8, 0);
    i2c_buf[2] = (reg_val >> 0) & DEF_BIT_FIELD(8, 0);;
    
    
    err = BSP_I2C_Wr( BSP_I2C_ID_I2C1, 
                      BSP_STLM75_I2C_ADDR, 
                     &i2c_buf[0], 
                      3);
    
    return (err);
}


/*
*********************************************************************************************************
*                                        BSP_STLM75_RdReg_16()
*
* Description : Read 16-bit register from STLM75 device
*
* Argument(s) : reg        STLM75's register
*                              BSP_STLM75_REG_TEMP
*                              BSP_STLM75_REG_CONF
*                              BSP_STLM75_REG_T_HYST
*                              BSP_STLM75_REG_T_OS
*
* Return(s)   : DEF_OK     If the STLM75's register could be read.
*               DEF_FAIL   If the STLM75's register could not be read.
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  CPU_BOOLEAN  BSP_STLM75_RdReg_16  (CPU_INT08U   reg,
                                           CPU_INT16U  *p_reg_val)
{
    CPU_INT08U   i2c_buf[3];
    CPU_BOOLEAN  err;
    
    
    i2c_buf[0] = reg;
    
    
    err = BSP_I2C_WrRd( BSP_I2C_ID_I2C1, 
                        BSP_STLM75_I2C_ADDR, 
                       &i2c_buf[0], 
                        3);

    if (err == DEF_FAIL) {
       return (DEF_FAIL);
    }

    *p_reg_val   = (i2c_buf[2] << 0)
                 | (i2c_buf[1] << 8);
    
    return (DEF_OK);
}


/*
*********************************************************************************************************
*                                        BSP_STLM75_TempGet()
*
* Description : Read the current temperature from the STLM75
*
* Argument(s) : temp_unit       Temperature unit:
*                                   BSP_STLM75_TEMP_UNIT_CELSIUS
*                                   BSP_STLM75_TEMP_UNIT_FAHRENHEIT
*                                   BSP_STLM75_TEMP_UNIT_KELVIN
*
*               p_temp_val      Pointer to the variable that will store the temperature.

*
* Return(s)   : DEF_OK     If the temperature could be read.
*               DEF_FAIL   If the temperature could not be read.
*
* Caller(s)   : Application
*
* Note(s)     : none.
*********************************************************************************************************
*/

CPU_BOOLEAN  BSP_STLM75_TempGet  (CPU_INT08U   temp_unit,
                                  CPU_INT16S  *p_temp_val)

{
    CPU_INT16S   temp_c;
    CPU_INT16U   reg_val;
    CPU_BOOLEAN  err;
    
    
    err = BSP_STLM75_RdReg_16(BSP_STLM75_REG_TEMP,
                             &reg_val);
        
    if (err == DEF_FAIL) {
        return (DEF_FAIL);
    }
    

    temp_c  = BSP_STLM75_REG_TO_TEMP(reg_val);

    switch (temp_unit) {
        case BSP_STLM75_TEMP_UNIT_CELSIUS:
            *p_temp_val = temp_c;
             break;
             
        case BSP_STLM75_TEMP_UNIT_FAHRENHEIT:
             *p_temp_val = ((temp_c * 9) / 5) + 32;
             break;
        
        
        case BSP_STLM75_TEMP_UNIT_KELVIN:
             *p_temp_val = ((temp_c + 273));
             break;
             
        
        default:
             return (DEF_FAIL);
             
    }
       
   return (DEF_OK);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米777欧美一区二区| 欧美二区在线观看| 国产成人av一区| 国内偷窥港台综合视频在线播放| 奇米一区二区三区| 久久精品国产亚洲5555| 久久99精品久久只有精品| 美国一区二区三区在线播放| 免费视频一区二区| 国产在线一区观看| 国产乱色国产精品免费视频| 国产高清在线精品| 成年人网站91| 欧洲色大大久久| 欧美理论电影在线| 日韩欧美亚洲另类制服综合在线 | 欧美日韩精品三区| 欧美放荡的少妇| 久久一区二区三区四区| 国产欧美精品一区二区色综合朱莉 | 日韩天堂在线观看| 欧美精品一区二区三区四区| 国产日韩精品一区二区三区 | 亚洲黄色录像片| 亚洲1区2区3区视频| 免费高清视频精品| 国产精品中文有码| 91蝌蚪国产九色| 538prom精品视频线放| 久久免费的精品国产v∧| 国产精品久久久久久久浪潮网站| 亚洲精品中文字幕乱码三区| 午夜电影久久久| 国产成人午夜99999| 色88888久久久久久影院按摩| 欧美一区二区视频观看视频| 国产视频911| 一区二区三区视频在线看| 亚洲h在线观看| 国产精品一区二区不卡| 日本丰满少妇一区二区三区| 欧美一区二区成人| 中文字幕第一区综合| 五月天一区二区三区| 国产精品小仙女| 欧美日韩精品一区二区三区蜜桃| 久久综合久久综合久久综合| 亚洲欧美经典视频| 国内外成人在线| 欧美在线免费观看亚洲| 国产午夜亚洲精品午夜鲁丝片| 亚洲国产一区在线观看| 国产成人一区二区精品非洲| 欧美日韩国产首页在线观看| 日本一区二区三区免费乱视频| 亚洲一区av在线| 国产成人精品三级麻豆| 91精品久久久久久久91蜜桃| 国产精品成人网| 久久精品噜噜噜成人88aⅴ| 日本久久电影网| 欧美激情一区二区三区四区| 日韩专区欧美专区| 91在线视频在线| 久久女同精品一区二区| 午夜电影网亚洲视频| 91网站黄www| 日韩你懂的在线观看| 亚洲精品一卡二卡| 成人av在线看| 久久久www成人免费无遮挡大片| 亚洲一区二区高清| 91欧美激情一区二区三区成人| 精品久久久久久亚洲综合网| 五月激情六月综合| 欧美在线一区二区| 亚洲少妇中出一区| 成人精品视频一区二区三区| 久久久99精品免费观看不卡| 美女视频网站久久| 欧美日韩精品电影| 一区二区免费视频| 91麻豆swag| 国产精品护士白丝一区av| 国产激情偷乱视频一区二区三区| 精品久久久久久久久久久久久久久久久 | 久久综合狠狠综合| 欧美aaa在线| 久久精品一区蜜桃臀影院| 欧美第一区第二区| 日韩专区欧美专区| 欧美丰满少妇xxxxx高潮对白| 一区二区三区欧美日| jlzzjlzz亚洲日本少妇| 国产日韩av一区二区| 99在线热播精品免费| 色播五月激情综合网| 亚洲另类春色校园小说| 97精品久久久午夜一区二区三区| 国产精品乱码一区二三区小蝌蚪| 国产乱人伦偷精品视频免下载| 2021中文字幕一区亚洲| 韩日欧美一区二区三区| 久久精品亚洲麻豆av一区二区 | 91在线porny国产在线看| 中文字幕一区二区不卡| www.爱久久.com| 成人免费在线视频观看| 在线中文字幕不卡| 亚洲综合在线免费观看| 欧美性xxxxxx少妇| 日本 国产 欧美色综合| 精品久久人人做人人爰| 国产精品一二一区| 中文字幕第一区二区| 91免费国产在线观看| 亚洲一区二区三区视频在线播放 | 久久久精品国产免大香伊| 国产伦精品一区二区三区免费迷 | 国产精品一区二区三区99| 欧美国产激情二区三区| 色综合久久中文综合久久牛| 亚洲国产精品影院| 日韩欧美一区二区在线视频| 韩国女主播一区二区三区| 国产日韩精品一区| 一本一道久久a久久精品综合蜜臀| 亚洲成在线观看| 日韩欧美在线网站| 成人中文字幕电影| 亚洲一区二区不卡免费| 精品少妇一区二区三区日产乱码| 丁香激情综合国产| 亚洲午夜久久久久久久久电影院| 91精品国产综合久久久蜜臀粉嫩 | 成人18视频在线播放| 亚洲一级电影视频| 欧美videossexotv100| 国产成人av一区二区三区在线| 亚洲欧美色图小说| 91精品国产欧美日韩| 成人国产精品免费网站| 亚洲成av人影院| 久久久久久久久久看片| 日本电影欧美片| 国产真实乱子伦精品视频| 亚洲女人****多毛耸耸8| 日韩欧美视频一区| 91视频观看免费| 久久国产精品第一页| 亚洲激情五月婷婷| 欧美mv日韩mv| 在线观看亚洲一区| 国产精品一二三四区| 亚洲成人免费在线观看| 国产午夜亚洲精品不卡| 欧美日韩精品欧美日韩精品 | 欧美成人性战久久| 色狠狠av一区二区三区| 国产一区二区女| 水蜜桃久久夜色精品一区的特点| 国产精品理伦片| 欧美va亚洲va在线观看蝴蝶网| 色噜噜狠狠色综合中国| 国产91露脸合集magnet| 日韩精品电影在线| 亚洲精品高清在线| 日本一区二区成人在线| 日韩视频一区二区三区在线播放| 97aⅴ精品视频一二三区| 国产在线播放一区三区四| 亚洲国产精品久久久久婷婷884| 日本一区二区视频在线观看| 日韩一区二区在线观看视频| 色呦呦网站一区| 丰满少妇在线播放bd日韩电影| 美女视频网站久久| 肉肉av福利一精品导航| 夜夜嗨av一区二区三区网页| 国产精品久久久久久亚洲毛片| 久久综合九色综合97婷婷女人| 91麻豆精品国产自产在线| 色婷婷国产精品| av激情综合网| 福利一区二区在线| 国模娜娜一区二区三区| 久久国产欧美日韩精品| 热久久国产精品| 视频一区国产视频| 亚洲福利视频一区二区| 亚洲最新视频在线播放| 亚洲欧洲无码一区二区三区| 久久精品夜色噜噜亚洲a∨| 久久免费视频一区| 久久综合国产精品| 久久亚洲免费视频| 精品国产91乱码一区二区三区 | 久久久久久99久久久精品网站| 日韩欧美综合一区| 日韩一卡二卡三卡四卡|