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

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

?? i2c.c

?? STR710控制CC1100模塊程序說明
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
* Function Name  : I2C_ByteSend
* Description    : Send a single byte of data.
* Input          : I2Cx ( I2C0 or I2C1 )
*                  Data : the byte to be sent to the slave
* Return         : None.
*******************************************************************************/
void I2C_ByteSend (I2C_TypeDef *I2Cx, u8 Data)
{
  //Wait until the I2C_BTF bit is set
  while ((I2Cx->SR1 & 0x08)==0);

  //Write in the DR register the byte to be sent
  I2Cx->DR = Data;
}

/*******************************************************************************
* Function Name  : I2C_BufferSend
* Description    : Send data from a buffer whose number of bytes is known
* Input          : I2Cx ( I2C0 or I2C1 )
*                  PtrToBuffer :pointer to the byte of buffer to be transmitted.
*                  NbOfBytes:Number of byte of the buffer
* Return         : I2C_Tx_Status :transmission status (I2C_TX_AF, I2C_TX_ARLO,
*                  I2C_TX_BERR,I2C_TX_DATA_OK)
*******************************************************************************/
I2C_Tx_Status I2C_BufferSend (I2C_TypeDef *I2Cx, u8 *PtrToBuffer, u8 NbOfBytes)
{
  u8 Interruption_Status;
  u8 SentBytes;
  u8 error;
  I2C_Tx_Status I2C_TXTMP;

  //Test of the interrupt status
  Interruption_Status=0;
  Interruption_Status=I2Cx->CR & 0x01;
  I2C_ITConfig (I2Cx, DISABLE);
  //Wait till I2C_BTF bit is set
  while ((I2Cx->SR1 & 0x08 )==0);
  SentBytes=0;
  while (SentBytes<NbOfBytes)
  {
    I2Cx->DR= *(PtrToBuffer+SentBytes);
    //Wait till I2C_BTF bit is set or error detected
    do
      error = I2Cx->SR2 & 0x16;
    while ((I2Cx->SR1 & 0x08)==0 && error==0);
    // In case of error exit
    if (error) break;
    // increment SentBytes counter
    SentBytes++;
  }
  if (error)
  {
    if (error & 0x10)
      // I2C_TX_AF if Acknowledge failure is detected
      I2C_TXTMP = I2C_TX_AF;
    if (error & 0x02)
      //I2C_TX_ARLO if the ARLO bit is set in the SR2 register
      I2C_TXTMP = I2C_TX_ARLO;
    if (error & 0x04)
      // I2C_TX_BERR if the BERR bit is set in the SR2 register
      I2C_TXTMP=  I2C_TX_BERR;
  }
  else
    //I2C_TX_DATA_OK to show that the buffer is well sent
    I2C_TXTMP= I2C_TX_DATA_OK;

  //Restore the interrupt status
  if (Interruption_Status==1)
  I2C_ITConfig (I2Cx, ENABLE);

  return I2C_TXTMP;
}

/*******************************************************************************
* Function Name  : I2C_StringSend
* Description    : Send data from a buffer
* Input          : I2Cx ( I2C0 or I2C1 )
*                  PtrToBuffer :pointer to the byte of string to be transmitted.
* Return         : I2C_Tx_Status :transmission status (I2C_TX_AF, I2C_TX_ARLO,
*                  I2C_TX_BERR,I2C_TX_DATA_OK)
*******************************************************************************/
I2C_Tx_Status I2C_StringSend (I2C_TypeDef *I2Cx, char *PtrToString)
{
  u8 NbOfBytes=0;
  // count the number of byte composing the string passed as parameter.
  while (*(PtrToString+NbOfBytes)!= '\0')
    NbOfBytes++;
  // call I2C_BufferSend function to execute the send part
  return I2C_BufferSend (I2Cx,(u8 *)PtrToString,NbOfBytes);
}

