ivpoed

С чего лучше начать по stm32 при переходе с Ардуино

37 сообщений в этой теме

ivpoed    1

Здравствуйте

Посоветуйте, с чего лучше начать при переходе с Arduino на STM32?

Есть желание проектировать несложные устройства и выпускать их. С STM32 до этого дела не имел, в Ардуино собаку съел.

Хочется побольше готовых библиотек + удобную отладочную (discovery? nucleo?) + удобную IDE.

Заранее спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Andras    18

Я бы посоветовал KEIL uVision5+STM32Cube(как предварительный настройщик периферии и портов), ну и изучение Си и написание простых библиотечек для себя, ибо на дуине все попрятано и перегружено избыточным кодом.

Плата, подойдет любая, я взял самую дешевую на stm32f103c8t6( на али полно), и обязательно отладчик-программатор   ST Link, на все про все рублей 300 хватит.

По урокам, на ютюбе смотри товарища narod stream.

Вот.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@ivpoed  https://www.chipdip.ru/product/stm32f0discovery стоит косарь, программатор на борту. 

По предыдущим постам - куб - это хорошо, но хотя бы прочитать про регистры и управление на низком уровне надо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Andras    18

ST Link V2, вот такого плана мне предостаточно

вот такой

Прошивка, питание от USB и пошаговая онлайн отладка есть, больше ничего и не требуется.

цена рублей 130 на али

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Загрузка...
andryxa    226

Дорого, возьмите для начала что-то типа такого https://arduino-ua.com/prod1328-plata-razrabotchika-stm32f103c8t6-arm-stm32-minimalnaya-konfigyraciya Не дорогой,и контроллер на плате стоит популярный, под который масса примеров и проектов в сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10
Цитата

Есть желание проектировать несложные устройства и выпускать их. С STM32 до этого дела не имел, в Ардуино собаку съел.

Забыть о своем "плодотворном опыте" на аурдунье раз и навсегда.

Прерогатива, как аурдуньи в частности так и  avr в общем - в софтовом ногодрыге , в то время как STM32  позволяет создавать недорогие полностью аппаратные решения.

И для этого не нужны готовые библиотеки. И тем более кухаркины статьи, подобные "товарища narod stream" , что учат сами ни черта не зная и не умея.

Как и писал здесь ранее - для квик старта достаточно иметь F0 в TSSOP20 корпусе , плату адаптер TSSOP -DIP.

Для более комфортного вхождения нужен JLINK , который можно самостоятельно изготовить из F103 или F072 или любого набортного STLink v2 или китайского огрызка STlink v2 . Так же крайне желательно иметь логический анализатор.

В любом случае крайне  желательно изучение английского языка и документации от производителя.

Использование калокуба и SPL при изучении сведет на нет всю прелесть STM32 и в итоге получится та же самая ардунья... 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Electric_84    18
В ‎17‎.‎04‎.‎2017 в 07:20, dosikus сказал:

Использование калокуба и SPL при изучении сведет на нет всю прелесть STM32

а что посоветуете вместо "калокуба и SPL"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
E_C_C    67
В 17.04.2017 в 14:20, dosikus сказал:

Как и писал здесь ранее - для квик старта достаточно иметь F0 в TSSOP20 корпусе , плату адаптер TSSOP -DIP

так еще же нужен программатор ?  или я что то не понимаю ?

В 17.04.2017 в 14:20, dosikus сказал:

STM32  позволяет создавать недорогие полностью аппаратные решения.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10

E_C_C, для STM32 программатор как таковой  не нужен , большинство имеют встроенный бутлоадер через UART .

  А F0x2 имеют встроенный бутлоадер DFU к тому же crystall less, так что соединяем по USB и льем прошивку .

 Для комфортной отладки нужен программатор/отладчик ,  но и его можно изготовить без стороннего программатора.

Цитата

получается что можно выполнять несколько задач независимо от основной программы ?

 

