• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!
ivpoed

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

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

ivpoed    1

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

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

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

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

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

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
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    221

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

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


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

Есть желание проектировать несложные устройства и выпускать их. С 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    63
В 17.04.2017 в 14:20, dosikus сказал:

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

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

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

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

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

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


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

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

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

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

Цитата

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

 

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

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

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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


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

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

  То что вы расписываете как свою работу с 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    5

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

#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    5
21 минуту назад, Sancta сказал:

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

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

Загрузка...

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

    • Автор: ToRcH2565
      Добрый день, недавно начал изучать азы STM, и наткнулся на интересную возможность, а именно отправлять текст через отладочный порт:
      https://hubstub.ru/stm32/111-otladka-po-swd-stm32.html  (дабы долго не обьяснять о чем я веду речь, ибо без знания терминов это может затянутся).
      Так вот, столкнулся я с проблемкой, а именно где же можно данные сообщения посмотреть в EmBlocks, отладочные окна пролез все, там не нахожу, возможно нужно ковырять глубже настройки среды? или данная среда не умеет отображать эти сообщения?
      Очень не хотелось бы городить UART для отображение отладочных сообщений...
    • Автор: Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки  
      и это, собственно чем прошить. 
      Имеется прошивка, скетч, для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС
    • Автор: Motrosoff8888
      Всем привет! Ребят есть вот это STM32F030K6T6 
      вот это, адаптер для прошивки 
      и это, собственно чем прошить. 
      Имеется прошивка для двух Atmega328p. Есть пьезоэлементы, которые подсоединены к аналоговому пину, при касании, одна другой передаёт символы через NRF24l01, друга принимает таким же модулем и отправляет данные по блютус HC-05 на телефон.  Хотелось бы перенести её на STM32, не бесплатно конечно но и в рамках разумного. Цель переноса на STM32 - увеличить скорость отклика (задержка между ударом по пьезику и появлением символа в мониторе порта телефона) пьезо! И есть уже адаптер для прошивки МК с 32 ножками. Буду признателен если кто то ответит, можно в ЛС
    • Автор: saer2
      Добрый!
      Осваиваю стм32.
      Уточните пожалуйста, есть ли описание библиотеки stblib ? 
      как с ней работать?
    • Автор: karomag
      Помогите! Не пойму, почему не работает код. Хотя он был рабочий, пока я что-то не "оптимизировал"...
      // Общие выводы индикатора #define D0 GPIO_Pin_14 #define D1 GPIO_Pin_13 #define D2 GPIO_Pin_12 #define ALL_CATOD ( D0 | D1 | D2 ) // К какой ноге какой сегмент подключен #define SEG_A GPIO_Pin_0 #define SEG_B GPIO_Pin_1 #define SEG_C GPIO_Pin_2 #define SEG_D GPIO_Pin_3 #define SEG_E GPIO_Pin_4 #define SEG_F GPIO_Pin_5 #define SEG_G GPIO_Pin_6 //Собираем цифры из сегментов #define DIG0 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F ) #define DIG1 ( SEG_B | SEG_C ) #define DIG2 ( SEG_A | SEG_B | SEG_G | SEG_E | SEG_D ) #define DIG3 ( SEG_A | SEG_B | SEG_G | SEG_C | SEG_D ) #define DIG4 ( SEG_F | SEG_G | SEG_B | SEG_C) #define DIG5 ( SEG_A | SEG_F | SEG_G | SEG_C | SEG_D ) #define DIG6 ( SEG_A | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G ) #define DIG7 ( SEG_A | SEG_B | SEG_C ) #define DIG8 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G) #define DIG9 ( SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G) #define ALL_SEG (DIG8 ) void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* GPIOA Configuration:TIM3 Channel1, 2, 3 and 4 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Pin = ALL_SEG | ALL_CATOD; GPIO_Init(GPIOA, &GPIO_InitStructure); } void show_temp(void) { u16 tmp; // Содержит копию counter (из него по очереди исключаются последние цифры) u8 digit; // В эту переменную поочередно записываются цифры из которых состоит число counter u16 catods[] = { D0, D1, D2 }; u8 digitsp[] = { DIG0, DIG1, DIG2, DIG3, DIG4, DIG5, DIG6, DIG7, DIG8, DIG9 }; u8 i; tmp = measureT; for (i = 0; i < 3; i++) { if (tmp > 0) { //Вытаскиваем первую справа цифру из числа counter digit = tmp % 10; tmp = tmp / 10; //Выключаем все разряды. 1 на катоды GPIOA->ODR |= ALL_CATOD; //Включаем i разряд индикатора GPIOA->ODR &= ~catods[i]; //Выводим цифру в i разряд GPIOA->ODR &= ~DIG8; //Выключаем все сегменты GPIOA->ODR |= digitsp[digit]; //Зажигаем нужные //Небольшая задержка. Пусть цифра погорит некоторое время delay_ms(1000); } } } Большую задержку поставил, чтобы глазом было видно результат. Число 123 отображается: сначало 33, потом 22, потом 111. Почему загорается несколько разрядов, хотя GPIOA->ODR &= ~catods;?