Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

10 минут назад, my504 сказал:

А с чего Вы решили, что программированием МК должны заниматься

С чего Вы решили, что я что то решил? я, вроде, всего лишь констатировал факт.

Читайте внимательнее, что ли :).

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

31 минуту назад, Koret сказал:

1. Причём тут имбецил, речь шла о "полного нуба", 

2. Смотрите, моё мнение как новичка в МК, есть CubeMX, который, по моему мнению, очень хорошо подстраивается под конкретный МК, показывается вся доступная периферия присуще только тому МК, который выбирается. Также настраивается и т.д. В случае превышения частот - сигнализируется, что конкретный МК не может работать в таком режиме. Т.е. риск "загнать" МК в нехорошие состояние значительно снижается. Я считаю, что когда происходит частая смена контроллеров, лучшего средства, чем CubeMX нет. Например, возвращаясь к своей халабуде, мне вообще не составило труда в очень кратчайшие сроки перенести проект на новый МК, причём МК по периферии достаточно отличаются.

1. А Вы не  нуб? :rolleyes:

2. Куб - это просто конфигуратор. Причем СТАТИЧЕСКИЙ. То есть управление конфигурацией на лету с помощью него невозможно. А это создает возможности мультиканального использования одной и той же периферии и управление потреблением. Зачем использовать порочный продукт?  Только из лени ознакомиться с оригинальными возможностями МК? Я не понимаю такой лени. Не нравится железо - смените хобби.

18 минут назад, ruhi сказал:

С чего Вы решили, что я что то решил? я, вроде, всего лишь констатировал факт.

В подмосковном лесу невозможно встретить  живого слона (муляж имеется :) ). 

Я констатировал факт.

К чему констатировать факты, которые не имеют никакого отношения к разговору и к тому же бессмысленны. 

Квалификация эмбеддера ПРЕЖДЕ ВСЕГО определяется профильным образованием. А умение программировать МК там стоит на 10 месте. Практически все претенденты на работу (иногда провожу собеседования по долгу службы) умеют программировать МК , ФПГА и прочая. Но НИКТО не признался в достойном знании  схемотехники и теории сигналов. Зачем нужен такой "специалист"?

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

戦う前に相手のベルトの色に注目

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

13 минуты назад, my504 сказал:

Квалификация эмбеддера ПРЕЖДЕ ВСЕГО определяется профильным образованием. А умение программировать МК там стоит на 10 месте.

все верно

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

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

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 hour ago, my504 said:

Вы радиоинженер?

с вами нет смысла продолжать беседу. Вы здесь самый умный

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

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

Вкусовщина не аргумент. Но повод для прекращения спора.

戦う前に相手のベルトの色に注目

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

47 минут назад, my504 сказал:

1. А Вы не  нуб? :rolleyes:

Новичок - да, нуб нет. (“Эта роль ругательная, и я прошу ее ко мне не применять!”) Не припомню такого слова в русском языке, раз Вы первый решили "похвастаться" знаниями литературных терминов.

50 минут назад, my504 сказал:

Только из лени ознакомиться с оригинальными возможностями МК? Я не понимаю такой лени. Не нравится железо - смените хобби.

Мне возвращаться к примерам с отверткой и шуруповёртом? Для каждой задачи свой инструмент и точка.

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

похоже на попытки сравнения диаметра пиписьки с ее длинной

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Здравствуйте. Я начинающий в освоении STM32, да собственно в микроконтроллерах вообще. Осваивал подключение OLED дисплея на SSD1306 на STM32F103CBT6 библиотека для работы с использованием DMA была взята отсюда https://github.com/SL-RU/sdmplayer/tree/master/src/v002/Hardware . Работаю в среде System Workbench for STM32 в связке с CubeMX. В начале в Кубе использовалась прошивка STM32Cube_FW_F1_V1.4.0 все работало замечательно. Затем Куб обновил прошивку до версии STM32Cube_FW_F1_V1.6.0 и моя программа на микроконтроллере перестала нормально работать. При переходе назад на старую версию прошивки в Кубе (1.4.0) все опять работает замечательно. Так же для SSD1306 пользовался библиотекой без использования DMA (тот же автор библиотеки) на обоих версиях прошивки в Кубе (1.4.0 и 1.6.0) все работает. Возможно в новой версии разработчики где-то накосячили.

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

Решил сегодня попробовать виртуальный COM-порт, используя USB микроконтроллера. Активировал функцию в Кубе и полез в сеть искать пример функции "Эхо" для его проверки. Оказалось Куб уже сам генерирует эту функцию, но она не до конца написана:

