Добавь ещё этот файл в проект. В функцию __low_level_init() перетащи инициализацию железа. Она будет до main вызываться. Сейчас у тебя вместо неё заглушка подставлена, а так вызов с пользой будет происходить.
Добавь ещё этот файл в проект. В функцию __low_level_init() перетащи инициализацию железа. Она будет до main вызываться. Сейчас у тебя вместо неё заглушка подставлена, а так вызов с пользой будет происходить.
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
TEPEM писал(а):
что это за стартап
Некий код который выполнится до майна. Он же, например, настроит тактовый генератор и сформирует вектора прерываний. А там, в том числе, кроме вектора сброса, будет данные для инициализация указателя стека. Я не знаю что делает IAR без наличия стартапа и моожет вектор сброса будет указывать на майн, потому мигалка работает . Но возможно, что у вас указатель стека инициализируется в никуда, раз стартапа нет, а вызов подпрограммы вызывает исключения, так как камень пытается сохранить адрес возврата в недопустимую область памяти, при возникновении прерывания.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Последний раз редактировалось Z_h_e Чт дек 05, 2019 20:33:42, всего редактировалось 2 раз(а).
void TIM2_IRQHandler(void) не работает что то( extern "C" void TIM2_IRQHandler(void) только так и вызывается два раза сразу, т.е. пауза - вызов, вызов - пауза и т.д.
Подлянку он кидает. Вместо того чтобы ругнуться, он подставляет минимальную таблицу с правильно заполненным адресом стека и переходом на штатную точку входа. Без прерываний оно даже и работать будет. Но таблица векторов заканчивается где-то в районе SysTick_Handler, на что ТС и попался. Уж лучше было бы материться, чем тихую подлянку делать.
Подлянку он кидает. Вместо того чтобы ругнуться, он подставляет минимальную таблицу с правильно заполненным адресом стека и переходом на штатную точку входа. Без прерываний оно даже и работать будет. Но таблица векторов заканчивается где-то в районе SysTick_Handler, на что ТС и попался. Уж лучше было бы материться, чем тихую подлянку делать.
Вот тот же эффект, между тиками около 2с, он загорается и тухнет мгновенно, потом уже пауза и по кругу. Только зажигая на два тика он горит столько же времени сколько и пауза
Добавлено after 2 minutes 5 seconds: Я хочу сказать что прерывание вызывается так
Флаг прерывания, кстати, не так очищается. Но это на самостоятельную проработку RM. Обрати внимание, что биты в SR имеют статус "rc_w0". Флаги можно проще чистить.
Думаю, стоит пояснить что происходит. В микроконтроллере много разных шин, работающих на разных скоростях. Процессор дал команду на очистку бита в таймере и это потребует несколько тактов на реальную очистку. И если сразу же выйти из прерывания, то можно успеть схватить ещё не очищенный бит снова. Это если на пальцах.
Проверил код этот на трех разных камнях, f103, f427, f412, моя строчка из интернета работает только на f427 - void TIM2_IRQHandler(void), а ваша - extern "C" void TIM2_IRQHandler(void) везде, хотя первый вариант указан в подключаемых стандартных библиотеках, в чем шутка юмора?
Добавлено after 27 minutes 46 seconds: Господа, я посоветоваться у Вас хотел. У меня тут платка с забавным дисплеем stm32f412g disco. Он 240х240, на st7789 подключен через параллельный 16 битный (кажется 8080 как я понимаю) в FSMC камня. Очень охота его запустить без всяких халов и прочей ереси кубовской. Но мои познания сишки скудны, из времен когда диал ап только появился, и мы качали инфу на книжных рынках, да и занимался я только openGL, а как вышла книга опенгл фор делфи - свалил с сишки, там как раз вышел визуал студио 7 на 6 дисках, не реальная цена на тот момент для меня была, а книги были по опен гл на с++ целиком на встроенных мастерах ВСнет. Ну да это лирика. И вот я думаю есть два пути, либо мучать примеры инициализации из сети, но я верно все их перебрал безрезультатно, даже по китайским блогам шастал. Либо стандартный пример из куба отчистить от ереси, я уже почти сделал это но застрял жестко. У меня пока с подвижки только в виде проекта с таймером, настроенными ногами на FSMC, и шим на подсветку. Что бы Вы посоветовали?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения