05.09.2022, 18:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,655
Сказал спасибо: 117
Сказали Спасибо 815 раз(а) в 592 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да заработало уже, без всех этих ваших убогих дебаггеров. С gdb разбираться - жесть просто, и все равно ничего путного не выходит.
Опять, кстати, на странную хрень наткнулся. Если написать так:
Код:
|
RCC-›APB2ENR = RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_AFIOEN;
AFIO-›MAPR = AFIO_MAPR_SWJ_CFG_JTAGDISABLE;
GPIOA-›CRH = CRH(15, CNF_PPOUTPUT | MODE_SLOW); |
то работает. Если выкинуть RCC_APB2ENR_IOPBEN (т.к. порт B у меня не используется), то подтяжка USB не работает. Но если перед вызовом второй строки воткнуть инициализацию других ног, не требующих отключения JTAG, то все ОК.
Когда-то давно я на такую бредятину уже натыкался. И совсем из головы вылетело. Целых пару часов тыкался: ну не срабатывает подтяжка, и все тут!
С нерабочим SPI тоже бред какой-то: я в функции mymemcpy забыл инкремент (т.е. в буфере только первый байт копировался), но к работе SPI это вообще отношения не имеет. И DMA не заводилось! Как только добавил инкременты, все заработало. Я вообще охреневаю: как такое возможно? DMA абсолютно пофиг, какие массивы копировать, абы длину задали и массивы указали. И, главное, в листинге все есть, компилятор там ничего важного не выкинул, решив соптимизировать...
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 05.09.2022 в 18:28.
|
|
|
|
06.09.2022, 06:26
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
я в функции mymemcpy забыл инкремент
|
Ну я ж говорил, что сам там косячишь, я ж говорил, что в этой функции ошибка! И с остальными проблемами - тоже САМ КОСЯЧИШЬ. Но упорно тычешься в стены с завязанными глазами. Ну чтож, твое право - косячить и мучиться, если тебе нравится доставлять боль себе самому. Продолжай в том же духе
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
13.10.2022, 20:03
|
|
Частый гость
Регистрация: 28.12.2010
Адрес: Красноярск
Сообщений: 44
Сказал спасибо: 183
Сказали Спасибо 27 раз(а) в 14 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день всем !
Пока появилось время решил поразбираться c STM32F103C8T6. Работа с портами на ввод- вывод понятна, а вот в прерываниях хорошо зарылся и выхода пока не вижу. Идея вроде бы простая - запустить прерывания от кнопки , прицепленной к PA1 контроллера. Вроде бы все по даташиту делаю, да и сторонние проекты смотрел - крамольного ничего не могу найти в исходном коде, но контроллер упорно не выходит в прерывание. Подкиньте идею - в какую сторону копать...
Компилятор - KEIL 5, схема - в pdf файле, программа - в тхт. Ну и в скриншоте- опции проекта...
|
|
|
|
13.10.2022, 21:20
|
|
Вид на жительство
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
seeker-rzd, ИМХО не успеваешь нажать кнопку во время инициализации.
Перенеси отслеживание нажатие кнопки в while
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
|
|
|
Сказали "Спасибо" Murka-MakMur
|
|
|
13.10.2022, 23:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,047
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от seeker-rzd
|
Подкиньте идею - в какую сторону копать...
|
GPIOA-›CRL &= ~(GPIO_CRL_MODE1 | GPIO_CRL_CNF1); // PA1- вход
Имхо для EXTI порт должен быть настроен как AF - а по вашему комменту он у вас input
|
|
|
Эти 2 пользователя(ей) сказали Спасибо dgrishin за это сообщение:
|
|
|
14.10.2022, 02:13
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 748
Сказал спасибо: 365
Сказали Спасибо 822 раз(а) в 386 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от seeker-rzd
|
в какую сторону копать..
|
1) Убедиться, что в проекте используется startup-файл, где определена таблица векторов прерываний (там имена векторов помечены атрибутом "weak").
2) Убедиться, что имя обработчика прерывания в своем коде в точности соответствует таковому в таблице векторов.
3) Если грузим прошивку в SRAM, то не забываем указать в регистре SCB-›VTOR положение таблицы векторов в области SRAM:
PHP код:
|
// Для SRAM таблица векторов с адреса начала SRAM: SCB-›VTOR = SRAM_BASE; /* Vector Table Relocation in Internal SRAM. */
// Для FLASH таблица векторов с адреса начала FLASH: SCB-›VTOR = FLASH_BASE; /* Vector Table Relocation in Internal FLASH. */
|
P.S.
У F103 для прерываний EXTI нет настройки "AF Input", достаточно просто настройки на вход ( как у ТС ).
P.P.S
У TC все настройки МК сделаны "руками", так что в startup-файле можно закомментировать вызов SystemInit().
P.P.P.S.
Все изложенное касается GCC; в Keil, думается, со startup-ом должно быть аналогично.
Последний раз редактировалось j-Roger; 14.10.2022 в 02:18.
Причина: Исправление арфографичезких ашыпков
|
|
|
Эти 2 пользователя(ей) сказали Спасибо j-Roger за это сообщение:
|
|
|
14.10.2022, 09:58
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А где то есть строка?
void EXTI1_IRQHandler( void );
|
|
|
Сказали "Спасибо" sat_art
|
|
|
15.10.2022, 18:53
|
|
Частый гость
Регистрация: 28.12.2010
Адрес: Красноярск
Сообщений: 44
Сказал спасибо: 183
Сказали Спасибо 27 раз(а) в 14 сообщении(ях)
|
Сообщение от sat_art
|
А где то есть строка?
void EXTI1_IRQHandler( void );
|
эта строка здесь ни к чему, поскольку обработчик прерывания объявлен перед главной функцией - main( ).
Спасибо всем неравнодушным... ну и остальным форумчанам заодно. Проблема решилась очень странно. Некогда заказывал два контроллера на пробу, вот когда распаял на плату- переходник второй контроллер и воткнул в макет - сразу же все заработало. Для меня это более чем непонятно, поскольку предварительно проверил монтаж на наличие КЗ, на то, что все пропаяно... в общем - проект заработал, но появились новые вопросы к самому себе.
Последний раз редактировалось mike-y-k; 10.05.2023 в 18:02.
Причина: 6.6
|
|
|
|
15.10.2022, 21:47
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
RCC-›CR |= RCC_CR_HSION; // включен внешний кварц на 8 МГЦ
|
Внешний кварц - это HS E (High-speed External). А внутренний осциллятор HSI (High-speed Internal) при запуске после сброса уже включен и без того, запускается всегда на внутреннем HSI, его включать не нужно.
__enable_irq(); - тоже не нужно, уже включено по умолчанию при старте.
|
|
|
|
15.10.2022, 22:00
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от seeker-rzd
|
эта строка здесь ни к чему, поскольку обработчик прерывания объявлен перед главной функцией - main( ).
|
Я согласен. Но вопрос не в вызове функции из майн или ниже ее объявления, а в поведении компилятора (линковщика). Эта функция не вызывается в вашем файле, а заменяет функцию обработки прерывания хер знает где.
В данном случае у вас все хорошо скомпилилось, но могло и нет.
Я такие вещи объявляю, мало ли что.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:55.
|
|