static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)
{
  /* USER CODE BEGIN 6 */
  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
  CDC_Transmit_FS(Buf, *Len);					// CubeMX не генерирует эту строчку
  USBD_CDC_ReceivePacket(&hUsbDeviceFS);
  return (USBD_OK);
  /* USER CODE END 6 */ 
}

внутри не хватает одной строчки. После ее вставки функция "Эхо" заработала.

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

а куб вовсе и не обязан генерировать все, поэтому не понял в чем проблема?

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Здравствуйте. Начал интересоваться STM32. Есть плата STM32F103C8T6 + ST-LINK V2. Использую среду Arduino IDE.

Скетч работает (интервал блинка менял):

 

void setup() {
  pinMode(PC13, OUTPUT);
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(100);
  digitalWrite(PC13, LOW);
  delay(100);
}

Не получается перенести следующий скетч от ардуино (RGB LED контроллер для гирлянды из RGB ленты):

// Порты, на которых висят светодиоды и кнопка.
byte pinBtn   = 12; // Кнопка на 12 пине.
byte pinRed   = 5;  // Красные светодиоды на 5 пине.
byte pinGreen = 6;  // Зеленые светодиоды на 6 пине.
byte pinBlue  = 3;  // Синие светодиоды на 3 пине.

// Номер текущего эффекта.
static byte mode = 1;

// Для работы кнопки (анти дребезг).
static byte tempButton = LOW;
static byte button = LOW;

// Дополнительные переменные.
static int state = 0;
static int index = 0;

void setup()
{
  // Настраиваем порт кнопки.
  pinMode(pinBtn, INPUT);
  // Т.к. мы используем ШИМ, то настраивать порты для ленты не надо.
}

void loop()
{

  // Отлавливаем нажатие кнопки.
  button = digitalRead(pinBtn);
  if (tempButton && !button)
  {
    // Небольшой анти дребезг.
    tempButton = button;
    delay(10);
    button = digitalRead(pinBtn);
    // Все хорошо, меняем эффект.
    if (button == tempButton)
    {
      // Переключаем на следующий эффект.
      mode++;
      if (mode > 6) mode = 1; // Зацикливаем эффекты по кругу.
      // Сбрасываем дополнительные переменные.
      state = 0;
      index = 0;
      // Выключаем все светодиоды.
      analogWrite(pinRed,   255);
      analogWrite(pinGreen, 255);
      analogWrite(pinBlue,  255);
    }
  }
  tempButton = button;
  
  // Обработка наших эффектов.
  switch (mode)
  {
    case 1: // Эффект №1: Все решает случай.
            analogWrite(pinRed,   random(0, 255));
            analogWrite(pinGreen, random(0, 255));
            analogWrite(pinBlue,  random(0, 255));
            break;
    
    case 2: // Эффект №2: Бегущий огонек. 
            if (state == 3)
            {
              analogWrite(pinRed,   255);
              analogWrite(pinGreen, 0);
            }
            if (state == 6)
            {
              analogWrite(pinBlue, 255);
              analogWrite(pinRed,  0);
            }
            if (state == 9)
            {
              analogWrite(pinGreen, 255);
              analogWrite(pinBlue,  0);
            }
            state--;
            if (state < 1) state = 9;
            break;
    
    case 3: // Эффект №3: Бегущий огонек (В обратную сторону).
            if (state == 1)
            {
              analogWrite(pinBlue,  255);
              analogWrite(pinGreen, 0);
            }
            if (state == 4)
            {
              analogWrite(pinGreen, 255);
              analogWrite(pinRed,   0);
            }
            if (state == 7)
            {
              analogWrite(pinRed,  255);
              analogWrite(pinBlue, 0);
            }
            state++;
            if (state > 9) state = 1;
            break;
    
    case 4: // Эффект №4: Затухание.
            if (state == 0)
            {  
               analogWrite(pinBlue, index);
               analogWrite(pinGreen, 255 - index);
            }
            if (state == 1)
            {
               analogWrite(pinGreen, index);
               analogWrite(pinRed, 255 - index);
            }
            if (state == 2)
            {
               analogWrite(pinRed, index);
               analogWrite(pinBlue, 255 - index);
            }
            index += 5;
            if (index > 255)
            {
              state++;
              index = 0;
              if (state > 2) state = 0;
            }
            break;
    
    case 5: // Включить ленту.
            analogWrite(pinRed,   0);
            analogWrite(pinGreen, 0);
            analogWrite(pinBlue,  0);
            break;
            
    case 6: // Выключить ленту.
            analogWrite(pinRed,   255);
            analogWrite(pinGreen, 255);
            analogWrite(pinBlue,  255);
            break;                
  }

  // Задержка в 50мс.
  delay(50);
}

