大佬教程收集整理的这篇文章主要介绍了嵌入式 – stm32f4上的I2C从接收器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void I2C2_EV_IRQHandler() { switch (I2C_GetLastEvent(I2C2)) { //The address sent by the master matches the own address of the peripheral case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED: //The slave stretches SCL low until ADDR is //cleared and DR filled with the data to be sent I2C_ClearFlag(I2C2,I2C_FLAG_ADDR); break; //The application is expecTing a data byte to be received case I2C_EVENT_SLAVE_BYTE_RECEIVED: I2C_ReceiveData(I2C2); break; //The application is expecTing the end of the communication //Make sure that both ADDR and STOPF flags are cleared //if both are found set. case I2C_EVENT_SLAVE_STOP_DETECTED: if(I2C_GetFlagStatus(I2C2,I2C_FLAG_ADDR) == SET) I2C_ClearFlag(I2C2,I2C_FLAG_ADDR); if(I2C_GetFlagStatus(I2C2,I2C_FLAG_STOPF) == SET) I2C_ClearFlag(I2C2,I2C_FLAG_STOPF); }
}
调用中断并输入I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED情况.@H_450_5@SCL现在很低.参考手册说如果我清除地址标志,时钟将继续,数据将被发送(Page 579 – 从属接收器).在我看来,如果有任何数据到达,中断总是被调用,下一个状态将是I2C_EVENT_SLAVE_BYTE_RECEIVED.
void I2C3_EV_IRQHandler() { switch (I2C_GetLastEvent(I2C3)) { case I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED: STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOff(LED5); break; case I2C_EVENT_SLAVE_BYTE_RECEIVED: STM_EVAL_LEDToggle(LED4); STM_EVAL_LEDOff(LED3); I2C_InputBuffer[I2C_InputBufferIndex++] = I2C_ReceiveData(I2C3); break; case I2C_EVENT_SLAVE_STOP_DETECTED: STM_EVAL_LEDOn(LED6); STM_EVAL_LEDOff(LED4); break; } I2C_CleanADDRandSTOPF(); if(I2C_InputBufferIndex > MOTOR_PACKAGE_SIZE-1) { motorHandleEvent(I2C_InputBuffer); I2C_InputBufferIndex = 0; uint8_t reseTindex; for(reseTindex = 0; reseTindex < MOTOR_PACKAGE_SIZE; reseTindex ++) I2C_InputBuffer[reseTindex] = 0; } } inline void I2C_CleanADDRandSTOPF() { while ((I2C3->SR1 & I2C_SR1_ADDR) == I2C_SR1_ADDR) { volatile uint32_t temp; temp=I2C3->SR1; temp=I2C3->SR2; } while ((I2C3->SR1&I2C_SR1_STOPF) == I2C_SR1_STOPF) { volatile uint32_t temp; temp=I2C3->SR1; I2C3->CR1 |= 0x1; } }
以上是大佬教程为你收集整理的嵌入式 – stm32f4上的I2C从接收器全部内容,希望文章能够帮你解决嵌入式 – stm32f4上的I2C从接收器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。