abutorin 0 September 11, 2012 Posted September 11, 2012 · Report post Добрый вечер. Требуется ваша помощь. Смог запустить scmRTOS на контроллере STM32F103xx с использованием инициализационных файлов (sysinit.cpp и startup.c) которые шли с примерами. Как я понял там устанавливается одна частота процессора и ее особо не поменаешь. Теперь есть желание запустить тот же проект с использованием инициалиационных файлов поставляемых от ST (startup_stm32f10x_md.S и system_stm32f10x.c). Для начала как я понял нужно переименовать обработчики прерываний (названия из файлов поставляемых с scmRTOS): PendSVC_ISR и SystemTimer_ISR. Это сделал в startup файле. Проект компилируется но результата нет. Долгими поисками и выяснениями склонился к мысли что просто не выключены эти самые прерывания. В документации так и не смог найти как же все это включить. Прошу сильно не пинать, опыта пока в данной теме маловато. Подскажите в каком направлении копать. К топику приложил все файлы в исходном состоянии. P.S. Файлы смог прикрепить только в архиве все вместе. system_init.tar.gz Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 September 12, 2012 Posted September 12, 2012 · Report post startup_stm32f10x_md.S не пойдёт, он не вызывает конструкторы. Можете сделать так - добавьте в проект system_stm32f10x.c, а в sysinit.cpp добавьте #include "system_stm32f10x.h" и исправьте функцию void init_HW(void) { SystemInit(); } Quote Share this post Link to post Share on other sites More sharing options...
abutorin 0 September 12, 2012 Posted September 12, 2012 · Report post Спасибо за быстрый ответ. Попробую вечером сделать. Но в данном случае получится что сначала инициализируется тактовая частота из файла sysinit.cpp а потом она переопределяется вызовом SystemInit(); ? Я догадываюсь что это будет занимат микросекунда, но всеже хочется не заставлять контроллер делать лишнюю работу. Quote Share this post Link to post Share on other sites More sharing options...
AHTOXA 25 September 12, 2012 Posted September 12, 2012 · Report post Нет, вы же удалите весь код инициализации из sysinit.cpp. Там останется только вызов SystemInit(). Или сделайте ещё проще - совсем удалите из проекта sysinit.cpp, а в startup.c замените init_HW() на SystemInit(). Quote Share this post Link to post Share on other sites More sharing options...
abutorin 0 September 12, 2012 Posted September 12, 2012 · Report post Понял, спасибо за совет. Quote Share this post Link to post Share on other sites More sharing options...