• Объявления

    • admin

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

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

STM32 для чайника

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

my504    166

 

7 минут назад, ART_ME сказал:

Вот теперь прояснилось, спасибо.

Как оказалось, Cube - это и есть тот самый набор макросов, о котором я спрашивал в первом же вопросе.

Но отсылка одного байта в STM32 макроса не требует. Видимо потому, что этот макрос прописан на уровне микропрограмм. 

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

использую для этого библиотеку HAL. 

Правильно?

 

 

В общем правильно. Только термин "макрос" тут не причем. Функция - это не макрос.

2 минуты назад, ART_ME сказал:

Чтением чего именно? Всего, что написано про STM32?

Ну не всего, но даташит на МК, референсный даташит на семейство МК, мануал на реализацию Си и мануал на применяемый драйвер (например Cube) прочитать следует.

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

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


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

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

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

  • x
    мм
Заказать Получить купон на $5.00
ART_ME    0
1 минуту назад, my504 сказал:

 

В общем правильно. Только термин "макрос" тут не причем. Функция - это не макрос.

В моем понимании макрос - это функция за пределами системы команд.

Однако, если я прав, то

1. Библиотеки на Си пользователю на васике как корове седло.

2. При использовании нестандартных протоколов библиотеки стандартных протоколов... см. выше.

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

 

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


Ссылка на сообщение
Поделиться на других сайтах
my504    166
9 минут назад, mail_robot сказал:

 

Цитата из Евангелия (только без обид)

"Если слепой ведет слепого, не оба ли упадут в яму?"

Если уж Вы цитируете Евангелие, то потрудитесь хотя бы В ЭТО ВРЕМЯ соблюдать христианские заповеди.

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

1 минуту назад, ART_ME сказал:

В моем понимании макрос - это функция за пределами системы команд.

Однако, если я прав, то

1. Библиотеки на Си пользователю на васике как корове седло.

2. При использовании нестандартных протоколов библиотеки стандартных протоколов... см. выше.

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

 

Проблема ограниченного познания в том, что каждый новый вопрос так же сложен, как и предыдущий, ибо нет ПОНИМАНИЯ происходящего. Микроконтроллер - это не ПК. И кодить его без понимания работы железа и компилятора - сизифов труд.

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


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

Знание ПДД тоже делает из вас образцового водителя? А цитируя Коран я должен повернуться на восток?

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

Тем более, что Ваша методика объяснений не достигла результата...

а вот прежде чем упрекать, надо чтобы ваша достигла. Не буду комментировать

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

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


Ссылка на сообщение
Поделиться на других сайтах
ART_ME    0
4 минуты назад, my504 сказал:

Проблема ограниченного познания в том, что каждый новый вопрос так же сложен, как и предыдущий, ибо нет ПОНИМАНИЯ происходящего. Микроконтроллер - это не ПК. И кодить его без понимания работы железа и компилятора - сизифов труд.

Ограниченное применение предполагает ограниченное познание.

STM32 планируется применять исключительно в случаях экономической нецелесообразности использования ПЛК или панели.

То бишь для примитивных функций вроде ввода значения концевика в панель по RS232.

 

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


Ссылка на сообщение
Поделиться на других сайтах
optima    210
16 минут назад, ART_ME сказал:

Чтением чего именно?

Именно того что вас интересует в данный момент!

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


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

Знание ПДД тоже делает из вас образцового водителя?

а вот прежде чем упрекать, надо чтобы ваша достигла. Не буду комментировать

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
ART_ME    0
9 минут назад, mail_robot сказал:

Знание ПДД тоже делает из вас образцового водителя? А цитируя Коран я должен повернуться на восток?

 

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

 

4 минуты назад, optima сказал:

Именно того что вас интересует в данный момент!

В этом момент я выяснил, что "надо трясти". А именно: убедить STM32 поработать нуль-модемом.

А для этого мне надо читать про настройку портов (а это и есть та самая инициализация) и про микровасик. 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
my504    166
7 минут назад, ART_ME сказал:

Ограниченное применение предполагает ограниченное познание.

STM32 планируется применять исключительно в случаях экономической нецелесообразности использования ПЛК или панели.

То бишь для примитивных функций вроде ввода значения концевика в панель по RS232.

 

Увы, работа с МК имеет особенностью понимание его работы В ЦЕЛОМ.

Относительно бездумным может быть только ногодрыг. Использование UARTа не относится к  "бездумным" задачам.

ЗЫ. Несмотря на дешевизну STM32F0, решение на нем совсем простых задач требует освоения большого объема документации. В отличие от 8-битных МК.

