你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
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;: A M$ E( C& Y/ ]1 Y, O: n% n+ b( @. \
/* If AF = 1 */! d; c' j o& e0 \. i H; U; F
if ((SR1Register & 0x0400) == 0x0400)
{* M% H* i' o4 N5 e3 c* x6 I
I2C1->SR1 &= 0xFBFF;6 e t3 w2 q" _; X
SR1Register = 0;
}
/* If ARLO = 1 */
if ((SR1Register & 0x0200) == 0x0200)4 c( k7 l1 E r* A
{
I2C1->SR1 &= 0xFBFF;
SR1Register = 0;! O ]) Y& j' r7 c
}9 j5 m" B! b/ X+ w
/* If BERR = 1 *// O0 I0 E" T/ j5 G9 x
if ((SR1Register & 0x0100) == 0x0100)2 k" f0 |4 B7 L! Q' y$ C: e
{1 h: C/ ?! y; O) J0 \! e6 B) f3 l: k
I2C1->SR1 &= 0xFEFF;
SR1Register = 0;
}- C" s. e4 G, L, d; S
/* If OVR = 1 */
if ((SR1Register & 0x0800) == 0x0800)
{% i8 L( _0 v7 w7 @7 R& {6 N
I2C1->SR1 &= 0xF7FF;+ _. s3 Z! A9 o+ _/ Y* C+ T
SR1Register = 0;
}
STM32 I2C 硬件中断方式实现方法,带流程图
RE:STM32 I2C 硬件中断方式实现方法,带流程图
$ Q b1 C2 L# P& S
/** `- ?( U) n& U* ]
* @brief This function handles I2C1 Event interrupt request, tx, rx 5 i' @0 k2 O; n- R/ ~) C1 ~
* buffer and number of bytes will be changed.
* @param None
* @retval None
*/2 a, x) t; x4 i
void I2C1_EV_IRQHandler(void)
{
#ifdef ARC_I2C_IRQ, D" V, d* d# H4 t) b& F
uint32_t i2cEvent;
I2C_param_struct __IO *pI2C_param;, b: u A5 E. s- n$ U% h# h
# D; d" }( D- V" m- ~0 L* j
pI2C_param = ARC_get_I2C_param();
i2cEvent = I2C_GetLastEvent(I2C1);4 t+ H7 t' K$ o! g( o- F- ^% G- J
, V7 N& g* j( E7 z
switch (i2cEvent)1 ~& H& e ?5 N, H1 `
{8 D5 i) d1 _. K& f6 F. i- t7 t1 V
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); ]3 K ?+ P1 S( J$ b- O) \0 b, |
}
else
{6 L% G, [4 e0 P6 d3 z
I2C_Send7bitAddress(I2C1, pI2C_param->DeviceAddr, I2C_Direction_Receiver);
}6 J0 i! c( K! x Q: _
break;
/* Master Transmitter -------------------------------------------------------*/9 y0 [7 H7 M5 s# y- S G
case I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED:# _4 d! H ~9 S0 f, J
I2C_SendData(I2C1, pI2C_param->SubAddr);* T$ }8 W9 X \. B$ \3 ^8 Y
if(pI2C_param->TxNumOfBytes == 0)
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);) }& \3 x+ D# u9 C
break;* i. `- x$ j; {' B
case I2C_EVENT_MASTER_BYTE_TRANSMITTING: /* Without BTF, EV8 */ * N6 _( N: J% g
if(pI2C_param->TX_I2C_Index < pI2C_param->TxNumOfBytes)! s- ?1 `0 o8 x% w/ u1 q
{ |. g, }3 L6 o" `
I2C_SendData(I2C1, pI2C_param->TxData[pI2C_param->TX_I2C_Index++]);( G/ u- {3 e( E' }& g- `2 J: X
}6 l9 u4 a2 ~+ o" O1 V5 I; w" H* R
else
{
I2C_ITConfig(I2C1, I2C_IT_BUF, DISABLE);9 z" J- Z6 s. y8 ~* Q9 H
}- R9 N5 L: Q: E" K; }5 b1 q
break;% x! B. R5 X: `8 ?( y6 C. e
case I2C_EVENT_MASTER_BYTE_TRANSMITTED: /* With BTF EV8-2 */
if(pI2C_param->TX_Generate_stop == 1)
{0 S: M1 b( c$ |* H. d
I2C_GenerateSTOP(I2C1, ENABLE);) g) u+ X* ^6 O4 ^ f1 d! @
I2C_ITConfig(I2C1, I2C_IT_EVT, DISABLE);
}8 _+ A1 u1 U, O* l: F7 m
else
{0 \. H3 m9 a" ~
pI2C_param->I2C_DIRECTION = ARC_I2C_DIRECTION_RX;1 d5 d( }) \4 h% M7 \
I2C_ITConfig(I2C1, I2C_IT_BUF, ENABLE);: k+ {% Z3 q# m9 q9 {
I2C_GenerateSTART(I2C1, ENABLE);
}) P m. P+ T) k4 u
break;! K' K6 y' |. t& c( @
/* Master Receiver -------------------------------------------------------*/
case I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED:% ]9 r& P+ I* k4 I- e1 G
if(pI2C_param->RX_I2C_Index == (pI2C_param->RxNumOfBytes - 1))3 Y! R+ z) N- k& a6 n {
{9 E( S. a2 d& a( T
I2C_AcknowledgeConfig(I2C1, DISABLE);1 @% [' k9 x" ^5 d& w3 j8 _
I2C_GenerateSTOP(I2C1, ENABLE);$ `+ \: o% j4 `9 W; E4 T
}
break;0 W# T& K* k( h E; q' c% B
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))
{8 B3 z8 c K9 r3 l* ?
I2C_AcknowledgeConfig(I2C1, DISABLE);- O t$ Y# E" [5 s5 e y
I2C_GenerateSTOP(I2C1, ENABLE);
}; g& _+ b3 X" L7 b
break;
0 H9 p& a h* ]* X. D
default:( U0 l% }( A5 k& n( r5 s& {( U1 ^
break;
}
#endif2 R6 K) i7 V9 A% N
}
回复: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 硬件中断方式实现方法,带流程图