Перейти к содержанию
    

abutorin

Участник
  • Постов

    40
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о abutorin

  • Звание
    Участник
    Участник
  1. TEventFlag.Signal_isr()

    Похоже я где-то что-то напутал. Сейчас еще раз проверил, и все работает корректно. Видимо я не ту прошивку в железо залил. Спасибо за ответы.
  2. TEventFlag.Signal_isr()

    Создается объект TISRW. Как я понял для Cortex-M3 можно использовать его. Да, именно так. Вот код: 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.
  3. TEventFlag.Signal_isr()

    Доброго времени суток. Пробую использовать TEventFlag для оповещения основного цикла программы о завершении передачи даннных через SPI на STM32F103. В основном цикле очищаю флаг события, записываю данные в регистр, начинаю ждать событие. В обработчике прерывания взвожу флаг события методом signal_isr. Все работает, но остается одна проблема, процесс ожидающий этого события пробуждается только после следующего планирования процессов по системному таймеру, т.е. только примерно через 1мс. Мне казалось что такой задержки быть не должно. Я что-то делаю не так, или непонимаю как это должно работать. Подскажите кто чем может.
  4. Похоже часть проблемы была в компе. Попробовал на другой машине все указанные настройки. Ручная переиндексация работает, обновление при пересборке работает. Но автоматическое обновление при сохранении файла не работает.
  5. Никак не пойму. Она у меня только вызывается при изменении настроек. При ребилде не вызывается. При переиндексации тоже.
  6. Виноват, на это он не ругается. Не нравится ему что-то другое. Да, все добавил из примера из предложенной вами темы.
  7. Настраивал как вы рекомендовали в этой ветке. В разделе C/C++ Generel->Preprocessor Include/Providers галка CDTGCC Built-in Compiler Settings команда make specs_file=${INPUTS} discovery галка Allocate console in the concole view Остальные галки сняты
  8. mdmitry Взял за основу предложенный вами makefile. И заметил неприятную особенность, препроцессор не распознает директиву ##. Не подскажите как побороть?
  9. После внесения изменений каких либо дефайнов в исходниках эклипс этого не замечает. И продолжает ругаться что где-то, что-то не определено, хотя сборка происходит корректно.
  10. Это я понял. Когда эклипс вызывает эту команду? При изменении файлов исходного кода этого не происходит. Сейчас заметил что при сборке проекта тоже не происходит. Хочется заставить эклипс это делать автоматом.
  11. Добрый вечер, Заметил на форуме что для скачивание рекомендуют использовать ссылки отличающиеся от тех что есть на странице по адресу тут. Где качать корректнее и может стоит их актуализировать?
  12. mdmitry, Спасибо, последовал вашему совету и посмотрел в сторону makefile-ов. Т.к. одной из задач было использование scmRTOS то взял для начала makefile из примеров.
  13. Добрый день. Задам наверное глупый вопрос. Но я не совсем понял когда Eclipse вызывает make с целью discover? При ребилде он у меня это делает а можно ли как-то заставить делать это в фоновом режиме?
  14. Прошу прощения, перепутал. Имел ввиду SPL (standard peripheral library).
  15. Боюсь моих знаний на текущем этапе недостаточно для такого варианта. Но если вы готовы направить в нужном направлении то думаю можно. У меня только возникнет вопрос как можно самому делать шаблоны для проектов в Eclipse, чтобы для каждого проекта не копировать файлы вручную и не писать makefile с нуля.
×
×
  • Создать...