Совершенно верно. В 8ми битках вся периферия это примитивный полуавтомат, в то время как в STM32 периферия способна работать полностью автономно. И самое главное адепты калокуба и SPL совершенно не видят этих плюшек и продолжают ваять софтовый ногодрыг  по привычке...

Изменено пользователем dosikus

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
E_C_C    67
29 минут назад, dosikus сказал:

встроенный бутлоадер через UART .

шикарно, мне уже нравиться,

Кот, посоветуй еще среду разработки ,  чтоб наиболее понятна для начинающего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3

Мозг можно свернуть разбираясь с регистрами и т.п. на низком уровне.

Берите HAL и куб - вход будет самый комфортный. Сам иду таким путём. Камни мощные - в тот момент когда вам перестанет хватать мощности вы либо купите камешек мощнее, либо начнете в SPL лезть (а это уже будет гораздо проще после HAL)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10
34 минуты назад, Sancta сказал:

Берите HAL и куб - вход будет самый комфортный. Сам иду таким путём. Камни мощные - в тот момент когда вам перестанет хватать мощности вы либо купите камешек мощнее, либо начнете в SPL лезть (а это уже будет гораздо проще после HAL)

Бред, причем полный. Учить железо по калокубу и SPL невозможно и тех аппаратных реализаций ни с SPL ни тем более с калокубом вы просто не осознаете.

А по ссылке не " Автор удачно все рассказывает" а пытается натыкать в калокубе непоймиче , сам ни черта не понимая.

Как и писал выше - натыкивают подобие софтового ногодрочерства в avr ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3
2 минуты назад, dosikus сказал:

Бред, причем полный. Учить железо по калокубу и SPL невозможно и тех аппаратных реализаций ни с SPL ни тем более с калокубом вы просто не осознаете.

Ну знаете - если человек спрашивает с чего начать, то он новичек. Такой же как и я. И отправлять его сразу к 700 страничному руководству STM крайне негуманно. Если вы специалист и переходите с AVR ассемблера на стм с то это одно. А если новичек переходит с ардуино, то ему лучше таки начать с Куба. В процессе освоения все равно необходимо лезть в исходники и там всё становится более понятным. Это ИМХО 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
E_C_C    67

ИМХО лучше начать с простого мигания диодом, или вывести "хелло ворд" , но сделать самому без использования чужих библиотек . От простого к сложному. А когда уже придет понимание что и как работает , тогда уже можно брать готовое. Но тогда это уже не нужно будет ))) уже будет наработано свое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3

Я не спорю с Вами насчет того, что лучше всё доскональнее изучить. 

Просто я прошёл тем же путем что и автор. Сначала ардуина, потом стм32.

Я честно пытался начать с CMSIS и SPL. А что это значит? Это значит что ты сам собираешь весь проект, раскладываешь по папкам, линкуешь, правишь конфигурационные файлы - каждый раз вспоминая где и как это делается и где что лежит. Потом вручную врубаешь тактирование на переферии. Надо не забыть что на какой шине висит. В итоге чтобы два раза мигнуть светодиодом уходит полдня мозго...а. И это еще не касаясь общего тактирования. Настройки которого потребуют дзеновского спокойствия.

Что нам дает куб? Тактирование правится двумя кликами. Я в синем свистке сразу ставлю 72 мгц и всё остальное он сам делает. Ноги назначаются элементарно. Проект создается автоматом. Все библиотеки лежат там где надо. Что в этом плохого? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10

Плохо то что вы не поймете ни железо ни работу с ним.

  То что вы расписываете как свою работу с SPL и есть танцы с бубном , при работе с регистрами все намного проще.

Цитата

  Что нам дает куб?

Да ничего он не дает, тупиковый путь ардуньи и не более...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3
Только что, dosikus сказал:

Плохо то что вы не поймете ни железо ни работу с ним.

  То что вы расписываете как свою работу с SPL и есть танцы с бубном , при работе с регистрами все намного проще.

