While loop for function call for enabling I2C interrupts seems to be behaving weirdly
Who calls the I2C_StopTransmission? But anyway, the I2C_StopTransmission sets the I2C_READY, so it shall be the last call before you execute "Printing buffer values". And HAL_MasterReceiveInterrupt changes the staus from  I2C_READY to I2C_BUSY. So the sequence is as follows:

"Printing buffer values"
"Printing buffer values"
"Printing buffer values"
n x times

"RXing..."
"Stopping transmission..."
"Printing buffer values"
"Printing buffer values"
"Printing buffer values"
n x times


EDIT:

 if (i2cState != I2C_RX_BUSY &amp;&amp; i2cState != I2C_TX_BUSY)


if it's not rx_busy and it's not tx_ busy then

I2C_handle_p-&gt;I2C_State = I2C_RX_BUSY;


?? then it's rx_busy??

Further, you ask a state that obviously is set by system and then you override it?