Hi i got following code:
Code:
void STM32SPI::handleInterrupt() {
if (SPI_I2S_GetITStatus(spiport, SPI_I2S_IT_TXE) == SET) {
if (sendBufferPos != sendBuffer.end()) {
SPI_I2S_SendData(spiport, *sendBufferPos);
sendBufferPos++;
} else {
enableInterrupt(false);
sendBuffer.clear();
}
}
if (SPI_I2S_GetITStatus(spiport, SPI_I2S_IT_RXNE) == SET) {
receiveBuffer.push_back((u8) SPI_I2S_ReceiveData(spiport));
}
}
void STM32SPI::send() {
sendBufferPos == sendBuffer.begin();
enableInterrupt();
}
with sendBuffer and sendBufferPos beeing class members:
Code:
class STM32SPI{
vector<u8>::iterator sendBufferPos;
vector<u8> sendBuffer;
}
i am trying to do this:
after calling send the iterator is set to the begin of the vector and the interrupt is enabled, now everytime the interrupt handler is called, the iterator *should* move to
the next position till end(). but it doesnt. sendBufferPos != sendBuffer.end() is never true.
I am not touching the vector, so the iterator should not be invalidated as far as i know.
P.S.
the code is running on a microprocessor