STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Volodia11960 писал(а):в IAR но где взять проекты для IAR не знаю
Чем не нравится пол гига проектов, что идут в комплекте с иаром ?
теже примеры, что у СТ лежат на сайте с periphLib - тоже с проектами под IAR
Реклама
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Пытаюсь завести ЖК на основе этой статьи: http://robocraft.ru/blog/algorithm/785.html.
В дебаге видно, что влетает в assert_handler. Не инициализируется, в общем. Я подключал к порту В, видимые в коде строки поменял. Но хз, работает ли оно вообще с портом, отличным от того, что в примере.
Может, кто знает либу поудачней?
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

Сообщение Солнцеворот »

TripleKill писал(а):Пытаюсь завести ЖК на основе этой статьи: http://robocraft.ru/blog/algorithm/785.html.
В дебаге видно, что влетает в assert_handler. Не инициализируется, в общем. Я подключал к порту В, видимые в коде строки поменял. Но хз, работает ли оно вообще с портом, отличным от того, что в примере.
Может, кто знает либу поудачней?
Ищите строчку

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

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
Она включает тактирование порта А. Очевидно вы забыли включить тактирование того порта, на который перенесли свой ЛСД.
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Эту строчку видел, менял. Не прокатило. Может, ещё чего пропустил.

Раз уж тема поднялась, подскажите кто-нибудь, можно ли при конфигурировании 5V-tolerant выводов STM32 в режиме открытого коллектора заделать на них ТТЛ-уровни?
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

Сообщение Солнцеворот »

TripleKill писал(а):Эту строчку видел, менял. Не прокатило. Может, ещё чего пропустил.

Раз уж тема поднялась, подскажите кто-нибудь, можно ли при конфигурировании выводов STM32 в режиме открытого коллектора заделать на них ТТЛ-уровни?
5V-tolerant означает, что при подаче на эта ножки 5В микросхема не сгорит, как это должно было бы случиться с микроконтроллером, питающимся от 3.3В max. Дать на выходе напряжение большее, чем напряжение питания он тоже не может. Если позарез нужны 5В, ставьте усилитель или преобразователь уровней.
Реклама
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Может, кто знает либу поудачней?
Только что запустил эту либу (на F103). Без танцев с бубнами. Либа грамотная, хоть и мудрёная.
И да, проверь ещё RCC_APB2PeriphClockCmd. У него там только на порт A в примере, а если хоть какая-то линия индикатора висит на другом порту, надо и его включить.
Реклама
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Что каждый используемый порт надо тактировать, это тоже понятно. Раз у народа работает, значит проблема у меня, как-нибудь сяду разберусь, просто пока дисплей отложил.

Такой вопрос есть. Плата STM32F4 Discovery. Решил создать проект полностью с нуля. Кейл скопировал в проект startup_stm32f4xx.s, я создал main.c, прописал int main() и попробовал скомпилить. После ругани компилятора добавил ещё system_stm32f4xx.c. После этого пустой main нормально компилится.

Далее подумал подключить светодиоды на плате, добавил в проект stm32f4_discovery.c. Если в инклуды main.c ничего не дописывать, то он ругается на STM_EVAL_LEDInit(LED3);, а если дописать #include "stm32f4_discovery.c", то он не может найти файл (т.к. файл лежит в подпапке в папке проекта). Очевидное решение - дописать путь относительно папки проекта. Но ведь для большого количества файлов это очень долго. Подскажите, можно ли как-то заставить кейл самому искать файлы, если они находятся в подпапках в папке проекта, ну или вообще, как-то ускорить подключение файлов к коду?

Спасибо.
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

Создание проекта с нуля было плохой идеей, и скорее всего компилироваться он будет неправильно. Инклюд делают для заголовочного файла (.h) а не ".c". Лучше используйте заготовку проекта из StdPeriphLib.
Giggity giggity goo!
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Ок, а что я буду делать, если под рукой не окажется такой заготовки? Про инклюды понял, уберу.

Впрочем, в заготовки я заглядывал, вот только понять не могу, каким образом нужные файлы оказываются видимыми друг для друга, находясь в разных папках? Должен же быть способ легко это указать...

В примерах указаны директории в "Options for target..." -> C/C++ -> Include Paths. Попробовал у себя тоже указать, но не помогло.

