Цитата
PS: уход от проблемы - не решение, разберитесь с прерываниями, без них - тяжко.
Полностью согласен с вами, Brain13!
Недавно я разобрался с этой проблемой:
1. В проекте был подключен "stm32f10x_it.c" и "stm32f10x_it.h". В связи с этим, основная программа, по каким-то только ей известным причинам, за программой обработчиком прерывания лезла именно в этот файл!! После его удаления из проекта все встало на свои места и заработало! До этого не работали прерывания для UART.
2. Что касается SPI: Не знаю как делается правильно, но я сделал следующим образом.
2.1. В начале программы, в месте инициализации, запускаю модуль SPI "SPI_Cmd(SPIx,ENABLE);" и запрещаю все прерывания от него.
2.2. В нужном месте для начала отправки CS->0, записываю данные в регистр на отправку "SPI_I2S_SendData(SPIх,0x42);" и разрешаю прерывание по "буфер приема не пуст".
2.3. По завершению отправки и приема возникает прерывание "буфер приема не нуль". Считываю данные, запрещаю прерывание по "буфер приема не нуль" и разрешаю прерывание по "буфер на отправку пуст".
2.4. Наверное, сразу же возникает прерывание по "буфер на отправку пуст" и я запрещаю прерывание по "буфер на отправку пуст", разрешаю прерывание по "буфер приема не пуст" и записываю следующие данные в регистр на отправку
2.5. и т.д. скока нужно)
Несколько геморройно на мой взгляд, но так все работает!!