Цитата(haker_fox @ Jun 6 2018, 19:49)

Я надеюсь, у вас spi_rw_flash отдаёт управление шедулеру при первом удобном случае (работает только по прерываниям, используя средства межпроцессного взаимодействия.
функция без прерываний
Код
uint8_t spi_rw_flash(uint8_t tx, uint8_t* rx)
{
uint16_t counter_retry = 0;
uint8_t err = 0;
g_uiRecFlag_SFL = 0;
// send byte
err |= SFL_SPI_SendChar(tx);
// wait until event of receive occurred
while(!g_uiRecFlag_SFL){
counter_retry++;
if (counter_retry > SPI_TIMEOUT_RETRY)
return 1;
};
// receive and save data in .
err |= SFL_SPI_RecvChar(rx);
g_uiRecFlag_SFL = 0;
return err;
}
а как нужно отдавать управление шедулеру? по идее он сам знает когда переключиться на другой таск.