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

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

?? tsensor.c

?? ARM_CORTEX-M3應(yīng)用實(shí)例開發(fā)詳解光盤
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
* 文件名          : tsensor.c
* 功能描述        : 溫度傳感器STLM75讀/寫程序.
*         該程序包括I2C總線協(xié)議及讀寫STLM75所有的功能函數(shù)及攝氏度華氏度溫度顯示
*******************************************************************************/

/* 頭文件 ------------------------------------------------------------------*/
#include "tsensor.h"
#include "stm32f10x_i2c.h"
#include "stm32f10x_map.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stdio.h"


#define LM75_Addr      0x90 /* 定義LM75地址 */
#define LM75_SD_Set    0x01 /* 設(shè)置STLM75的配置寄存器SD位 */
#define LM75_SD_Reset  0xFE /* STLM75的配置寄存器SD位復(fù)位 */


/* 變量定義 ---------------------------------------------------------*/
static u8 TempCelsius_Display[] = "     +abc.def C     "; /*用于溫度值顯示*/
static u8 TempFahrenheit_Display[] = "     +abc.def F     ";
 u32 Temp_Decimal = 0, TempCelsius_Value = 0, Temp_Value_Fahrenheit = 0;


/*******************************************************************************
* 函數(shù)名  : I2C_LM75_Init
* 描述    : I2C1初始化.
* 輸入         : 無
* 輸出         : 無
* 返回         : 無
*******************************************************************************/
void I2C_LM75_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  I2C_InitTypeDef   I2C_InitStructure;

  /* GPIOB 外設(shè)時鐘使能 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
  /* I2C1 外設(shè)時鐘使能 */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

  /* 配置SDA,SCL引腳 */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7;/*PB7-SDA,PB6-SCL*/
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 /*50MHz*/
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;/*開漏復(fù)用功能*/
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* 配置PB5輸入上拉, 用于連接STLM75的OS/INT引腳 */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  I2C_DeInit(I2C1);	 /*先禁止*/

  /* I2C1 初始化 */
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;/*設(shè)置I2C模式1*/ 
  I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;/*I2C快速模式Tlow / Thigh = 2*/
  I2C_InitStructure.I2C_OwnAddress1 = 0x00;/*自身地址*/
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;/*使能應(yīng)答(ACK)*/
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;/*應(yīng)答7位地址*/
  I2C_InitStructure.I2C_ClockSpeed = 200000;/*200K速度*/
  I2C_Init(I2C1, &I2C_InitStructure);

  /* I2C1 使能 */
  I2C_Cmd(I2C1, ENABLE);
}