Да ничего он не дает, тупиковый путь ардуньи и не более...

Между прочим HAL и Cube активно развиваются STM32. А вот CMSIS и SPL я читал в ближайшем будущем ждёт забвение.

Вот пример функции HAL. Вам не кажется что это теже яйца что и SPL, Только удобочитаемее и в профиль? Те же регистры напрямую опрашиваются.

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
  GPIO_PinState bitstatus;

  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));

  if ((GPIOx->IDR & GPIO_Pin) != (uint32_t)GPIO_PIN_RESET)
  {
    bitstatus = GPIO_PIN_SET;
  }
  else
  {
    bitstatus = GPIO_PIN_RESET;
  }
  return bitstatus;

Все ваши сентенции насчет куба наводят на мысль о том, как еще недавно гуру AVR на асме писали сразу в машинных кодах и посмеивались над народом с атмел студио. Типа изучайте камешек досконально. А теперь смотрят на то, куда ушло высокоуровневое программирование и выпадают в осадок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10

И эта простыня кому то интересна ? Вы издеваетесь?

#define  BUTTON_1 GPIOx->IDR & GPIO_IDR_IDR1 

*/ cut 

if (BUTTON_1) {};

Ну и где код более читаем, прост и быстрее?????

 

Изменено пользователем dosikus

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3

Сорри что-то сглючило - три раза пост отправился.

6 минут назад, dosikus сказал:

И эта простыня кому то интересна ? Вы издеваетесь?


#define  BUTTON_1 GPIOx->IDR & GPIO_IDR_IDR1 

*/ cut 

if (BUTTON_1) {};

Ну и где код более читаем, прост и быстрее?????

 

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

А вот в кубе открыть и пару раз мышой ткнуть - 2 минуты. ТС спросил с чего начать новичку. Я ответил и обосновал. Ваш код быстрее и лучше и меньше. Но чтобы писать так - надо углубиться в дебри. А это займет существенное время. Особенно когда надо будет затактировать какой нибудь USART или подобное. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dosikus    10
21 минуту назад, Sancta сказал:

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

Для этого делается один шаблон который тиражируется по проектам, и никаких сторонних либ НЕ НАДО!

О тактировании писал выше, нет там ничего сложного...

А вам надо осознать бритву Оккама, калокуб  создан в полной противоположности сему принципу, и в результате вместо ясной и прозрачной работы с железом получили один сплошной геморрой...

Изменено пользователем dosikus

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Sancta    3
11 минуту назад, dosikus сказал:

А вам надо осознать бритву Оккама, калокуб  создан в полной противоположности сему принципу, и в результате вместо ясной и прозрачной работы с железом получили один сплошной геморрой...

Изменено 5 минут назад пользователем dosikus

Нет никакой бритвы (как у буддистов :))