UPD: поковырялся ещё, заработало, вопрос неактуален.
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

В примерах указаны директории в "Options for target..." -> C/C++ -> Include Paths.
С кейлом не работал (у него свой компилятор?), для GCC это директива -I (пути поиска). Обычно даже всякие графические IDE показывают эти опции при настройке.
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

TripleKill, я не знаю как в Keil, но в GCC чтобы собрать проект нужны: стартап (.s) - нужен для инициализации процессора при включении и вызова main(), линкер-скрипт (.ld) - указывает компилятору сегментацию памяти, правильный набор ключей компиляции (makefile) и т.п.
Правильная сборка проекта с их использованием реализована в той самой заготовке. А без них скомпилировать то получится, но вот работать на железе скорее всего не будет, или будет не так.
TripleKill писал(а):Ок, а что я буду делать, если под рукой не окажется такой заготовки? Про инклюды понял, уберу.
С таким подходом Вам не мешало бы и компилятор с нуля написать.
Giggity giggity goo!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

А без них скомпилировать то получится, но вот работать на железе скорее всего не будет, или будет не так.
Да всё получится, если разобраться во всей этой кухне, что я сейчас и пытаюсь сделать. По крайней мере удалось написать скрипт, реализующий подобную заготовку, и прикрутить это к модному ныне редактору Sublime Text 2, у которого есть плагин для парсинга Си кода + плагин для работы с GDB, что превращает его в полноценную IDE с отладкой в железе.
Только вот заготовок проектов нет.
Общий принцип изложил тут

И да, со всем этим бардаком помогают разобраться системы сборки типа CMake, правда добавляют еще больше бардака в голове...
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

ploop, моё сообщение было ориентировано на человека, который делает инклюд ".c"
Giggity giggity goo!
Встал на лапы
Аватара пользователя
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

Сообщение Солнцеворот »

Я несколько не к месту, но не могу не добавить: используйте Coocox. Я неделю мучился с IAR, чуть не поседел, когда код перестал после внесения изменений перекомпилироваться, после чего я его проклял (IAR) и установил Coocox. В Кокосе за день сделал больше, чем в Иаре за неделю.
Быстрый старт для Coocox легко найдете в интернете, Яндекс поможет.
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

Моя ОС Linux, я пользуюсь GCC, и ничего не знаю о Ваших иарах-кокосах :wink:

И ploop тоже линуксоид.
Giggity giggity goo!
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Солнцеворот писал(а):Я неделю мучился с IAR, чуть не поседел, когда код перестал после внесения изменений перекомпилироваться, после чего я его проклял (IAR) и установил Coocox.
Coocox - игрушка по сравнению с IARом
Встал на лапы
Аватара пользователя
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

Сообщение Солнцеворот »

Satyr писал(а):
Солнцеворот писал(а):Я неделю мучился с IAR, чуть не поседел, когда код перестал после внесения изменений перекомпилироваться, после чего я его проклял (IAR) и установил Coocox.
Coocox - игрушка по сравнению с IARом
Именно. В Кокосе все получается играючи, а в Иаре нужно уничтожить свою нервную систему прежде чем пустой проект удастся скомпилировать. Мне было бы интересно послушать чем, по мнению знатоков, IAR лучше Coocox`a, но боюсь это не подходящая тема для обсуждения этого вопроса и модераторы нас "зарэжют". Альтернатива - личные сообщения.
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

Сообщение TripleKill »

Foks писал(а):С таким подходом Вам не мешало бы и компилятор с нуля написать.
Понимаю Вашу иронию, но спасибо, без этого как-нибудь обойдёмся) Проект создан, откомпилен, успешно заработал в железе.

P.S. Если кому надо, могу поделиться опытом ковыряния в кейле. Новичкам от новичка, так сказать.
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

Сообщение Foks »

ploop писал(а):Sublime Text 2
Посмотрел. Он же платный и стоит $60.
Giggity giggity goo!
Модератор
Аватара пользователя
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Сообщение ploop »

Да, но во-первых бесплатная версия отличается только надписью в заголовке (давит на совесть, ограничения функционала нет), во-вторых, если реализую свои задумки, я его куплю. Он этих денег стоит.

Если я пользуюсь линуксом, это совсем не значит, что я против платного софта :) Я против цен с пятью нулями и выше за софт...
Ответить

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