Цитата(DimaM @ Oct 14 2008, 14:42)

но что я не понимаю - почему последняя функция выполняется 3.6 us? я вроде и частоту процессора настроил 72 МГц и spi 18МГц.
Всё описанное ниже справедливо для IAR-а.
Перед процедурой лучше поставить оптимизацию по скорости:
Код
#pragma optimize= s 9
__arm
Причина, возможно, ещё в переменных
Flash1_. Где они расположены? Во внешней памяти? Даже если во внутренней, всё-равно простым mov-ом там не обойдётся. Смотрите листинг asm-овский. Попробуйте для эксперимента внутри процедуры создать временную переменную (массив) и читать в него, а потом замерить скорость. Если SPI 8-битный, то в этом случае на приём/передачу уйдёт ~1.3мкс, всё остальное - обработка и дёрганье FIO. Мне на SSI LPC2214/01 удалось получить производительность 2,27мкс/слово (17бит при 14,7456МГц интерфейс, *4 - частота проца), при этом была куча проверок, условий, поддержка протокола, принимаемые и передаваемые данные размещались в эластичном FIFO, который был во внешней SRAM, FIFO LPC не использовал.