Есть только стойкое нежелание отдельных программистов пользоваться новыми удобными инструментами. Копать огород можно и мотыгой - но все почему то нанимают трактор, хотя и не понимают как он устроен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Гость иван79
      Автор: Гость иван79
      Добрый день. Начал изучать микроконтроллеры, уроков в интернете на Си достаточно, на ассемблере не так много, может быть кто—то использует ассемблер, и поможет с ответами. Установил keil, в нем пытаюсь что—то писать.
      Вопрос первый у меня такой, как мне отслеживать бит в конфигурационном регистре, например в RCC, в регистре должен установиться флаг, как мне его отследить в цикле? Если конкретнее как прочитать значение этого бита, 0 там или уже 1. Бит бандинг работает только для установки бита или и прочитать можно? Как проще отследить значение бита?
      Или вот второй вопрос, с помощью директивы EQU я дал имя адресу конфигурационного регистра, а как задать имя битам этого регистра?
      Спасибо за помощь
    • Автор: Arseniy Popov
      Добрый день! Необходимо подобрать микроконтроллер, который будет получать команды по serial от esp8266 и димировать RGBW светодиод по следующему алгоритму: 
      https://docs.google.com/document/d/1FkPLiIgxleuDQn8pjihICQGRrMPXbwFzqCt6StQZjhU/edit?usp=sharing
      а также написать для него прошивку на си.
      Отвечать можете в телеграм arsenicum32 или сюда.
      Пишите цену / сроки, находитесь ли в МСК и/или в области.
    • Автор: Zhuk72
      Доброго дня всем.
      Такое вот дело, нужно сделать некую железку, функционал сейчас не важен. Имеется на руках плата Nucleo-F401RE и дисплей.
      Поскольку сделан он под Ардуину, а платы Nucleo имеют (в том числе) совместимую с ним разводку разъемов под периферию, дисплей втыкается без переделки, как есть. Все это и красиво и удобно, но вот шина данных, а в данной реализации дисплея используется 8-битная шина, не попадают пин-в-пин с портами МК. Переделка не планируется, надо исходить из то, что есть. Следовательно имеем такую картину:
      LCD_D7 - PA8 LCD_D6 - PB10 LCD_D5 - PB4 LCD_D4 - PB5 LCD_D3 - PB3 LCD_D2 - PA10 LCD_D1 - PC7 LCD_D0 - PA9 Чтобы отправить байт в дисплей, нужно его раскидать побитно. Моя реализация работает, вот так она выглядит:
      void lcd35_setData(unsigned char lcd35_data) { // Share data between data bus pins. unsigned int d7, d6, d5, d4, d3, d2, d1, d0; // Clear data bus pins. GPIOA->BSRR = (GPIO_BSRR_BR10 | GPIO_BSRR_BR9 | GPIO_BSRR_BR8); GPIOB->BSRR = (GPIO_BSRR_BR10 | GPIO_BSRR_BR5 | GPIO_BSRR_BR4 | GPIO_BSRR_BR3); GPIOC->BSRR = GPIO_BSRR_BR7; // Split bits d7 = (unsigned int)((lcd35_data & 0x80) << 1); d6 = (unsigned int)((lcd35_data & 0x40) << 4); d5 = (unsigned int)((lcd35_data & 0x20) >> 1); d4 = (unsigned int)((lcd35_data & 0x10) << 1); d3 = (unsigned int)(lcd35_data & 0x08); d2 = (unsigned int)((lcd35_data & 0x04) << 8); d1 = (unsigned int)((lcd35_data & 0x02) << 6); d0 = (unsigned int)((lcd35_data & 0x01) << 9); // Set data GPIOA->ODR |= (d7 | d2 | d0); GPIOB->ODR |= (d6 | d5 | d4 | d3); GPIOC->ODR |= d1; } Может можно сделать оптимальнее? Это прилично замедляет вывод изображения, особенно если выводить картинку целиком (480*320 по 2 байта на пиксель). Я всегда подстраивал железо под удобство написания кода, а тут вот вынужден извращаться.
      Кстати, гугление по данному экрану (Renesas R61581) выводило только на ардуинистов, неужели никто не подключал его к другим железкам?! Он, говорят, почти совместим с ILI9488. Я бегло прошелся по протоколу оного, да, есть такое, но в команды не углублялся. Вроде все отличие кроется в инициализации.
      P.S. Сейчас вот подумал, может сперва стоило привести lcd35_data к соответствующему типу, а потом уже применять маску и сдвиг.
    • Автор: Holm
      Приветствую!
      Собираю пульсоксиметр на MAX30100. Нашел на просторах интернета готовый код,но под STM32,но на винду хп драйвера не идут.
      Может кто-нибудь помочь переделать код под Ардуино Уно. Отблагодарю))
       



    • Автор: LoKeR
      Доброго времени суток, нашел хорошую статью Usart прием и отправка строки. Настроил на порт Usart3 перестал работать, попробовал на Usart2 перекинуть тоже не работает, как правильно переделать подскажите...
      stm32-uart-spl.rar