你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
i2c_api.rar
2012-2-1 13:57 上传
点击文件名下载附件
4.13 KB, 下载次数: 861
12_I2C.pdf
2012-2-1 15:25 上传
615.08 KB, 下载次数: 732
/* Read the I2C1 status register */
SR1Register = I2C1->SR1;
/* If AF = 1 */
if ((SR1Register & 0x0400) == 0x0400)
{
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;
}
/* If ARLO = 1 */
if ((SR1Register & 0x0200) == 0x0200)
{
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;
}
/* If BERR = 1 */
if ((SR1Register & 0x0100) == 0x0100)
{
I2C1->SR1 &= 0xFEFF;
SR1Register = 0;
}
/* If OVR = 1 */
if ((SR1Register & 0x0800) == 0x0800)
{
I2C1->SR1 &= 0xF7FF;
SR1Register = 0;
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
/**
* @brief This function handles I2C1 Event interrupt request, tx, rx
* buffer and number of bytes will be changed.
* @param None
* @retval None
*/
void I2C1_EV_IRQHandler(void)
{
#ifdef ARC_I2C_IRQ
uint32_t i2cEvent;
I2C_param_struct __IO *pI2C_param;
pI2C_param = ARC_get_I2C_param();
i2cEvent = I2C_GetLastEvent(I2C1);
switch (i2cEvent)
{
case I2C_EVENT_MASTER_MODE_SELECT:/* EV5 */
if(pI2C_param->I2C_DIRECTION == ARC_I2C_DIRECTION_TX)
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Transmitter);
}
else
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);
}
break;
/* Master Transmitter -------------------------------------------------------*/
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:
I2C_SendData(I2C1, pI2C_param->SubAddr);
if(pI2C_param->TxNumOfBytes == 0)
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
break;
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)
{
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);
}
else
{
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
}
break;
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */
if(pI2C_param->TX_Generate_stop == 1)
{
I2C_GenerateSTOP(I2C1, ENABLE);
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);
}
else
{
pI2C_param->I2C_DIRECTION = ARC_I2C_DIRECTION_RX;
I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);
I2C_GenerateSTART(I2C1, ENABLE);
}
break;
/* Master Receiver -------------------------------------------------------*/
case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;
case I2C_EVENT_MASTER_BYTE_RECEIVED:
pI2C_param->RxData[pI2C_param->RX_I2C_Index++] = I2C_ReceiveData (I2C1);
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;
default:
break;
}
#endif
}
回复:STM32 I2C 硬件中断方式实现方法,带流程图
i2c_api.rar
2012-2-1 13:57 上传
点击文件名下载附件
4.13 KB, 下载次数: 861
回复:STM32 I2C 硬件中断方式实现方法,带流程图
12_I2C.pdf
2012-2-1 15:25 上传
点击文件名下载附件
615.08 KB, 下载次数: 732
回复:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
谢谢楼主
RE:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
。。。。。
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
回复:STM32 I2C 硬件中断方式实现方法,带流程图