/*******************************************************************************
* Function Name  : I2C_TransmissionStatus
* Description    : Report the NewState of the transmission
* Input          : I2Cx ( I2C0 or I2C1 )
* Return         : I2C_Tx_Status :transmission status (I2C_TX_NO, I2C_TX_SB,
*                   I2C_TX_AF, I2C_TX_ARLO, I2C_TX_BERR,I2C_TX_ADD_OK,
*                   I2C_TX_DATA_OK,I2C_TX_ONGOING)
*******************************************************************************/
I2C_Tx_Status I2C_TransmissionStatus (I2C_TypeDef *I2Cx)
{
  u8 SR1value;
  u8 SR2value;
  I2C_Tx_Status NewState;

  SR1value = I2Cx->SR1;
  SR2value = I2Cx->SR2;
  if ((I2Cx->SR1&0x10)==0)
    NewState=I2C_TX_NO;
  else if (I2Cx->SR1&0x01)
    //I2C_SB bit is set
    NewState=I2C_TX_SB;
  else if ((SR2value & 0x10)&&(I2Cx->CR&0x04))
    //I2C_ACK &I2C_AF are both set
    NewState=I2C_TX_AF;
  else if (SR2value & 0x04)
    //I2C_ARLO is set in multimaster mode
    NewState=I2C_TX_ARLO;
  else if (SR2value & 0x02)
    //I2C_BERR bit is set
    NewState=I2C_TX_BERR;
  else if ((SR1value & 0x80)&& (I2Cx->SR2&0x20))
    //I2C_EVF and I2C_ENDAD are both set
    NewState=I2C_TX_ADD_OK;
  else if ((I2Cx->SR1&0x20)&& (I2Cx->SR1&0x08))
    //I2C_TRA and I2C_BTF are both set
    NewState=I2C_TX_DATA_OK;
  else
    NewState=I2C_TX_ONGOING;

  return NewState;
}

/*******************************************************************************
* Function Name  : I2C_ByteReceive
* Description    : Returns the received byte.
* Input          : I2Cx ( I2C0 or I2C1 )
* Return         : the byte received
*******************************************************************************/
u8 I2C_ByteReceive (I2C_TypeDef *I2Cx)
{
  //Wait till I2C_BTF bit is set
  while ((I2Cx->SR1 & 0x08)==0);
  return I2Cx->DR;
}

/*******************************************************************************
* Function Name  : I2C_BufferReceive
* Description    : received a buffer. and return the status of error.
* Input          : I2Cx ( I2C0 or I2C1 )
*                  PtrToBuffer :pointer to the byte of buffer received.
*                  NbOfBytes:Number of byte to be received
* Return         : I2C_Rx_Status:the NewState of the reception (,I2C_RX_AF,
*                               I2C_RX_ARLO,I2C_RX_BERR, I2C_RX_DATA_OK)
*******************************************************************************/
I2C_Rx_Status I2C_BufferReceive (I2C_TypeDef *I2Cx, u8 *PtrToBuffer, u8 NbOfBytes)
{
  u8 Interruption_Status;
  u8 ReceivedBytes;
  u8 error;
  I2C_Rx_Status I2C_RXTMP;

  //Test of the interrupt status
  Interruption_Status=0;
  Interruption_Status=I2Cx->CR & 0x01;
  I2C_ITConfig (I2Cx, DISABLE);
  ReceivedBytes=0;
  while (ReceivedBytes<NbOfBytes)
  {
    do
      error = I2Cx->SR2 & 0x16;
    while ((I2Cx->SR1 & 0x08)==0 && !error);
    if (error==0)
    // No error detected
    {
      *(PtrToBuffer+ReceivedBytes) = I2Cx->DR;
      ReceivedBytes++;
    }
    else break;
  }
  if (error)
  {
    if (error & 0x10)
      // I2C_RX_AF if Acknowledge failure is detected
      I2C_RXTMP= I2C_RX_AF;
    else if (error & 0x02)
      // I2C_RX_ARLO if the ARLO bit is set in the SR2 register
      I2C_RXTMP=  I2C_RX_ARLO;
    else if (error & 0x04)
      // I2C_RX_BERR if the BERR bit is set in the SR2 register
      I2C_RXTMP=  I2C_RX_BERR;
  }
  else
    //I2C_RX_DATA_OK to show that the buffer is well sent
    I2C_RXTMP= I2C_RX_DATA_OK;

  //Restore the interrupt status
  if (Interruption_Status==1)
  I2C_ITConfig (I2Cx, ENABLE);

  return I2C_RXTMP;
}