/*******************************************************************************
* 函數(shù)名  : I2C_LM75_Status
* 描述    : 確認(rèn)STLM75狀態(tài)
* 輸入         : 無
* 輸出         : 無
* 返回         : 無
*******************************************************************************/
ErrorStatus I2C_LM75_Status(void)
{
  u32 I2C_TimeOut = 0x3FFFF;

  /* 清除I2C1 AF位 */
  I2C_ClearFlag(I2C1, I2C_FLAG_AF);

  /* 使能ACK配置 */
  I2C_AcknowledgeConfig(I2C1, ENABLE);

    
  /* 發(fā)送I2C1起始條件狀態(tài)位 */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 測試I2C1 EV5事件并清除*/
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5事件 */
  {
  }
  
  /* 發(fā)送STLM75從器件地址字節(jié)(寫)*/
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
  
  while((!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && I2C_TimeOut)/* EV6 */
  {
    I2C_TimeOut--;
  }

  if(I2C_GetFlagStatus(I2C1, I2C_FLAG_AF) != 0x0)
  {
    return ERROR;
  }
  else
  {
    return SUCCESS;
  }
}

/*******************************************************************************
* 函數(shù)名  : I2C_LM75_Reg_Read
* 描述    : 讀STLM75寄存器
* 輸入         : 讀從器件如下寄存器
		      - LM75_TEMP_Reg: 溫度寄存器
		      - LM75_TOS_Reg: 超閥值關(guān)斷寄存器
		      - LM75_THYS_Reg: 滯后寄存器
* 輸出         : 無
* 返回         : 無
*******************************************************************************/
u16 I2C_LM75_Reg_Read(u8 RegName)
{
  u32 RegValue=0;

  /* 使能I2C1應(yīng)答 */
  I2C_AcknowledgeConfig(I2C1, ENABLE);

   /* 發(fā)送I2C1起始條件(寫) */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 測試I2C1 EV5事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
  {
  }
  
  /*發(fā)送STLM75地址(寫) */
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
  
  /* 測試I2C1 EV6事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
  {
  }

  /* 發(fā)送指針寄存器數(shù)據(jù)(寫) */
  I2C_SendData(I2C1, RegName);
  
  /* 檢測I2C1 EV8事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
  {
  }

  /*----- 接收部分 -----*/
  /* 發(fā)送重新開始起始位條件 */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 檢測 EV5事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
  {
  }
  
  /* 發(fā)送STLM75從地址(讀) */
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Receiver);
  
  /* 檢測 EV6事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))  /* EV6 */
  {
  }
  

  /* 檢測 EV7事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))  /* EV7 */
  {
  }
  
  /* 存儲I2C1 接收的數(shù)據(jù) */
  RegValue = (u16)(I2C_ReceiveData(I2C1) << 8);
  
  /* 最后一位接收完成后要關(guān)閉應(yīng)答 */
  I2C_AcknowledgeConfig(I2C1, DISABLE);
  
  /* 發(fā)送I2C1停止條件位 */
  I2C_GenerateSTOP(I2C1, ENABLE);
  
  /* 檢測 EV7事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED))  /* EV7 */
  {
  }
  
  /* 存儲 I2C1 接收的數(shù)據(jù) */
  RegValue |= I2C_ReceiveData(I2C1);

  /* 返回寄存器值 */
  return (RegValue >> 7);
}

/*******************************************************************************
* 函數(shù)名  : I2C_LM75_Reg_Write
* 描述    : 讀STLM75寄存器
* 輸入         : 寫從器件如下寄存器
		      - LM75_TEMP_Reg: 溫度寄存器
		      - LM75_TOS_Reg: 超閥值關(guān)斷寄存器
		      - LM75_THYS_Reg: 滯后寄存器
* 輸出         : 無
* 返回         : 無
*******************************************************************************/
void I2C_LM75_Reg_Write(u8 RegName, u16 RegValue)
{
  /* 左移寄存器值 */
  RegValue = RegValue << 7;

  /*----- 傳送過程 -----*/
  /* 發(fā)送I2C1起始狀態(tài)位 */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 檢測 EV5事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
  {
  }
  
  /* 發(fā)送STLM75從地址(寫)*/
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
  
  /* 檢測 EV6事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
  {
  }

  /* 發(fā)送指針寄存器數(shù)值 */
  I2C_SendData(I2C1, RegName);
  
  /* 檢測 EV8事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
  {
  }

  /* 發(fā)送I2C1 數(shù)據(jù) */
  I2C_SendData(I2C1, (u8)(RegValue >> 8));
  
  /* 檢測 EV8事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
  {
  }
  
  /* 發(fā)送I2C1 數(shù)據(jù) */
  I2C_SendData(I2C1, (u8)RegValue);
  
  /* 檢測 EV8事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
  {
  }

  /* 發(fā)送I2C1 停止?fàn)顟B(tài)位 */
  I2C_GenerateSTOP(I2C1, ENABLE);    
}

