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

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

?? stm32l1xx_i2c.h

?? STM32+Grlib
?? H
?? 第 1 頁 / 共 3 頁
字號:

/**
 ===============================================================================
                          End of Events Description                   
 ===============================================================================  
 */

#define IS_I2C_EVENT(EVENT) (((EVENT) == I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED) || \
                             ((EVENT) == I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED) || \
                             ((EVENT) == I2C_EVENT_SLAVE_TRANSMITTER_SECONDADDRESS_MATCHED) || \
                             ((EVENT) == I2C_EVENT_SLAVE_RECEIVER_SECONDADDRESS_MATCHED) || \
                             ((EVENT) == I2C_EVENT_SLAVE_GENERALCALLADDRESS_MATCHED) || \
                             ((EVENT) == I2C_EVENT_SLAVE_BYTE_RECEIVED) || \
                             ((EVENT) == (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_DUALF)) || \
                             ((EVENT) == (I2C_EVENT_SLAVE_BYTE_RECEIVED | I2C_FLAG_GENCALL)) || \
                             ((EVENT) == I2C_EVENT_SLAVE_BYTE_TRANSMITTED) || \
                             ((EVENT) == (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_DUALF)) || \
                             ((EVENT) == (I2C_EVENT_SLAVE_BYTE_TRANSMITTED | I2C_FLAG_GENCALL)) || \
                             ((EVENT) == I2C_EVENT_SLAVE_STOP_DETECTED) || \
                             ((EVENT) == I2C_EVENT_MASTER_MODE_SELECT) || \
                             ((EVENT) == I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) || \
                             ((EVENT) == I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED) || \
                             ((EVENT) == I2C_EVENT_MASTER_BYTE_RECEIVED) || \
                             ((EVENT) == I2C_EVENT_MASTER_BYTE_TRANSMITTED) || \
                             ((EVENT) == I2C_EVENT_MASTER_BYTE_TRANSMITTING) || \
                             ((EVENT) == I2C_EVENT_MASTER_MODE_ADDRESS10) || \
                             ((EVENT) == I2C_EVENT_SLAVE_ACK_FAILURE))
/**
  * @}
  */

/** @defgroup I2C_own_address1 
  * @{
  */

#define IS_I2C_OWN_ADDRESS1(ADDRESS1) ((ADDRESS1) <= 0x3FF)
/**
  * @}
  */

/** @defgroup I2C_clock_speed 
  * @{
  */

#define IS_I2C_CLOCK_SPEED(SPEED) (((SPEED) >= 0x1) && ((SPEED) <= 400000))
/**
  * @}
  */

/**
  * @}
  */

/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */

/*  Function used to set the I2C configuration to the default reset state *****/
void I2C_DeInit(I2C_TypeDef* I2Cx);

/* Initialization and Configuration functions *********************************/
void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);
void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address);
void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert);
void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle);
void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction);

/* Data transfers functions ***************************************************/ 
void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);
uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);

/* PEC management functions ***************************************************/ 
void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition);
void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx);

/* DMA transfers management functions *****************************************/
void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);


/* Interrupts, events and flags management functions **************************/
uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register);
void I2C_ITConfig(I2C_TypeDef* I2Cx, uint16_t I2C_IT, FunctionalState NewState);