/*******************************************************************************
* Function Name  :I2C_ReceptionStatus
* Description    : Report the reception NewState.
* Input          : I2Cx ( I2C0 or I2C1 )
* Return         : I2C_Rx_Status:the NewState of the reception ( I2C_RX_NO,
*                  I2C_RX_SB,I2C_RX_AF,I2C_RX_ARLO,I2C_RX_BERR,I2C_RX_ADD_OK,
*                  I2C_RX_DATA_OK, I2C_RX_ONGOING)
*******************************************************************************/
I2C_Rx_Status I2C_ReceptionStatus (I2C_TypeDef *I2Cx)
{
  u8 SR1value;
  u8 SR2value;
  I2C_Rx_Status NewState;
  SR1value= I2Cx->SR1;
  SR2value= I2Cx->SR2;

  if ((I2Cx->SR1&0x10) == 0)
    NewState=I2C_RX_NO;
  else if (I2Cx->SR1&0x01)
    //I2C_SB bit is set
    NewState=I2C_RX_SB;
  else if ((SR2value & 0x10) && (I2Cx->CR&0x04))
    //I2C_ACK &I2C_AF are both set
    NewState=I2C_RX_AF;
  else if (SR2value & 0x04)
    //I2C_ARLO is set
    NewState=I2C_RX_ARLO;
  else if (SR2value & 0x02)
    //I2C_BERR bit is set
    NewState=I2C_RX_BERR;
  else if ((SR1value & 0x80) && (I2Cx->SR1&0x08)==0)
    //2C_EVF is set & I2C_BTF is not set
    NewState=I2C_RX_ADD_OK;
  else if ((I2Cx->SR1&0x20)==0 && (I2Cx->SR1&0x08))
    //II2C_TRA is cleared & I2C_BTF is set
    NewState=I2C_RX_DATA_OK;
  else
  NewState=I2C_RX_ONGOING;
  return NewState;
}

