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

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

?? 75x_i2c.c

?? freertosV4.40 是一種small的嵌入式系統。利于嵌入式開好者入門學習嵌入式操作系統。通過對于源碼的學習可以很好的掌握freertos的運行機制。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*******************************************************************************
* Function Name  : I2C_ITConfig                                               
* Description    : Enables or disables the I2C interrupt.                 
* Input          : - NewState: new state of the I2C interrupt.
*                    This parameter can be: ENABLE or DISABLE.
* Output         : None                      
* Return         : None.                                                      
*******************************************************************************/
void I2C_ITConfig(FunctionalState NewState)
{
  if (NewState == ENABLE)
  {
    /* Enable the I2C interrupt */
    I2C->CR |= I2C_IT_Enable;
  }
  else
  {
    /* Disable the I2C interrupt */
    I2C->CR &= I2C_IT_Disable;
  }
}

/*******************************************************************************
* Function Name  : I2C_GetLastEvent                                  
* Description    : Gets the last I2C event that has occurred.                  
* Input          : None  
* Output         : None                          
* Return         : The Last happened Event.                           
*******************************************************************************/
u16 I2C_GetLastEvent(void)
{
  u16 Flag1 = 0, Flag2 = 0, LastEvent = 0;

  Flag1 = I2C->SR1;
  Flag2 = I2C->SR2;
  Flag2 = Flag2<<8;
  /* Get the last event value from I2C status register */
  LastEvent = (((Flag1 | (Flag2)) & I2C_Event_Mask));
  /* Return the last event */
  return LastEvent;
}

/*******************************************************************************
* Function Name  : I2C_CheckEvent                                         
* Description    : Checks whether the Last I2C Event is equal to the one passed 
*                  as parameter.                                              
* Input          : - I2C_EVENT: specifies the event to be checked. This parameter
*                    can be one of the following values:
*                         - I2C_EVENT_SLAVE_ADDRESS_MATCHED
*                         - I2C_EVENT_SLAVE_BYTE_RECEIVED
*                         - I2C_EVENT_SLAVE_BYTE_TRANSMITTED
*                         - I2C_EVENT_SLAVE_ACK_FAILURE 
*                         - I2C_EVENT_MASTER_MODE_SELECT
*                         - I2C_EVENT_MASTER_MODE_SELECTED
*                         - I2C_EVENT_MASTER_BYTE_RECEIVED
*                         - I2C_EVENT_MASTER_BYTE_TRANSMITTED
*                         - I2C_EVENT_MASTER_MODE_ADDRESS10
*                         - I2C_EVENT_SLAVE_STOP_DETECTED
* Output         : None                                      
* Return         : An ErrorStatus enumuration value:
*                         - SUCCESS: Last event is equal to the I2C_Event
*                         - ERROR: Last event is different from the I2C_Event        
*******************************************************************************/
ErrorStatus I2C_CheckEvent(u16 I2C_EVENT)
{
  u16  LastEvent = I2C_GetLastEvent();

  /* Check whether the last event is equal to I2C_EVENT */
  if (LastEvent == I2C_EVENT)
  {
    /* Return SUCCESS when last event is equal to I2C_EVENT */
    return SUCCESS;
  }
  else
  {
    /* Return ERROR when last event is different from I2C_EVENT */
    return ERROR;
  }
}

/*******************************************************************************
* Function Name  : I2C_SendData                                                
* Description    : Sends a data byte.                                 
* Input          : - Data: indicates the byte to be transmitted.
* Output         : None            
* Return         : None.                                                       
*******************************************************************************/
void I2C_SendData(u8 Data)
{
  /* Write in the DR register the byte to be sent */
  I2C->DR = Data;
}

/*******************************************************************************
* Function Name  : I2C_ReceiveData                                             
* Description    : Reads the received byte. 
* Input          : None 
* Output         : None                                        
* Return         : The received byte                                      
*******************************************************************************/
u8 I2C_ReceiveData(void)
{
  /* Return from the DR register the received byte */
  return I2C->DR;
}

/*******************************************************************************
* Function Name  : I2C_Send7bitAddress                                             
* Description    : Transmits the address byte to select the slave device.      
* Input          : - Address: specifies the slave address which will be transmitted    
*                  - Direction: specifies whether the I2C device will be a 
*                    Transmitter or a Receiver. This parameter can be one of the 
*                    following values
*                         - I2C_MODE_TRANSMITTER: Transmitter mode
*                         - I2C_MODE_RECEIVER: Receiver mode  
* Output         : None	
* Return         : None.                                                       
*******************************************************************************/
void I2C_Send7bitAddress(u8 Address, u8 Direction)
{
  /* Test on the direction to define the read/write bit */
  if (Direction == I2C_MODE_RECEIVER)
  {
    /* Set the address bit0 for read */
    Address |= I2C_ADD0_Set;
  }
  else
  {
    /* Reset the address bit0 for write */
    Address &= I2C_ADD0_Reset;
  }
  /* Send the address */
  I2C->DR = Address;
}

