Микроконтроллеры STM32 - тонкости работы, отладочные платы

Кто любит RISC в жизни, заходим, не стесняемся.
satman555
Родился
Сообщения: 7
Зарегистрирован: Сб ноя 29, 2025 16:13:12

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение satman555 »

Здравствуйте всем,
У меня вопрос такой имеется плата stm32f407zgt6 и дисплей ili9488 без тача. Не могу подружить.
Использую софт
1. Стм32кубеМХ
2. Touchgfx
3. Stm32cubeIDE

Никто не подскажет попроще путь? Я только начинаю разбираться с этим со всем)

Спасибо большое.

Сейчас смотрю видео, бубнит что то монотоно. Может кто знает по делу?
https://www.youtube.com/watch?v=g1siKaPox88
Реклама
lubitel5
Открыл глаза
Сообщения: 57
Зарегистрирован: Пн янв 13, 2014 16:01:21

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение lubitel5 »

[uquote="veso74",url="/forum/viewtopic.php?p=4769556#p4769556"]lubitel5, меняете содержимое глобальной переменной count_print в прерывании. Добавьте volatile (если не)?[/uquote]
В данном случае она ж и меняется в прерывании.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение VladislavS »

Тогда лучше всего её внутри функции объявить как static.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3870
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Engineer_Keen »

Помогите люди добрые :facepalm:
Работают в Keil, отладка/прошивка через ST-LINK V2. В какой-то момент, прошивать стало всю флешь, от начала и до конца, а не только то, что использовано в программе. После чего так стало не помню, точно менял .sct чтобы распихать стек и мелкие переменные в CCRAM, а большой массив в остальную RAM. Каждый раз при прошивке перетирать всю память тоскливо, сама программа пока чуть больше 4кБ из 500. Не пойму куда копать, то ли в sct, то ли в настройках самого ST-LINK, то ли в компилятор (чтобы он в конце HEX-файла нули не писал)...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Реклама
Эиком - электронные компоненты и радиодетали
Adrift
Вымогатель припоя
Сообщения: 540
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Adrift »

Engineer_Keen, RAM сколько? Может во флеше теперь хранятся данные чтобы инитить ваш большой массив, даже если это одни нули.
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3870
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Engineer_Keen »

Массив 120к, я заметил что вроде после его добавления такое стало, сейчас попробовал убрать +ZI из scatter файла, но это не повлияло, да и пишет во флешку явно больше 120к, там прямо до конца идет. И в Target поставил галки Noinit, не влияет.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение VladislavS »

Смотрите map-файл что по каким адресам легло.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3870
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Engineer_Keen »

Легло вроде все верно, но смущает что регионы RW_IRAM в скаттере как бы включены в LR_IROM1 судя по скобкам, и в map файле такая строчка получилась: " Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0001f05c, Max: 0x00080000, ABSOLUTE)", т.е. там и код и все переменные и массив 120к. И в конце в итоге:
Total RO Size (Code + RO Data) 4720 ( 4.61kB)
Total RW Size (RW Data + ZI Data) 122348 ( 119.48kB)
Total ROM Size (Code + RO Data + RW Data) 127068 ( 124.09kB)
т.е. получается весь образ 127к, углядел адрес в момент конца загрузки, похоже на правду +-
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
veso74
Поставщик валерьянки для Кота
Сообщения: 1906
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение veso74 »

[uquote="Engineer_Keen",url="/forum/viewtopic.php?p=4769649#p4769649"]... Каждый раз при прошивке перетирать всю память тосклив ...[/uquote]
Keil, STM32G. Tо же самое произошло, когда ввел одну константу в эмулированной флэш как EEPROM (в данном случае: double).

Код: Выделить всё

#define EEPROM_BASE_ADDR              0x0801F800  // start address of the last FLASH page (page 63)
#define EEPROM_FREQ_CALIB_COEFF_ADDR  0x00
const double EEPROM_FREQ_CALIBR_COEFF_DOUBLE __attribute__((section(".ARM.__at_0x0801F800"))) = 0.0;
и