/******************* (C) COPYRIGHT 2003 STMicroelectronics *****END OF FILE****/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人伦理电影在线观看| 色婷婷综合久久久中文字幕| 成人精品免费网站| 欧美主播一区二区三区| 久久网站热最新地址| 亚洲精品乱码久久久久久久久 | 欧美三级在线视频| 中文字幕的久久| 久久成人免费网| 欧美日韩国产电影| 亚洲综合色婷婷| 99国产精品久| 中文一区二区在线观看| 久久成人免费网| 日韩美女视频在线| 美女一区二区久久| 91精品视频网| 日本一区中文字幕 | 成人黄色国产精品网站大全在线免费观看 | 亚洲综合清纯丝袜自拍| eeuss鲁片一区二区三区在线观看| 日韩免费在线观看| 久久99精品国产麻豆婷婷| 欧美日韩国产美| 婷婷综合另类小说色区| 久久久久国产成人精品亚洲午夜| 99久久久久免费精品国产| 久久久噜噜噜久久人人看| 久久99国产精品麻豆| 日韩欧美国产成人一区二区| 日本欧美在线观看| 亚洲人午夜精品天堂一二香蕉| 激情综合五月婷婷| xfplay精品久久| 国产精品亚洲一区二区三区妖精| 久久综合成人精品亚洲另类欧美| 国产综合色产在线精品| 日本一区二区三区四区| 99热精品国产| 亚洲一级在线观看| 欧美精品电影在线播放| 青青草原综合久久大伊人精品优势 | 欧美日韩国产精品成人| 婷婷综合在线观看| 精品美女在线观看| 成人一级黄色片| 一区二区三区在线免费播放| 欧美在线看片a免费观看| 日日摸夜夜添夜夜添精品视频| 制服丝袜在线91| 国产一区二区成人久久免费影院| 久久婷婷一区二区三区| 99riav久久精品riav| 天天综合天天做天天综合| 亚洲精品一区二区三区99| 国产91清纯白嫩初高中在线观看 | 久久先锋影音av鲁色资源网| 成人一区二区三区中文字幕| 一区二区三区日韩在线观看| 91精品在线免费观看| 大陆成人av片| 亚洲嫩草精品久久| 欧美色手机在线观看| 欧美bbbbb| 国产精品萝li| 91麻豆精品国产91久久久久久| 日本精品一区二区三区四区的功能| 亚洲国产综合91精品麻豆| 欧美videos中文字幕| av一本久道久久综合久久鬼色| 污片在线观看一区二区| 久久久精品免费网站| 欧美日韩一级黄| 成人精品一区二区三区中文字幕| 亚洲成在人线免费| 国产精品区一区二区三区| 欧美肥妇bbw| 91在线你懂得| 久久国产乱子精品免费女| 亚洲日本韩国一区| 久久中文字幕电影| 欧美高清视频在线高清观看mv色露露十八| 韩国精品主播一区二区在线观看| 亚洲精品伦理在线| 中文字幕av资源一区| 日韩一二在线观看| 欧美探花视频资源| 成人毛片视频在线观看| 麻豆精品一二三| 亚洲国产成人va在线观看天堂| 国产精品私人影院| 久久久久久久久岛国免费| 911精品产国品一二三产区| 99精品视频在线观看| 国产麻豆日韩欧美久久| 日本亚洲免费观看| 婷婷国产在线综合| 亚洲五码中文字幕| 亚洲欧美日韩久久| 美女网站在线免费欧美精品| 亚洲综合色成人| 亚洲精品第一国产综合野| 国产精品免费av| 欧美激情一区二区三区在线| 久久这里只有精品首页| 精品久久久网站| 精品盗摄一区二区三区| 欧美一区二区三区视频在线观看| 欧美日韩中文字幕一区| 欧美无乱码久久久免费午夜一区| 91成人免费网站| 精品视频一区二区不卡| 欧美午夜理伦三级在线观看| 一本久久精品一区二区| 一本色道久久综合亚洲aⅴ蜜桃| av一二三不卡影片| 色女孩综合影院| 91久久精品国产91性色tv| 色婷婷久久久综合中文字幕| 在线观看成人免费视频| 欧美日韩日本视频| 欧美电影一区二区三区| 日韩一区二区三区三四区视频在线观看| 欧美一区二区三区四区在线观看| 日韩一区二区三区视频在线| 337p日本欧洲亚洲大胆精品| 久久久美女艺术照精彩视频福利播放 | 欧美国产一区视频在线观看| 国产精品美女久久久久高潮| 亚洲精品乱码久久久久久久久| 亚洲色图一区二区三区| 亚洲永久精品国产| 轻轻草成人在线| 国产成人一级电影| 色综合久久综合中文综合网| 欧美日韩一卡二卡三卡| 欧美xxxxx裸体时装秀| 国产精品午夜在线| 亚洲成人在线免费| 狠狠色狠狠色合久久伊人| www.99精品| 欧美一区二区美女| 国产欧美综合在线| 亚洲电影一级黄| 国产凹凸在线观看一区二区| 在线免费观看成人短视频| 欧美一区二区三区性视频| 国产精品久久久久久久蜜臀 | 综合久久一区二区三区| 亚洲精品国产高清久久伦理二区| 日本成人超碰在线观看| 99久久久久免费精品国产 | 久久精品国产亚洲a| 成人激情午夜影院| 欧美一卡二卡在线观看| 中文字幕综合网| 精品一区免费av| 欧美自拍偷拍一区| 欧美激情综合在线| 日韩vs国产vs欧美| 91无套直看片红桃| 精品国产凹凸成av人导航| 一区二区三区四区中文字幕| 国产剧情一区二区| 欧美精品tushy高清| 亚洲色欲色欲www在线观看| 91蝌蚪porny九色| 精品国产免费视频| 午夜精品一区二区三区三上悠亚| 高清成人免费视频| 精品国产免费一区二区三区四区| 亚洲国产综合色| 色偷偷88欧美精品久久久| 国产日产精品1区| 久久99久久精品欧美| 91精品国产综合久久久久久漫画| 亚洲特黄一级片| 成人永久aaa| 欧美国产丝袜视频| 国产福利一区二区三区视频| 欧美一区二区视频在线观看2022| 中文字幕一区二区三区乱码在线 | 亚洲成av人影院| 欧美在线免费播放| 亚洲精品大片www| 99久久精品99国产精品| 中文字幕乱码亚洲精品一区 | 首页国产欧美久久| 欧美日韩综合不卡| 欧美另类高清zo欧美| 从欧美一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 日韩和欧美的一区| 欧美高清一级片在线| 婷婷开心激情综合| 欧美喷潮久久久xxxxx| 亚洲一区中文在线| 欧美调教femdomvk| 亚洲第一激情av| 91精品中文字幕一区二区三区|