你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
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 */8 Y, X2 f c; ]" N% K3 o
SR1Register = I2C1->SR1;4 Y- s4 B! P: {6 s' [4 K9 j/ a
/* If AF = 1 */3 ?& j) n" u- p7 s
if ((SR1Register & 0x0400) == 0x0400)5 L c, K; F7 H2 F
{" c: T% C. `1 I7 W7 J. L( x
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;- j) y p4 w7 v; A! S
}$ I$ f* c, M A1 Y
/* If ARLO = 1 */
if ((SR1Register & 0x0200) == 0x0200)
{
I2C1->SR1 &= 0xFBFF;/ L4 t6 g7 M# i+ G/ ^ N& K
SR1Register = 0;
}
/* If BERR = 1 */
if ((SR1Register & 0x0100) == 0x0100)
{
I2C1->SR1 &= 0xFEFF;
SR1Register = 0;; K. T; C1 d& k4 }( ?
}5 F) b, h% Q% y* z* o! m
/* If OVR = 1 */* Q3 ?; c3 J2 ], y$ ~, a. r8 |: f
if ((SR1Register & 0x0800) == 0x0800)2 a4 j! ~" r1 d
{
I2C1->SR1 &= 0xF7FF;, \/ K! Y; m! v: ?) _: B* d- s
SR1Register = 0;/ H7 C, _; j2 Q5 z
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
1 ^4 h- u. Y0 p6 q8 p! `! u. n
/**' M0 ~7 ~4 s$ I e
* @brief This function handles I2C1 Event interrupt request, tx, rx
* buffer and number of bytes will be changed.
* @param None
* @retval None# a1 M7 M( w: I8 T ~2 |
*/
void I2C1_EV_IRQHandler(void)6 a" z3 w, u# {' w
{% N- u+ ~; [2 \5 f" y# V
#ifdef ARC_I2C_IRQ* _( R6 ^, w; ^: H
uint32_t i2cEvent;
I2C_param_struct __IO *pI2C_param;; r. `8 L0 \* e) P4 K( h* ~) D
$ |9 ^" |' O# S$ \
pI2C_param = ARC_get_I2C_param();. e! ?: S% s& G* a [+ B
i2cEvent = I2C_GetLastEvent(I2C1);
switch (i2cEvent)1 N! r; o! z+ ` Y D. |
{ H& r9 S' u) S2 y' w5 {, W; t
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- w6 C1 o8 x w( K( c
{" g U$ X$ g* X- R- Z7 X% g' _. m* F
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);
}! r3 Z4 A1 `0 ]. |0 t
break;& @& r% ~! G* u. _$ U: ^. T: S
/* Master Transmitter -------------------------------------------------------*/4 l" s+ D, h& |% b& g* x. ]' j5 V( n
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:8 n E. u0 M# u
I2C_SendData(I2C1, pI2C_param->SubAddr);
if(pI2C_param->TxNumOfBytes == 0)* C" M7 Y& z8 ?5 P) `3 }2 \0 N
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);% I0 S% y6 |) l A
break;
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */ 3 U% B$ m: X; Q; |
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)9 d& r$ O2 g/ n4 G, }
{
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);+ e9 ]* h9 I; }) G
}
else
{
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
}
break;& U8 e6 [8 s n( P$ Y, \
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */% g9 g- s! d+ f
if(pI2C_param->TX_Generate_stop == 1)
{
I2C_GenerateSTOP(I2C1, ENABLE);
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);; U& Z; M4 b6 I! t0 n6 b
}
else( G1 n) y- N3 O7 G8 T$ ~: N
{4 F; i2 Y5 `$ M, b k3 a. U/ m
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:5 D R2 d4 V" k! i/ Y7 s
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))* D& W4 n+ z& v$ V
{
I2C_AcknowledgeConfig(I2C1, DISABLE);1 u7 L9 H, b4 i6 h
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;/ |6 E/ L7 e2 T4 I! P
case I2C_EVENT_MASTER_BYTE_RECEIVED:: x& R0 C. h# V) {1 N! P
pI2C_param->RxData[pI2C_param->RX_I2C_Index++] = I2C_ReceiveData (I2C1);3 k, Z, C- X! |" P
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{
I2C_AcknowledgeConfig(I2C1, DISABLE);
I2C_GenerateSTOP(I2C1, ENABLE);( K% _1 ?! K( M8 @
}
break;9 N% E9 C: Z8 ?- k
8 v e: a7 E- C9 h! i: q7 O, \
default:. S( J% U+ Z8 u5 U+ V# f
break;2 o+ S' O0 ?' H& h7 ]
}7 p4 B$ u: u) E) B; \+ y
#endif. T# f5 i/ F- z
}
回复: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 硬件中断方式实现方法,带流程图