Цитата(Сергей Борщ @ Mar 9 2015, 09:45)
В обработчике прерывания создается объект класса TISRW_SS?
Создается объект TISRW. Как я понял для Cortex-M3 можно использовать его.
Цитата
Каким образом ожидаете событие? TEventFlag.wait()?
Да, именно так.
Вот код:
Код
OS::TEventFlag SPIRE_Event;
uint8_t SPI_data;
OS_INTERRUPT void SPI2_IRQHandler(void)
{
OS::TISRW TISRW_O;
if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET)
{
SPI_I2S_ClearITPendingBit(SPI2,SPI_I2S_IT_RXNE); //эта строка необязательна
SPI_data = SPI_I2S_ReceiveData(SPI2);
SPIRE_Event.signal_isr();
}
}
int8_t ReadWrite(uint8_t data)
{
/* Loop while DR register in not emplty */
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
/* Send byte through the SPI1 peripheral */
SPI_I2S_SendData(SPI2, data);
SPIRE_Event.wait();
SPIRE_Event.clear();
return SPI_data;
}
Обработчик прерывания включен только для события RXNE.