На них преобразование параметров датчика в посылку UART на Си - пару десяток строк кода, включая инициализацию.

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

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


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 199
8 минут назад, my504 сказал:

А цедить по одному слогу с губы - это не объяснение

человек меня спрашивает - как выглядит синий цвет? Я ему говорю - посмотри на радугу, вторая полоска снизу и будет твой цвет. А он мне - неее, ты мне в двух словах опиши, мне так проще. Я ему должен что написать? Что синий это почти как желтый, только инвертированный по отношению к палитре RGB? Если он сам не хочет потрудиться, то какой еще может быть диалог? Короткий вопрос - конкретный ответ.

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

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


Ссылка на сообщение
Поделиться на других сайтах
ART_ME    0
17 минут назад, my504 сказал:

Увы, работа с МК имеет особенностью понимание его работы В ЦЕЛОМ.

Относительно бездумным может быть только ногодрыг. Использование UARTа не относится к  "бездумным" задачам.

В целом придет потом. И то только тогда, когда применение МК станет правилом. Сейчас это всего лишь исключение из общего правила,

да и то в безвыходных ситуациях. Иными словами, я не буду зажигать гирлянду на елке с помощью STM32 в принципе. :rolleyes: 

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

Разве что может быть придется еще SAA7706 по i2C помучить. Вангую, что в HAL про протокол SAA7706 даже намека нет.  :D

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 199
13 минуты назад, ART_ME сказал:

Вангую, что в HAL про протокол SAA7706 даже намека нет

поздравляю, ты только что блеснул

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


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

@ART_ME Там много чего есть! о чем вы даже не догадывайтесь.

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

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


Ссылка на сообщение
Поделиться на других сайтах
ART_ME    0
12 минуты назад, optima сказал:

@ART_ME Там много чего есть! о чем вы даже не догадывайтесь.

Я Вам верю. Но я прагматик. И даже надеюсь, что именно STM32 выведет прекрасную идею МК из тупика.  

Но меня он интересует только в качестве универсальной микросхемы - цена и качество это позволяют..

 

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

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


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

Ах как же жаль, что до этого она была в тупике...

Я повторно прошу Вас не флудить в моей теме.

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


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

Залез в примеры микровасика, нашел там каталог Soft UART, а в нем... Null-Modem!

Ну и кто тут меня пытался заставить скачивать и изучать нафиг мне ненужный STM32Cube? :acute:

ЗЫ. Я правильно понимаю, что по mikroBasic PRO for ARM мне здесь задавать вопросы некому?

 

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

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


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

Ну вот и созрел вопрос.

В листинге видим строчку:

GPIO_Digital_Output(@GPIOD_BASE, _GPIO_PINMASK_ALL) ' digitalni output
GPIOD_ODR = 0

Я понимаю, что это настройка порта D, но не могу найти где содержится описание этого выражения и его синтаксис.

Подскажите плиз, где искать?

 

 

 

 

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


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

Ясно, васик не в почете.

Попробуем тогда так.

Ниже представлен тот же код, но в Си:

--------------------------------------------------------

char i, error, byte_read;  // Auxiliary variables

void main() {

  error = Soft_UART_Init(&GPIOA_ODR, 10, 9, 115200, 0); // Initialize Soft UART at 56000 bps
  if (error > 0) {
    GPIOD_ODR = error;                            // Signalize Init error
    while(1);                                     // Stop program
  }
  Delay_ms(100);


  for (i = 'z'; i >= 'A'; i--) {                  // Send bytes from 'z' downto 'A'
    Soft_UART_Write(i);
    Delay_ms(100);
  }

  while(1) {                                      // Endless loop
    byte_read = Soft_UART_Read(&error);           // Read byte, then test error flag
    if (error)                                    // If error was detected
      GPIOD_ODR = error;                    //   signal it on PORTD
    else
      Soft_UART_Write(byte_read);                 // If error was not detected, return byte read
    }
}

--------------------------------

В начале объявлены переменные - i, error, byte_read;

А что такое Soft_UART_Init?

Оно объявлено по умолчанию?

Где и как? И каковы правила его формирования?

Что такое  GPIOA_ODR и что означают следующие за ним параметры я знаю. Но где написано как оно попадает в код и в какой форме?

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
Yurkin2015    273
20 минут назад, ART_ME сказал:

А что такое Soft_UART_Init?

