15.10.2022, 22:30
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Имя функции обработчика прерывания объявлено в ассемблерном файле startup_stm32f10x_md.s в секции g_pfnVectors: .word EXTI1_IRQHandler. Поэтому, когда пишите void EXTI1_IRQHandler(void) { ... }, компилятор берет адрес функции EXTI1_IRQHandler и помещает ее в таблицу векторов. Для этого, имя функции должно до буквы совпадать с прописанными в стартапе именами. Иначе, компилятор не увидит соответствий и в таблицу векторов впишет адрес дефолтного обработчика Default_Handler (пустой бесконечный цикл).
В других местах объявлять функцию-обработчик не требуется, всё уже записано в стартап-файле.
Что соппсна у автора, вероятно, и происходит. Поскольку обработчика EXTI0_IRQHandler я чет не увидел. Хотя автор пишет как-то сумбурно - в коде одно, в комментах другое. Хтоп знал, как оно на самом деле должно у него быть.
|
|
|
|
15.10.2022, 22:57
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
NewWriter, все так. Но тут немного о другом. Об объявлении функции. Поместите функцию обработки прерывания в другой файл. И не объявите ее в h файле. Или другом месте. И компилятор не заменит адрес дефаултного прерывания на вашу функцию.
Понятно, что название до буквы совпадать должно.
|
|
|
|
15.10.2022, 23:12
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Чой-то не будет помещать то? Поскольку стартап в большинстве случаев написан на ассемблере, то вначале работает ассемблерный сборщик, а там то как раз и есть это объявление как weak (слабосвязанная функция), которая работает по принципу "если где-то встретилось такое же имя, то именно оно оттудава будет вставлено в конечную сборку, в противном случае действительным будет то, что написано с weak".
|
|
|
|
16.10.2022, 02:22
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 709
Сказал спасибо: 363
Сказали Спасибо 795 раз(а) в 370 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
К слову, прерывания EXTI можно сгенерировать программно путём установки соответствующих битов в регистре EXTI-›SWIER (software interrupt event register). Если не попали в обработчик - значит, нужно искать косяк в настройках/во внешних соединениях.
|
|
|
|
01.12.2022, 12:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Мужики, а кто-нибудь на STM32F103C6T6 поднимал CAN?
У меня мистика какая-то: как только подключаю преобразователь уровней (MCP2551 или TJA1050), МК не может выйти из состояния инициализации в режиме test, даже если я вообще не инициализирую ноги PB8/PB9. Если ничего к этим ногам не подключено, в режиме test все работает. Но стоит мне нормальный режим выставить — вообще никак… INAK стоит как вкопанный!
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
01.12.2022, 17:40
|
|
Прописка
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А на стандартных ногах РА11/ РА12 ? может с AF где косяк
|
|
|
|
01.12.2022, 20:55
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,257
Сказал спасибо: 11,169
Сказали Спасибо 3,858 раз(а) в 2,928 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
eddy, а что показывает измерение на ногах в процессе?
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
03.02.2023, 20:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
С ногами вроде разобрался: я PB8 сдуру на выход настроил - сам свои же макросы забыл. Остаётся разобраться, почему всё-таки в шину данные не идут, но это уже в понедельник осциллографом буду проверять.
Тут ведь ещё и МК - китайские STM32C6T6...
Интересное кино: в STM32F303, которые C и B, USB - альтернативная функция, а в тех, что D и E — "дополнительная"! Т.е. альтернативную настраивать не нужно… Благо, хоть та же AF14 у них ничем не занята, а то был бы прикол с переносом кода…
И тут встает вопрос: что им в MODER писать? Пошел я мануал курить. UPD: а фиг! Нет такого!
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось mike-y-k; 10.05.2023 в 18:02.
Причина: 6.6
|
|
|
|
10.02.2023, 23:42
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,532
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
И тут встает вопрос: что им в MODER писать? Пошел я мануал курить. UPD: а фиг! Нет такого!
|
Чего нет, мануала или MODER?
|
|
|
|
11.02.2023, 00:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
В мануале не написано, что туда надо. Но "методом Монте-Карло" оказалось, что просто нуль в MODER нужно оставить. И оно само взлетает.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:21.
|
|