Конкретно не понимаю как назначить выводы контроллера. Прошу помощи: где это наглядно можно увидеть, прочитать. Или если есть, то буду рад примеру готового контроллера для RGB гирлянды. Спасибо.

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

6 часов назад, mail_robot сказал:

а куб вовсе и не обязан генерировать все, поэтому не понял в чем проблема?

"Не обязан", да согласен, но если генерирует, то корректно. Нельзя быть на половину беременной. Я не писал, что это проблема, всего лишь написал, что не до конца написанный код и новичкам, как я, стоит на это обратить внимание.

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

А где в Кубе написано что он генерирует пример "Эхо", он генерирует скелет VCP, а что вы там будете куда передавать и что принимать это ваше дело. И в реальном приложении такое и нафиг не нужно.

@jgda87 Скорее всего тут проблемы Ардуино не обсуждают.

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Решил свой вопрос с STM32 и Arduino IDE так:

// Порты, на которых висят светодиоды и кнопка.
byte pinBtn   = PB9; // Кнопка на  пине.
byte pinRed   = PB8;  // Красные светодиоды на пине.
byte pinGreen = PB7;  // Зеленые светодиоды на пине.
byte pinBlue  = PB6;  // Синие светодиоды на пине.

Теперь все работает на заданных выводах.

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

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

Подскажите по разводке питания, необходимо ли все выводы Vss и все выводы Vdd соединять между собой? Как рекомендуют Vss полигон под корпусом соединяя в одной точке со всей схемой и также Vdd на верхнем слое только без полигона. Или достаточно на один из выводов Vdd и Vss подать + и - и этого достаточно для корректной и правильной работы?

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

да, необходимо. Не заведется камень

хотя конечно есть шанс, что через паразитки и заведется, но гарантии стабильной работы не будет. По части питания читайте внимательно основной мануал на камень (не референц), там все про это дело толково изложено.

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

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

37 минут назад, mail_robot сказал:

да, необходимо. Не заведется камень

А сама разводка сильно влияет на нормальную работу? Или можно соединять просто как на картинке слева?

ris2.gif

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

лучше все таки если разводка будет выполнена с учетом правил для таких схем. А они широко доступны и в повторении не нуждаются. Так что вы задаете вопросы с очевидными ответами.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

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

11 минуту назад, mail_robot сказал:

лучше все таки если разводка будет выполнена с учетом правил для таких схем.

Понимаю, что лучше как в инструкции написано разделять питание по слоям, но если я использую односторонний текстолит, как тогда быть? Я хотел полигоном залить под контроллером минусы и перемычками на плате соединить плюсы, такой вариант плох?

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Не загоняйся, Нужно менять - просто поменяй и всё. Мож там вообще 1 емкость просела а тут целая формула бороды намечается 
    • Первый разобранный магнитофон  Где то даже движок от него лежит.
    • На некоторых Лого есть дисплейчик. и на нем видно все и даже в ручную при желании можно сделать коррекцию программы. Может уже хватит вздрагивать, пора ремонтировать.
    • Уважаемые товарищи, нужны схемы, либо НТД для ремонтов блоков очень срочно!!!! Всё кроме реле Р10ТМУ, уже нашёл не вашем форуме и их отремонтировали....любая помощь приветствуется
    • Все предложенные к рассмотрению источники питания работают примерно по одному принципу: сетевое напряжение выпрямляется, фильтруется (получаем чуть больше 300 вольт постоянного), затем преобразуется снова в переменное, но уже на частотах в несколько десятков килогерц, понижается на трансформаторе и снова выпрямляется. За счёт высокой частоты преобразования используется трансформатор на ферритовом, а не на стальном, сердечнике, гораздо меньших габаритов и стоимости. Минусы: значительное усложнение схемы блока и вероятность возникновения различных помех от него. Модули управления (кроме первого) также являются импульными преобразователями, с теми же достоинствами и недостатками. Если нужно по быстрому собрать некое подобие ЛБП, то уж лучше брать модуль вроде этого. Ну и блок питания к нему соответствующий. Но не очень понятно, какой практический опыт можно получить от соединения готовых модулей парой проводов.  
    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
×
×
  • Создать...