/*******************************************************************************
* Function Name  : I2C_ReadRegister                                            
* Description    : Reads the specified I2C register and returns its value.    
* Input1         : - I2C_Register: specifies the register to read.
*                    This parameter can be one of the following values:        
*                         - I2C_CR:   CR register. 
*                         - I2C_SR1:  SR1 register.
*                         - I2C_SR2:  SR2 register.
*                         - I2C_CCR:  CCR register.
*                         - I2C_OAR1: OAR1 register.
*                         - I2C_OAR2: OAR2 register.
*                         - I2C_DR:   DR register.
*                         - I2C_ECCR: ECCR register.
* Output         : None
* Return         : The value of the read register.              
*******************************************************************************/
u8 I2C_ReadRegister(u8 I2C_Register)
{
  /* Return the selected register value */
  return (*(u8 *)(I2C_BASE + I2C_Register));
}

/*******************************************************************************
* Function Name  : I2C_GetFlagStatus  
* Description    : Checks whether the specified I2C flag is set or not.
* Input          : - I2C_FLAG: specifies the flag to check. 
*                    This parameter can be one of the following values:
*                         - I2C_FLAG_SB: Start bit flag (Master mode)    
*                         - I2C_FLAG_M_SL: Master/Slave flag   
*                         - I2C_FLAG_ADSL: Address matched flag (Slave mode)    
*                         - I2C_FLAG_BTF: Byte transfer finished flag    
*                         - I2C_FLAG_BUSY: Bus busy flag    
*                         - I2C_FLAG_TRA: Transmitter/Receiver flag    
*                         - I2C_FLAG_ADD10: 10-bit addressing in Master mode flag   
*                         - I2C_FLAG_EVF: Event flag     
*                         - I2C_FLAG_GCAL: General call flag (slave mode)   
*                         - I2C_FLAG_BERR: Bus error flag    
*                         - I2C_FLAG_ARLO: Arbitration lost flag    
*                         - I2C_FLAG_STOPF: Stop detection flag (slave mode)   
*                         - I2C_FLAG_AF: Acknowledge failure flag      
*                         - I2C_FLAG_ENDAD: End of address transmission flag   
*                         - I2C_FLAG_ACK: Acknowledge enable flag     
* Output         : None                                                   
* Return         : The NewState of the I2C_FLAG (SET or RESET).              
*******************************************************************************/
FlagStatus I2C_GetFlagStatus(u16 I2C_FLAG)
{ 
    u16 Flag1 = 0, Flag2 = 0, Flag3 = 0, Tmp = 0;

  Flag1 = I2C->SR1;
  Flag2 = I2C->SR2;
  Flag2 = Flag2<<8;
  Flag3 = I2C->CR & 0x04;
  
  /* Get all the I2C flags in a unique register*/
  Tmp = (((Flag1 | (Flag2)) & I2C_Event_Mask) | (Flag3<<12)); 
  
  /* Check the status of the specified I2C flag */
  if((Tmp & I2C_FLAG) != RESET)
  {
    /* Return SET if I2C_FLAG is set */
    return SET;
  }
  else
  {
    /* Return RESET if I2C_FLAG is reset */
    return RESET;
  }
}

