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

STM32 для чайника


ART_ME

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

все верно

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

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

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

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

1 hour ago, my504 said:

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

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

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

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

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

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

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

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

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

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

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

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 пользователей онлайн

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

×
×
  • Создать...