这篇教程C++ I2C_CheckEvent函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中I2C_CheckEvent函数的典型用法代码示例。如果您正苦于以下问题:C++ I2C_CheckEvent函数的具体用法?C++ I2C_CheckEvent怎么用?C++ I2C_CheckEvent使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了I2C_CheckEvent函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: LM75_GetStatus/** * @brief Checks the LM75 status. * @param None * @retval ErrorStatus: LM75 Status (ERROR or SUCCESS). */ErrorStatus LM75_GetStatus(void){ uint32_t I2C_TimeOut = I2C_TIMEOUT; /*!< Clear the LM75_I2C AF flag */ I2C_ClearFlag(LM75_I2C, I2C_FLAG_AF); /*!< Enable LM75_I2C acknowledgement if it is already disabled by other function */ I2C_AcknowledgeConfig(LM75_I2C, ENABLE); /*---------------------------- Transmission Phase ---------------------------*/ /*!< Send LM75_I2C START condition */ I2C_GenerateSTART(LM75_I2C, ENABLE); /*!< Test on LM75_I2C EV5 and clear it */ while ((!I2C_GetFlagStatus(LM75_I2C,I2C_FLAG_SB)) && I2C_TimeOut) /*!< EV5 */ { I2C_TimeOut--; } if (I2C_TimeOut == 0) { return ERROR; } I2C_TimeOut = I2C_TIMEOUT; /*!< Send STLM75 slave address for write */ I2C_Send7bitAddress(LM75_I2C, LM75_ADDR, I2C_Direction_Transmitter); while ((!I2C_CheckEvent(LM75_I2C, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) && I2C_TimeOut)/* EV6 */ { I2C_TimeOut--; } if ((I2C_GetFlagStatus(LM75_I2C, I2C_FLAG_AF) != 0x00) || (I2C_TimeOut == 0)) { return ERROR; } else { return SUCCESS; }}
开发者ID:0x00f,项目名称:STM32F1-workarea,代码行数:49,
示例2: i2c_writeint i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) { I2C_TypeDef *i2c = (I2C_TypeDef *)(obj->i2c); int timeout; int count; /* // Wait until the bus is not busy anymore timeout = LONG_TIMEOUT; while (I2C_GetFlagStatus(i2c, I2C_FLAG_BUSY) == SET) { timeout--; if (timeout == 0) { return 0; } }*/ i2c_start(obj); // Send slave address for write I2C_Send7bitAddress(i2c, address, I2C_Direction_Transmitter); // Wait address is acknowledged timeout = FLAG_TIMEOUT; while (I2C_CheckEvent(i2c, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == ERROR) { timeout--; if (timeout == 0) { return 0; } } for (count = 0; count < length; count++) { if (i2c_byte_write(obj, data[count]) != 1) { i2c_stop(obj); return 0; } } // If not repeated start, send stop. if (stop) { i2c_stop(obj); } return count;}
开发者ID:23chrischen,项目名称:mbed,代码行数:44,
示例3: I2C_WriteStatus I2C_Write(I2C_TypeDef* I2Cx, const uint8_t* buf, uint32_t nbyte, uint8_t SlaveAddress){ __IO uint32_t Timeout = 0; /* Enable Error IT (used in all modes: DMA, Polling and Interrupts */ // I2Cx->CR2 |= I2C_IT_ERR; if (nbyte) { Timed(I2C_GetFlagStatus(I2Cx, I2C_FLAG_BUSY)); // Intiate Start Sequence I2C_GenerateSTART(I2Cx, ENABLE); Timed(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT)); // Send Address EV5 I2C_Send7bitAddress(I2Cx, SlaveAddress, I2C_Direction_Transmitter); //Timed(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); // EV6 // Write first byte EV8_1 I2C_SendData(I2Cx, *buf++); while (--nbyte) { // wait on BTF //Timed(!I2C_GetFlagStatus(I2Cx, I2C_FLAG_BTF)); I2C_SendData(I2Cx, *buf++); } //Timed(!I2C_GetFlagStatus(I2Cx, I2C_FLAG_BTF)); I2C_GenerateSTOP(I2Cx, ENABLE); //Timed(I2C_GetFlagStatus(I2C1, I2C_FLAG_STOPF)); } return Success; errReturn: return Error;}
开发者ID:metropt,项目名称:stm32bookexercises,代码行数:43,
示例4: AT24_Readuint32_t AT24_Read(uint16_t Addr, uint8_t *pdata, int size){ uint32_t Timeout; I2C_AcknowledgeConfig(I2C1, ENABLE); Timeout = I2C_TIMEOUT; while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY)) { if((Timeout--) == 0) return 1; } I2C_GenerateSTART(I2C1, ENABLE); Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) { if((Timeout--) == 0) return 1; } I2C_Send7bitAddress(I2C1, 0xA0, I2C_Direction_Transmitter); Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) { if((Timeout--) == 0) return 1; } I2C_SendData(I2C1, (uint8_t)((Addr & 0xFF00) >> 8)); Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) { if((Timeout--) == 0) return 1; } I2C_SendData(I2C1, (uint8_t)(Addr & 0x00FF)); Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) { if((Timeout--) == 0) return 0; } I2C_GenerateSTART(I2C1, ENABLE); Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)) { if((Timeout--) == 0) return 1; } I2C_Send7bitAddress(I2C1, 0xA1, I2C_Direction_Receiver); while(size-- > 0) { Timeout = I2C_TIMEOUT; while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED)) { if((Timeout--) == 0) return 1; } *(pdata++) = I2C_ReceiveData(I2C1); } I2C_AcknowledgeConfig(I2C1, DISABLE); I2C_GenerateSTOP(I2C1, ENABLE); return 0;}
开发者ID:TSURKOVSERGEY,项目名称:sdi,代码行数:50,
示例5: ucI2C_ReadAckuint8_t ucI2C_ReadAck(I2C_TypeDef* I2Cx) { uint8_t data; /* Enable ACK */ I2Cx->CR1 |= I2C_CR1_ACK; /* Wait till not received */ TM_I2C_Timeout = TM_I2C_TIMEOUT; while (!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_RECEIVED)) { if (--TM_I2C_Timeout == 0x00) { return 1; } } /* Read data */ data = I2Cx->DR; /* Return data */ return data;}
开发者ID:torcek,项目名称:AUTOPILOT,代码行数:20,
示例6: sEE_I2C_DMA_TX_IRQHandler/** * @brief This function handles the DMA Tx Channel interrupt Handler. * @note This function should be called in the * DMA1_CHANNEL2_3_IRQHandler in the stm8l15x_it.c file. * * // INTERRUPT_HANDLER(DMA1_CHANNEL2_3_IRQHandler, 3) * // { * // sEE_I2C_DMA_TX_IRQHandler(); * // } * @param None * @retval None */void sEE_I2C_DMA_TX_IRQHandler(void){ /* Check if the DMA transfer is complete */ if (DMA_GetFlagStatus(sEE_I2C_DMA_FLAG_TX_TC) != RESET) { /* Disable the DMA Tx Channel and Clear all its Flags */ DMA_Cmd(sEE_I2C_DMA_CHANNEL_TX, DISABLE); DMA_ClearFlag(sEE_I2C_DMA_FLAG_TX_TC); /*!< Wait till all data have been physically transferred on the bus */ while (!I2C_CheckEvent(sEE_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED)) {} /*!< Send STOP condition */ I2C_GenerateSTOP(sEE_I2C, ENABLE); /* Reset the variable holding the number of data to be written */ *sEEDataWritePointer = 0; }}
开发者ID:glockwork,项目名称:ev-stm8l151k6-emotor,代码行数:32,
|