Код: Выделить всё

Program Size: Code=6090 RO-data=522 RW-data=416 ZI-data=1648  
Из-за медленной записи МК по всей памяти (и невозможности найти быстрого решения) зaменил метод: (проверка пуста ли ячейка, если да, то запись по умолчанию, если нет: прочитать содержимое). Но сама причина интересная.
Последний раз редактировалось veso74 Ср дек 03, 2025 15:28:05, всего редактировалось 1 раз.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3870
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Engineer_Keen »

#define EEPROM_BASE_ADDR 0x0801F800 // start address of the last FLASH page (page 63)
Тут я бы понял, даже если программа мелкая и кончается адресом 0x08000100, то программатор наверно прошьет все от 0х80000000 до 0x0801F800, хоть там и нули с 100го адреса, но в 0x0801F800 - ячейка EEPROM, т.е. та же флешь.
Но у меня-то кода 4к а дальше только чистый RAM, я даже в скаттере его вынул из LR_IROM1, теперь в map файле строчка поменялась на: Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001270, Max: 0x00080000, ABSOLUTE), но все равно есть вторая:
Load Region ER_IRAM (Base: 0x20000000, Size: 0x0001ddec, Max: 0x00020000, ABSOLUTE) и в итоге весь образ опять 127к, надо как-то указать что этот кусок в образ ROM не входит, но я никак не могу найти где и как это делается.

Пока ехал домой, подумал, может косяк в том что я память под переменные резервирую через space?
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
lubitel5
Открыл глаза
Сообщения: 57
Зарегистрирован: Пн янв 13, 2014 16:01:21

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение lubitel5 »

Что может быть не так? АЦП-ДМА после завершения передачи зависает в прерывании, это я так понял. По переводу-"получено неожиданное прерывание", но так и не понял что это значит. В описаниях режимов у F407 и F103 для моего случая не нашел. Но 407-й работает, а 103-й виснет.
Вложения
Код.png
(152.39 КБ) 154 скачивания
Ошибка.png
(84.83 КБ) 145 скачиваний
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение VladislavS »

А где собственно обработчик прерываний DMA? И зачем вообще прерывания?
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3870
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Engineer_Keen »

надо как-то указать что этот кусок в образ ROM не входит, но я никак не могу найти где и как это делается.
Блин, нашел, просто в директиву AREA надо было NOINIT вписать :facepalm:
Вопросов не возникало пока я большой массив не задействовал, раньше переменные не сильно объема добавляли и я не замечал что прошивка долго идет...
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
lubitel5
Открыл глаза
Сообщения: 57
Зарегистрирован: Пн янв 13, 2014 16:01:21

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение lubitel5 »

В прерывании я изменял переменную и использовал в обработке данных. Но проблема для меня в том, почему виснет при разрешении прерывания. И не важно пустая функция или нет.
Вложения
ДМА.png
(12.59 КБ) 146 скачиваний
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение VladislavS »

Посмотрите отладчиком таблицу векторов прерываний - правильно ли установлен вектор.
Аватара пользователя
Zikon
Встал на лапы
Сообщения: 92
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Zikon »

Зависает - это уходит на обработчик по умолчанию (DefaultHandler)
который есть бесконечный цикл

и да, скорее всего нет адреса обработчика в таблице векторов прерываний
lubitel5
Открыл глаза
Сообщения: 57
Зарегистрирован: Пн янв 13, 2014 16:01:21

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение lubitel5 »

DMA1_Channel1_IRQ n Handler: так и не понял откуда взялась эта лишняя буква, название переносил копированием. Правильно DMA1_Channel1_IRQHandler.
Аватара пользователя
Just_Fluffy
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Ср июн 29, 2022 16:25:45

Re: Микроконтроллеры STM32 - тонкости работы, отладочные пла

Сообщение Just_Fluffy »

satman555, а что уже сделано для крепкой дружбы дисплея и МК?
Белая и Пушистая
Ответить

Вернуться в «ARM»