/**
 * @brief
 *  
@verbatim 
 ===============================================================================
                          I2C State Monitoring Functions                    
 ===============================================================================   
  This I2C driver provides three different ways for I2C state monitoring
  depending on the application requirements and constraints:
         
   
     1. Basic state monitoring (Using I2C_CheckEvent() function)
     -----------------------------------------------------------
        It compares the status registers (SR1 and SR2) content to a given event
        (can be the combination of one or more flags).
        It returns SUCCESS if the current status includes the given flags 
        and returns ERROR if one or more flags are missing in the current status.

          - When to use
             - This function is suitable for most applications as well as for startup 
               activity since the events are fully described in the product reference 
               manual (RM0038).
             - It is also suitable for users who need to define their own events.

          - Limitations
             - If an error occurs (ie. error flags are set besides to the monitored 
               flags), the I2C_CheckEvent() function may return SUCCESS despite 
               the communication hold or corrupted real state. 
               In this case, it is advised to use error interrupts to monitor 
               the error events and handle them in the interrupt IRQ handler.
         
     @note 
         For error management, it is advised to use the following functions:
           - I2C_ITConfig() to configure and enable the error interrupts (I2C_IT_ERR).
           - I2Cx_ER_IRQHandler() which is called when the error interrupt occurs.
             Where x is the peripheral instance (I2C1, I2C2 ...)
           - I2C_GetFlagStatus() or I2C_GetITStatus()  to be called into the 
             I2Cx_ER_IRQHandler() function in order to determine which error occurred.
           - I2C_ClearFlag() or I2C_ClearITPendingBit() and/or I2C_SoftwareResetCmd() 
             and/or I2C_GenerateStop() in order to clear the error flag and source 
             and return to correct  communciation status.
             
 
     2. Advanced state monitoring (Using the function I2C_GetLastEvent())
     -------------------------------------------------------------------- 
        Using the function I2C_GetLastEvent() which returns the image of both status 
        registers in a single word (uint32_t) (Status Register 2 value is shifted left 
        by 16 bits and concatenated to Status Register 1).

          - When to use
             - This function is suitable for the same applications above but it 
               allows to overcome the mentioned limitation of I2C_GetFlagStatus() 
               function.
             - The returned value could be compared to events already defined in 
               the library (stm32l1xx_i2c.h) or to custom values defined by user.
               This function is suitable when multiple flags are monitored at the 
               same time.
             - At the opposite of I2C_CheckEvent() function, this function allows 
               user to choose when an event is accepted (when all events flags are 
               set and no other flags are set or just when the needed flags are set 
               like I2C_CheckEvent() function.

          - Limitations
             - User may need to define his own events.
             - Same remark concerning the error management is applicable for this 
               function if user decides to check only regular communication flags 
               (and ignores error flags).
      
 
     3. Flag-based state monitoring (Using the function I2C_GetFlagStatus())
     -----------------------------------------------------------------------
     
      Using the function I2C_GetFlagStatus() which simply returns the status of 
      one single flag (ie. I2C_FLAG_RXNE ...). 

          - When to use
             - This function could be used for specific applications or in debug 
               phase.
             - It is suitable when only one flag checking is needed (most I2C 
               events are monitored through multiple flags).
          - Limitations: 
             - When calling this function, the Status register is accessed. 
               Some flags are cleared when the status register is accessed. 
               So checking the status of one Flag, may clear other ones.
             - Function may need to be called twice or more in order to monitor 
               one single event.
 
   For detailed description of Events, please refer to section I2C_Events in 
   stm32l1xx_i2c.h file.
       
@endverbatim
 *            
 */

/**
 ===============================================================================
                          1. Basic state monitoring                    
 ===============================================================================  
 */
ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT);
/**
 ===============================================================================
                          2. Advanced state monitoring                   
 ===============================================================================  
 */
uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx);
/**
 ===============================================================================
                          3. Flag-based state monitoring                   
 ===============================================================================  
 */
FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);


void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);

#ifdef __cplusplus
}
#endif

#endif /*__STM32L1xx_I2C_H */

/**
  * @}
  */ 

