ART_ME

STM32 для чайника

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

my504    356

 

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

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

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

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

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

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

Правильно?

 

 

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

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

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

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

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

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


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

 

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

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

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

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

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

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

 

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


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

 

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

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

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

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

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

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

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

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

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

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

 

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

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


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

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

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

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

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

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

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


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

Найдите миллионы труднодоступных

электронных компонентов

ART_ME    0
4 минуты назад, my504 сказал:

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

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

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

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

 

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


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

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

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

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


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

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

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

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

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

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


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

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

 

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

 

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

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

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

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

 

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

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


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

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

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

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

 

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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


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

@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    312
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 смайлов.

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

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

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

Загрузка...