/*******************************************************************************
* Function Name  : I2C_ClearFlag                                 
* Description    : Clears the I2C抯 pending flags                            
* Input          : - I2C_FLAG: specifies the flag to clear. 
*                    This parameter can be one of the following values:
*                         - I2C_FLAG_SB: Start bit flag    
*                         - I2C_FLAG_M_SL: Master/Slave flag   
*                         - I2C_FLAG_ADSL: Adress matched flag    
*                         - I2C_FLAG_BTF: Byte transfer finished flag    
*                         - I2C_FLAG_BUSY: Bus busy flag    
*                         - I2C_FLAG_TRA: Transmitter/Receiver flag    
*                         - I2C_FLAG_ADD10: 10-bit addressing in Master mode flag   
*                         - I2C_FLAG_EVF: Event flag     
*                         - I2C_FLAG_GCAL: General call flag    
*                         - I2C_FLAG_BERR: Bus error flag    
*                         - I2C_FLAG_ARLO: Arbitration lost flag    
*                         - I2C_FLAG_STOPF: Stop detection flag   
*                         - I2C_FLAG_AF: Acknowledge failure flag      
*                         - I2C_FLAG_ENDAD: End of address transmission flag   
*                         - I2C_FLAG_ACK: Acknowledge enable flag             
*                  - parameter needed in the case that the flag to be cleared
*                    need a write in one register  
* Output         : None	                                             
* Return         : None                                                      
*******************************************************************************/
void I2C_ClearFlag(u16 I2C_FLAG, ...)
{
  u8 Tmp = (u8)*((u32 *) & I2C_FLAG + sizeof(I2C_FLAG));

  /* flags that need a read of the SR2 register to be cleared */
  if ((I2C_FLAG == I2C_FLAG_ADD10) || (I2C_FLAG == I2C_FLAG_EVF) ||
      (I2C_FLAG == I2C_FLAG_STOPF) || (I2C_FLAG == I2C_FLAG_AF)  || 
      (I2C_FLAG == I2C_FLAG_BERR) ||  (I2C_FLAG == I2C_FLAG_ARLO) ||
      (I2C_FLAG == I2C_FLAG_ENDAD))
  {
    /* Read the SR2 register */
    (void)I2C->SR2;

    /* Two flags need a second step to be cleared */
    switch (I2C_FLAG)
    {
       case  I2C_FLAG_ADD10:
         /* Send the MSB 10bit address passed as second parameter */
         I2C->DR = Tmp; 
         break;
       case  I2C_FLAG_ENDAD: 
         /* Write to the I2C_CR register by setting PE bit */
         I2C->CR |= I2C_PE_Set;
         break;
    }
  }
  /* flags that need a read of the SR1 register to be cleared */
  else if (I2C_FLAG==I2C_FLAG_SB || I2C_FLAG==I2C_FLAG_ADSL || I2C_FLAG==I2C_FLAG_BTF || I2C_FLAG==I2C_FLAG_TRA)
  {
    /* Read the SR1 register */
    (void)I2C->SR1;

    /* three flags need a second step to be cleared */
    if (I2C_FLAG == I2C_FLAG_SB)
    {
      /* Send the address byte passed as second parameter */
      I2C->DR=Tmp;
    }
    else if (I2C_FLAG==I2C_FLAG_BTF || I2C_FLAG==I2C_FLAG_TRA)
    {
      /* return the received byte in the variable passed as second parameter  */
      Tmp=I2C->DR;
    }
  }
  /* flags that need to disable the I2C interface */
  else if ( I2C_FLAG==I2C_FLAG_M_SL || I2C_FLAG==I2C_FLAG_GCAL)
  {
    I2C_Cmd(DISABLE);
    I2C_Cmd(ENABLE);
  }
}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本女优在线视频一区二区| 国产成人在线影院| 丝袜国产日韩另类美女| 三级影片在线观看欧美日韩一区二区| 亚洲成人av福利| 亚洲第一激情av| 久久精品国产99国产| 国产成人aaa| 在线免费视频一区二区| 欧美久久久久中文字幕| 日韩精品专区在线影院观看| 欧美一区二区精品在线| 国产精品嫩草久久久久| 一区二区三区四区亚洲| 日韩国产精品大片| 国产精品1区二区.| 在线欧美小视频| 久久久777精品电影网影网| 亚洲欧洲成人精品av97| 午夜久久久久久久久久一区二区| 精品一区二区影视| 波多野结衣中文字幕一区| 色噜噜狠狠一区二区三区果冻| 日韩一区二区三区视频在线观看| 国产日韩精品一区二区浪潮av | 国产成人av电影免费在线观看| 欧洲另类一二三四区| 久久久精品国产免大香伊| 亚洲香肠在线观看| a级高清视频欧美日韩| 欧美一区二区三区四区视频| 《视频一区视频二区| 国产一区不卡视频| 欧美精品tushy高清| 一区二区三区影院| 成人免费观看视频| 久久久青草青青国产亚洲免观| 天天影视色香欲综合网老头| 99r国产精品| 国产午夜精品一区二区三区嫩草| 青青草国产精品97视觉盛宴| 日本精品免费观看高清观看| 欧美高清一级片在线观看| 精品一区在线看| 91麻豆精品国产自产在线观看一区| 亚洲精品乱码久久久久久黑人 | 亚洲综合色婷婷| www.99精品| 欧美高清在线一区| 国产成人在线视频网站| 欧美va在线播放| 日本一区中文字幕| 欧美人与z0zoxxxx视频| 一区二区三区精品在线| 91免费在线播放| 国产精品久久久久久久久免费相片 | 色综合色综合色综合色综合色综合 | 免费久久精品视频| 8x8x8国产精品| 午夜影院在线观看欧美| 欧美日韩综合色| 亚洲一区二区三区在线| 在线观看亚洲一区| 亚洲一区二区在线免费看| 日本福利一区二区| 亚洲乱码国产乱码精品精可以看 | 亚洲午夜精品网| 欧美性大战久久| 亚欧色一区w666天堂| 欧美色精品在线视频| 亚洲成a人v欧美综合天堂下载| 欧美主播一区二区三区| 亚洲综合一二区| 欧美色倩网站大全免费| 天堂午夜影视日韩欧美一区二区| 欧美男人的天堂一二区| 日本中文在线一区| 欧美成人猛片aaaaaaa| 韩国一区二区三区| 亚洲国产精品精华液2区45| 成人国产精品免费观看| 亚洲精品视频在线| 欧美男男青年gay1069videost| 香蕉成人啪国产精品视频综合网 | 国模无码大尺度一区二区三区| 欧美成人精品二区三区99精品| 国产一区亚洲一区| 国产视频一区不卡| av爱爱亚洲一区| 亚洲成av人片在线观看| 日韩一区二区免费在线观看| 极品少妇xxxx精品少妇| 日本一区二区免费在线| 色综合久久88色综合天天免费| 亚洲成av人片| 精品国产三级电影在线观看| 国产成人无遮挡在线视频| 亚洲免费在线电影| 欧美日本韩国一区| 国产老肥熟一区二区三区| 亚洲日本中文字幕区| 欧美私人免费视频| 精品亚洲欧美一区| 国产精品久久三区| 欧美日韩高清一区二区三区| 久久99最新地址| 中文字幕不卡在线播放| 在线观看亚洲专区| 国产中文一区二区三区| 亚洲日本一区二区三区| 日韩一区和二区| 成人在线视频首页| 爽好多水快深点欧美视频| 久久久久高清精品| 91黄色免费版| 国产伦精一区二区三区| 一区二区欧美精品| 337p粉嫩大胆色噜噜噜噜亚洲 | 亚洲mv在线观看| 国产日韩精品视频一区| 欧美日韩国产在线播放网站| 国产激情偷乱视频一区二区三区| 亚洲国产sm捆绑调教视频| 久久久青草青青国产亚洲免观| 欧美亚洲一区二区在线| 国产伦精一区二区三区| 性欧美疯狂xxxxbbbb| 国产精品美女一区二区| 欧美一区二区福利在线| 91麻豆国产自产在线观看| 九九**精品视频免费播放| 亚洲免费观看高清完整版在线| 精品久久久久久久人人人人传媒| 91色乱码一区二区三区| 国产尤物一区二区| 亚洲va韩国va欧美va| 18成人在线观看| 国产亚洲成年网址在线观看| 欧美精品在线观看一区二区| 97久久精品人人做人人爽50路| 精品一区二区三区免费播放| 亚洲国产美国国产综合一区二区| 国产欧美一区二区三区沐欲| 欧美一级生活片| 欧洲精品在线观看| 成人av电影在线| 国产一区二区三区日韩| 午夜精品福利久久久| 亚洲色图清纯唯美| 欧美激情综合在线| 久久蜜桃av一区二区天堂| 7777精品伊人久久久大香线蕉的| 色婷婷综合激情| 成人av中文字幕| 国产风韵犹存在线视精品| 免费精品视频最新在线| 视频一区视频二区中文| 亚洲一级二级在线| 亚洲欧美日韩国产手机在线| 国产精品久久网站| 国产精品午夜春色av| 久久久久国产精品人| 亚洲精品一区二区精华| 日韩一区二区免费电影| 欧美精品v国产精品v日韩精品 | 麻豆精品一区二区三区| 日本中文字幕一区二区有限公司| 亚洲一二三四久久| 伊人一区二区三区| 亚洲精品美国一| 亚洲美女屁股眼交| 亚洲欧美日韩久久| 亚洲婷婷综合色高清在线| 国产精品久久久久影院亚瑟| 久久精品网站免费观看| 久久色.com| 久久久久久久久蜜桃| 国产亚洲一区字幕| 久久精品一区二区| 亚洲国产精品99久久久久久久久| 国产女主播一区| 国产精品国产三级国产普通话蜜臀 | 国产.欧美.日韩| 成人性视频免费网站| 成人免费毛片片v| 国产黄色91视频| 成人精品gif动图一区| 成人av高清在线| 一本大道久久a久久综合婷婷 | 日韩高清在线不卡| 另类综合日韩欧美亚洲| 国内外成人在线| 成人高清av在线| 色天天综合色天天久久| 欧美日韩在线播放三区四区| 欧美一区二区三区在线视频| 精品日韩成人av| 国产欧美日韩在线视频| 亚洲色欲色欲www| 亚洲成精国产精品女|