Вот, по этой ссылке,  Soft_UART_Init() - подпрограмма, которая подготавливает МК к работе программного UART, т.е. определяет какая нога будет выходом для Tx, какая нога будет входом для Rx, а также проверяет заказанную скорость обмена, типа, не слишком ли большая/маленькая. Если всё нормально, то результат работы подпрограммы error = 0. Если error = 1, то значит запрошенная скорость обмена слишком большая для софт-UART, если error = 2, то слишком маленькая. Вот этот результат error просто выводится автором в порт D, видимо на ногах порта подключены светодиоды, которые сигнализируют об ошибке.

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


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

Млин, это ж вызов библиотеки!!!

Соответственно для васика: http://www.mikroe.com/mikrobasic/arm/libraries/

И в самом компиляторе по хэлпу оно же...

А вот сам я не догадался.... :(

Спасибо, Yurkin2015!

 

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

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


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

Спрошу опять по Си.

Есть в хелпе вот такая инструкция:

void GPIO_Clk_Enable(unsigned long *port);

а ниже есть пример такого выражения:

GPIO_Clk_Enable(&GPIO_PORTB);

Не могу найти синтаксиса &GPIO_PORTB

Откуда взялся и что означает "&"?

GPIO_PORTB - это произвольная переменная, или она чем-то жестко задается?

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

 

 

 

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


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

Ну в общем сам себе отвечу, может кому и пригодится. :rolleyes:

GPIO_Clk_Enable - это то, что я называю макросом, а (&GPIO_PORTB) - это его параметры.

Макросы эти растут в библиотеке, в данном случае в библиотеке от MikroElectronica. Причем макросов этих так много, что их

объем в программе превышает язык, на котором она написана.

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

Тем более, что тот же микровасик оказался дитём от микроСи, потому как указателей (а "&" и есть указатель, который в микровасике "@") в васиках

отродясь не бывало. 

В итоге мне удалось запустить пример нуль-модема, с помехами, но работает.

Ну и по нему вроде все стало понятно, как эту связь организовывать.

Чего и хотелось.B)

 

 

 

 

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


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

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

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

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

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

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

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

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

Загрузка...

  • Сообщения

    • спасибо за комент! дошел  до кода  с компарированием   
    • @Dr. West , Если вы знаете более компактный аналог WS2812 - можно рассмотреть.
      Но я к сожалению таких не знаю.
      У меня между стенкой корпуса (на которой будет лого) и платой около 6 мм.
      Размер корпуса WS2812 примерно 5x5x1.6 мм.
      Боком его конечно можно поставить, но с трудом, ибо будет мешать плате сам светодиод и кусок оргстекла в 5 мм толщиной.
      Потому надо либо срезать бока корпуса WS2812 (к чему прибегать вообще не хочу, да и сточить получится без повреждений максимум 1 мм), либо искать более миниатюрный аналог...
    • Тогда очень странно, что вы не понимаете очевидных вещей: 1. Конструкция существующих  пилотов очень проста и потому надёжна (явное некачественное фуфло не рассматриваем). А также дёшева и технологична. Там всё на своём месте - ни убавить, ни прибавить. Модульно - кассетная же конструкция сразу резко увеличит стоимость и, одновременно, снизит надёжность, как механическую, так и электрическую. 2. Большинству потребителей нафиг не надо собирать какой-то там непонятный конструктор, он в этом не разбирается, ему нужен просто удлиннитель с N-ным количеством розеток и, желательно, подешевле. Благо выбор на рынке есть на любой вкус и кошелёк. 3. Универсальный мультитул "на все случаи жизни" всегда менеее удобен и стоит дороже, чем специализированный инструмент для одной операции. Т.е. на вопросы "Чем изобретение лучше существующих аналогов" и "Кому это надо" убедительных ответов нет. Итого - ваша задумка и есть то самое ведро для сортира, да ещё и телескопически раздвигающееся - в зависимости от потребного объема.
    • У дисплеев засветка идёт за счёт рассеивания в толще материала. Т.е. светодиод светит в торец листа пластика. Рассмотрите этот вариант.
    • Желательно чтоб ресурсов МК хватало для редкой смены цвета одного светодиода WS2812...
    • @Dr. West , на расстоянии не получится, в корпусе места едва ли на светодиод хватит...
      Ну и потом, в дисплеях типа 1602 светодиод с рассеивателем одно целое, никаких расстояний нет, и засветка довольно равномерная. Сам пользовался таким дисплеем, и знаю что говорю )
      Да и по фото во вложении места раз в 5 меньше в том месте, а ведь работает тоже без расстояний ) Пластик от подсветки мониторов вроде как оргстекло, есть у меня кусочек, но он по толщине не равномерен (), и раза в два-три толще чем удастся уместить...