/*******************************************************************************
* 函數(shù)名  : I2C_LM75_Temp_Read
* 描述    : 讀STLM75寄存器
* 輸入         : 讀取STLM75溫度寄存器值2字節(jié)
* 輸出         : 無
* 返回         : 無
*******************************************************************************/
u16 I2C_LM75_Temp_Read(void)
{
  u32 RegValue = 0;

  /* 使能應(yīng)答 */
  I2C_AcknowledgeConfig(I2C1, ENABLE);

  /*----- 傳送過程 -----*/
  /* 發(fā)送I2C1 起始狀態(tài)位 */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 檢測 EV5事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
  {
  }
  
  /* 發(fā)送STLM75從地址(寫) */
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Transmitter);
  
  /* 檢測 EV6事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) /* EV6 */
  {
  }

  /* 發(fā)送溫度寄存器數(shù)據(jù) */
  I2C_SendData(I2C1, LM75_TEMP_Reg);
  
  /* 檢測 EV8事件并清除*/
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) /* EV8 */
  {
  }

  /*----- 接收過程 -----*/
  /* 發(fā)送啟動起始狀態(tài)位 */
  I2C_GenerateSTART(I2C1, ENABLE);
  
  /* 檢測 EV5事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT))  /* EV5 */
  {
  }
  
  /* 發(fā)送STLM75從地址(讀) */
  I2C_Send7bitAddress(I2C1, LM75_Addr, I2C_Direction_Receiver);
  
  /* 檢測 EV6事件并清除 */
  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))  /* EV6 */
  {
  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文天堂在线一区| 欧美日韩五月天| 久久综合狠狠综合久久激情 | 首页国产丝袜综合| 在线观看网站黄不卡| 国产精品―色哟哟| 成人性色生活片| 国产精品麻豆视频| 91亚洲永久精品| 樱桃视频在线观看一区| 色综合久久天天| 国产精品福利在线播放| 成人永久看片免费视频天堂| 日韩欧美一区二区在线视频| 日本aⅴ免费视频一区二区三区 | 69久久夜色精品国产69蝌蚪网| 一区二区三区四区视频精品免费 | 麻豆精品国产传媒mv男同| 欧美美女直播网站| 中文字幕中文字幕一区二区| 91性感美女视频| 亚洲一区二区三区四区的| 欧美日韩视频在线观看一区二区三区| 日日夜夜精品免费视频| 日韩欧美黄色影院| 国产91丝袜在线播放| 国产精品麻豆久久久| 在线日韩一区二区| 日韩av电影免费观看高清完整版 | www.av精品| 亚洲综合999| 日韩一区二区三区视频| 国产一区二区三区高清播放| 国产精品久久久久aaaa樱花| 欧美性生活久久| 捆绑调教一区二区三区| 久久欧美中文字幕| 91丨porny丨蝌蚪视频| 日韩精品五月天| 久久精品一区二区三区不卡牛牛| 成人av片在线观看| 亚洲成人综合网站| 久久综合九色综合欧美98 | 一区二区三区欧美亚洲| 欧美精品一卡二卡| 国产成人自拍网| 亚洲高清一区二区三区| 久久先锋资源网| 色悠久久久久综合欧美99| 久久精工是国产品牌吗| 亚洲人午夜精品天堂一二香蕉| 69av一区二区三区| 成人av网站免费观看| 美国欧美日韩国产在线播放| 国产精品久久三区| 日韩欧美久久久| 在线影视一区二区三区| 国产一区二区日韩精品| 有坂深雪av一区二区精品| 久久亚洲精华国产精华液| 91视频国产观看| 久久99精品国产91久久来源| 一区二区成人在线视频| 中文字幕av一区二区三区| 欧美一个色资源| 99精品国产热久久91蜜凸| 蜜臀av亚洲一区中文字幕| 亚洲欧美视频在线观看| 国产午夜精品美女毛片视频| 欧美一区二区不卡视频| 91福利社在线观看| 9i看片成人免费高清| 韩国欧美一区二区| 日本女优在线视频一区二区| 亚洲美女视频一区| 国产精品久久久久桃色tv| 精品盗摄一区二区三区| 日本伊人色综合网| 国产福利一区在线| 青青草97国产精品免费观看无弹窗版 | 97精品视频在线观看自产线路二| 麻豆专区一区二区三区四区五区| 一区二区成人在线| 亚洲欧洲精品一区二区三区不卡| 337p日本欧洲亚洲大胆色噜噜| 日韩一区二区三区三四区视频在线观看 | 欧美精品一区二区三区视频| 91麻豆精品久久久久蜜臀| 欧美亚洲综合久久| 色噜噜狠狠成人中文综合| 91女厕偷拍女厕偷拍高清| 国产69精品久久久久777| 国产自产v一区二区三区c| 精品一区二区精品| 精品一区二区免费视频| 免费精品视频在线| 麻豆中文一区二区| 日韩avvvv在线播放| 视频一区国产视频| 日韩高清中文字幕一区| 毛片av一区二区| 精品在线亚洲视频| 国产一区二区三区| 东方aⅴ免费观看久久av| 成人高清免费观看| 欧美精品在线观看一区二区| 在线成人高清不卡| 精品福利视频一区二区三区| 久久精品网站免费观看| 中文字幕一区二区在线观看| 国产视频一区二区三区在线观看 | 国产精品国产精品国产专区不片 | 国产精品美女久久久久久久| 国产精品免费av| 亚洲免费毛片网站| 婷婷六月综合亚洲| 久久精品久久99精品久久| 国产乱码精品一区二区三区五月婷 | 欧美中文字幕一区| 欧美精品99久久久**| 日韩欧美国产一二三区| 精品盗摄一区二区三区| 国产精品不卡一区| 性久久久久久久久| 国产精品资源站在线| 91视频免费看| 日韩亚洲欧美高清| 国产精品视频一二| 亚洲成人免费影院| 国产在线看一区| 一本大道综合伊人精品热热| 欧美一区二区精品久久911| 久久久91精品国产一区二区三区| 自拍av一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 老司机免费视频一区二区| 91香蕉视频mp4| 久久久亚洲精品一区二区三区| 亚洲不卡在线观看| 91免费精品国自产拍在线不卡| 亚洲精品在线电影| 国产精品毛片久久久久久| 久久成人久久鬼色| 欧洲亚洲精品在线| 久久亚洲二区三区| 偷拍一区二区三区| 91蜜桃免费观看视频| 精品久久久久久久久久久久久久久久久| 国产精品久久久久久久第一福利| 亚洲国产aⅴ成人精品无吗| 成人综合在线观看| 日韩一区二区精品在线观看| 亚洲色图视频网站| 国产精品18久久久| 日韩欧美中文字幕制服| 亚洲美女一区二区三区| 国产原创一区二区| 色狠狠桃花综合| 中文字幕二三区不卡| 精品无人码麻豆乱码1区2区 | 91麻豆精品国产| 亚洲精品菠萝久久久久久久| 韩国女主播成人在线| 欧美剧情片在线观看| 亚洲卡通动漫在线| 成人的网站免费观看| www欧美成人18+| 麻豆一区二区99久久久久| 欧美日韩一区二区三区四区| 亚洲美女偷拍久久| 99久久er热在这里只有精品15| 91精品免费在线观看| 亚洲成人动漫精品| 欧美一区欧美二区| 美女国产一区二区三区| 欧美www视频| 国产精品一区2区| ...xxx性欧美| 欧美色精品在线视频| 人人精品人人爱| 久久综合九色综合97婷婷| 国产乱人伦偷精品视频免下载| 国产精品私人影院| 日本道精品一区二区三区| 亚洲国产wwwccc36天堂| 日韩欧美综合一区| 国产suv一区二区三区88区| 日韩毛片视频在线看| 欧美日韩一区在线观看| 麻豆一区二区在线| 国产精品天美传媒沈樵| 一本色道久久综合精品竹菊| 午夜不卡av免费| 久久综合久色欧美综合狠狠| 成年人网站91| 午夜不卡av免费| 久久久精品一品道一区| 91精品1区2区| 韩国一区二区视频| 亚洲精品中文在线观看|