你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
i2c_api.rar
2012-2-1 13:57 上传
点击文件名下载附件
4.13 KB, 下载次数: 861
12_I2C.pdf
2012-2-1 15:25 上传
615.08 KB, 下载次数: 732
: `! T/ o6 a2 g
/* Read the I2C1 status register */
SR1Register = I2C1->SR1;
/* If AF = 1 */
if ((SR1Register & 0x0400) == 0x0400)
{& t4 U/ b4 e2 N, }0 U I7 m
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;
}
/* If ARLO = 1 */
if ((SR1Register & 0x0200) == 0x0200)
{ C) Z& K9 A6 H# c; i" U% v
I2C1->SR1 &= 0xFBFF;) p1 ^& y8 w2 @. R9 e
SR1Register = 0;
}6 {, b6 { \6 S0 Q
/* If BERR = 1 */6 F# |+ u6 a3 [& q) k+ |
if ((SR1Register & 0x0100) == 0x0100)
{
I2C1->SR1 &= 0xFEFF;! L# G0 Q1 L u
SR1Register = 0;
}
/* If OVR = 1 */
if ((SR1Register & 0x0800) == 0x0800). A5 K7 s3 a0 R2 t$ s9 i
{
I2C1->SR1 &= 0xF7FF;3 w1 V4 y9 s. ]& G" n
SR1Register = 0;
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
/**7 j) u1 w: O' q5 b+ t! \4 [1 t+ Y
* @brief This function handles I2C1 Event interrupt request, tx, rx
* buffer and number of bytes will be changed.5 x! P# D/ a. V1 U/ X: W& A' {; b' Y
* @param None* h: q% D V3 @) J" l4 Q X: L
* @retval None& u5 l& O# |4 j& b0 ]' ^+ V- V
*/
void I2C1_EV_IRQHandler(void)
{9 H0 R2 u d( ]: O
#ifdef ARC_I2C_IRQ
uint32_t i2cEvent;
I2C_param_struct __IO *pI2C_param;' T& I/ @9 U Z X! X
pI2C_param = ARC_get_I2C_param();3 f, k+ n: N. n* ?7 t
i2cEvent = I2C_GetLastEvent(I2C1);8 \) x% p, d; r# p4 Q" h; g3 r) ]
& a+ |6 O; u8 h8 p- t2 y% u2 `$ Y R
switch (i2cEvent)
{2 ^4 K5 Z e7 V K! ~& z
case I2C_EVENT_MASTER_MODE_SELECT:/* EV5 */7 [ _/ D: M' [1 v" w# ]- N
if(pI2C_param->I2C_DIRECTION == ARC_I2C_DIRECTION_TX)9 ~9 R: q2 K) y9 m) I7 B
{: y" A4 Q1 O' l' }8 B
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Transmitter);
}
else/ J# d2 ?( _' @% D! c" t& L
{
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);7 m8 K" {6 a7 |! s S" \
}
break;4 D- n& K- p7 ^
- l. x' ?2 K4 {9 H6 ^8 W
/* Master Transmitter -------------------------------------------------------*/
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:# [3 L2 Y# Y# G% G( C
I2C_SendData(I2C1, pI2C_param->SubAddr);. ]; E9 h' `: D: E1 X' O
if(pI2C_param->TxNumOfBytes == 0)8 E" ]: C" G1 B# s
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);( ?4 f0 A8 e {1 o" ?
break;
; M5 Y. V/ X- D
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */ # l3 n m& o# ^% M$ W6 O
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)
{
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);, r/ ^$ J* v w
}
else
{ 7 C( s4 f* v$ d$ A* B, ~* e
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);
}
break;
5 Q; w1 c8 @7 g+ D
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */; k$ j, J6 P. \ n+ t
if(pI2C_param->TX_Generate_stop == 1)
{
I2C_GenerateSTOP(I2C1, ENABLE);4 d9 `9 ?% _: N" R. J9 s
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);2 c: A8 j3 ?! Y8 P5 Q
}; }6 w3 }: M% e+ V8 M
else
{
pI2C_param->I2C_DIRECTION = ARC_I2C_DIRECTION_RX;
I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);1 s' w5 A; k( F2 x. a
I2C_GenerateSTART(I2C1, ENABLE);
}1 h. o7 i/ X& W( G) o
break;5 x' q+ t7 K; }; ?2 h
/* Master Receiver -------------------------------------------------------*/ | D( q1 w: [5 ^/ g
case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:' D+ \ D2 H1 w) _$ o) n; D, Y
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))
{6 G e: q, L$ v1 U# R0 S
I2C_AcknowledgeConfig(I2C1, DISABLE);& A! m+ P9 @; [- Q8 T
I2C_GenerateSTOP(I2C1, ENABLE);
}
break;) W' V* Q, t7 M, O! g* a9 g$ q
: ^0 G7 w$ V8 U* e/ m
case I2C_EVENT_MASTER_BYTE_RECEIVED:3 c9 ^$ I; x# U4 r
pI2C_param->RxData[pI2C_param->RX_I2C_Index++] = I2C_ReceiveData (I2C1);1 Z1 C; }6 t% P7 e2 E
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))+ q, c* E7 ~: j2 H4 A
{
I2C_AcknowledgeConfig(I2C1, DISABLE);2 j; |6 k0 {' `5 z) V4 f
I2C_GenerateSTOP(I2C1, ENABLE);: g& f* _5 w, P, |$ K
}1 L6 G. [" @; A3 h, x; A# P
break;
1 Z' P2 I3 G) g/ a
default:4 y5 \- _% C4 _) F9 b, W
break;9 a% e! a7 @) }3 ?$ L" b4 s9 K
}- o& Z3 ^& r1 `4 q& N; \
#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 硬件中断方式实现方法,带流程图