/**
  * @}
  */ 

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日日摸夜夜添夜夜添精品视频| 国产在线播放一区| 美女免费视频一区二区| 粉嫩av一区二区三区在线播放| 欧美在线高清视频| 国产精品嫩草久久久久| 精彩视频一区二区三区| 欧美天天综合网| 国产精品萝li| 国产美女精品人人做人人爽 | 亚洲综合在线免费观看| 九一久久久久久| 欧美丰满一区二区免费视频| 欧美日本视频在线| 精品国产3级a| 亚洲一区免费在线观看| 成人开心网精品视频| 尤物av一区二区| 日韩一级完整毛片| 国产精品嫩草影院com| 美脚の诱脚舐め脚责91| 在线成人免费视频| 亚洲第一精品在线| 精品视频1区2区| 一区二区三区国产| 在线精品视频一区二区| 亚洲欧美日韩在线不卡| 99久久伊人精品| 国产精品不卡在线| 日韩欧美区一区二| 亚洲裸体在线观看| 成人av网在线| 亚洲色图清纯唯美| 91免费视频观看| 亚洲精品美腿丝袜| 色噜噜狠狠色综合中国| 一区二区理论电影在线观看| 色屁屁一区二区| 一区二区三区精品视频在线| 欧美色手机在线观看| 亚洲第一成年网| 在线成人av影院| 日韩av在线发布| www激情久久| 懂色av一区二区夜夜嗨| 国产精品久久久久婷婷| 色88888久久久久久影院按摩 | 亚洲乱码国产乱码精品精98午夜 | 亚洲精品视频一区| 色综合久久中文综合久久97 | 欧美日韩免费在线视频| 免费观看在线综合色| 日韩免费在线观看| 国内精品写真在线观看| 亚洲国产精品99久久久久久久久| av电影一区二区| 午夜精品在线看| 日韩欧美一二区| 成人三级伦理片| 亚洲第一在线综合网站| 日韩精品自拍偷拍| 93久久精品日日躁夜夜躁欧美| 亚洲国产视频在线| www成人在线观看| 91小视频在线| 免费不卡在线视频| 国产精品久久久久久久浪潮网站| 欧美体内she精视频| 国产麻豆午夜三级精品| 亚洲激情欧美激情| 精品国产乱码久久久久久夜甘婷婷| 成人国产亚洲欧美成人综合网 | 亚洲国产成人自拍| 在线成人av影院| 91丝袜美腿高跟国产极品老师 | av午夜精品一区二区三区| 亚洲国产人成综合网站| 欧美国产日韩a欧美在线观看| 欧美日韩一本到| 成人激情图片网| 日本成人在线视频网站| 亚洲欧美日韩久久精品| 久久这里只有精品6| 91久久香蕉国产日韩欧美9色| 国产乱人伦偷精品视频不卡| 一区二区不卡在线播放| 国产日韩精品一区二区浪潮av| 精品视频一区二区不卡| 91在线精品秘密一区二区| 黄色精品一二区| 日韩中文字幕亚洲一区二区va在线| 中文字幕中文字幕中文字幕亚洲无线| 欧美一区二视频| 欧美日韩一二三| 91黄色激情网站| 成人精品高清在线| 麻豆精品蜜桃视频网站| 日日摸夜夜添夜夜添精品视频 | 国产亚洲欧美色| 欧美一二三四在线| 欧美精品一卡两卡| 欧美中文字幕一二三区视频| 91在线看国产| 91在线免费视频观看| 成人在线视频一区| 国产成人免费视频精品含羞草妖精 | 9l国产精品久久久久麻豆| 国产一区视频在线看| 九九国产精品视频| 美腿丝袜在线亚洲一区 | 成人午夜免费电影| 国产一区二区三区av电影 | 亚洲国产成人一区二区三区| 日韩欧美国产三级电影视频| 欧美不卡激情三级在线观看| 日韩欧美国产一区二区在线播放 | 91精品国产91久久综合桃花 | 欧美系列亚洲系列| 欧美人妇做爰xxxⅹ性高电影| 欧美日韩国产另类一区| 欧美日韩精品欧美日韩精品一综合| 欧美三级日韩在线| 4438成人网| 欧美变态tickling挠脚心| 日韩女优av电影在线观看| 久久综合精品国产一区二区三区| 久久这里只有精品6| 国产精品蜜臀av| 亚洲欧美偷拍三级| 天堂蜜桃91精品| 韩国在线一区二区| 成人久久久精品乱码一区二区三区| 99精品视频免费在线观看| 91福利区一区二区三区| 这里只有精品99re| 日韩美女在线视频| 国产精品成人网| 亚洲午夜免费视频| 久久99国产精品成人| 99热国产精品| 欧美日韩高清一区二区三区| 日韩欧美国产1| 中文字幕中文字幕中文字幕亚洲无线 | 天堂va蜜桃一区二区三区漫画版| 久久成人精品无人区| 粉嫩一区二区三区性色av| 91久久一区二区| 欧美精品一区二区三区蜜桃视频| 亚洲欧洲成人自拍| 日韩高清在线电影| 成人激情黄色小说| 3atv一区二区三区| 国产精品久久久久aaaa| 日本亚洲视频在线| 972aa.com艺术欧美| 欧美成人猛片aaaaaaa| 亚洲人成在线播放网站岛国| 久久99精品一区二区三区| www.日本不卡| 日韩一区二区电影网| 亚洲三级在线看| 国产精品资源网站| 欧美日本不卡视频| 亚洲日本韩国一区| 国产精一品亚洲二区在线视频| 欧美日韩性生活| 亚洲丝袜自拍清纯另类| 韩国av一区二区| 欧美日本在线看| 亚洲三级在线看| 成人丝袜高跟foot| 久久综合九色综合欧美就去吻| 亚洲成人免费视频| 91首页免费视频| 亚洲国产激情av| 国产精品一区二区在线播放| 日韩一卡二卡三卡四卡| 午夜精品久久久久影视| 91美女蜜桃在线| 国产精品久久午夜| 国产米奇在线777精品观看| 91精品国产欧美日韩| 亚洲高清不卡在线观看| 91高清视频在线| 亚洲男人的天堂在线aⅴ视频| 国产精品一区二区91| 精品福利在线导航| 日韩国产欧美一区二区三区| 欧美色涩在线第一页| 亚洲在线一区二区三区| 色播五月激情综合网| 一区二区三区在线播放| 99视频精品在线| 国产精品视频线看| 成人午夜视频在线| 18欧美亚洲精品| 一本大道综合伊人精品热热| 亚洲六月丁香色婷婷综合久久| 91亚洲精品久久久蜜桃网站| 亚洲久本草在线中文字幕|