3

UART библиотеки, нужен совет.

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

Програмировал на ардуино достаточно долго, пока  'ардуина-фобы' не убегайте, обьясню как в нём сериал линк удобно использовать. Допустим для отладки нужен командный интерфейс, регистов парочку поменять 'на лету'. Я там использовал типа такой кострукции;

  if( end_input) {
    char cmd = in_String[0];
    in_String[0] = '+';

    if( cmd == 'd' ) {
      debug_osm = 1 - debug_osm;
      if(debug_osm) Serial.print(F("\nDebug aktiv."));
      else          Serial.print(F("\nDebug de-aktiv."));
      }
    
    if( cmd == 'a' ) {
      adres_reg = strtol( in_String.c_str(), &pEnd, 16);
        Serial.print(F("\n\tReg: "));
        Serial.print(adres_reg, HEX);
      }
    if( cmd == 'w' ) {
        Serial.print(F("\n\tReg: "));
        Serial.print(adres_reg, HEX);
      value_reg = strtol( in_String.c_str(), &pEnd, 2);      
      i2c_w( adres_reg, value_reg );
        Serial.print(F("\tnew  value: "));
        Serial.print( value_reg, BIN);      
      if( error_i2c ) Serial.print(F("\t!ERROR"));
      else            Serial.print(F("\t!O'K"));
        error_i2c = 0;
      }

т.е. по серийнику с компа я отсылаю строку с буквами и цифрами, ардуина 'парсит' и в зависимости от буквы меняет адресс регистра, производит запись/считывание и т.д. Любую периферию или внутренние потроха в лёт поменять. Обратно там есть сериал.принт, понимает как слать на комп бин, октал, хекс и децимал, в интераптах.

Теперь вопрос - два дня ищу что-то подобное на стм32ф3/4 и не могу найти. Библиотеки есть готовые? Примеры я нашёл, на интераптах, убогие примерчики - там чтобы до ума довести надо кольцевые буфферы дописывать, данные форматировать и т.д.

Как сделать кли - команд лайн интерфейс на стм-э?

0

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


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

ну я когда баловался с MP3 плейером (модулем), то использовал такой механизм. Но конкретных либ под это дело не использовал. Просто написал парсер и командный процессор и все работало. Могу дать код. Кольцевых буферов там нет, есть односимвольный буфер. Он цепляется на DMA и обрабатывается по мере поступления символов как строка с окончанием на \n. То есть из консоли можно слать что угодно и потом обрабатывать на свой вкус. Можете вычленить код и оформить в библиотеку.

До мегабита работает отлично, потом может пропускать символы. На 115200 вообще железобетон.

Надо?

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

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


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

Спасибо, нет. На дма тоже в примерах с эстиэма нашёл.

Хотелось бы,  в 5 разных файлов куда-то строки куда то функции каждый раз не вставлять. 

0

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


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

чтобы была библиотека, надо чтобы ее кто нибудь написал

0

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


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

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

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

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

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

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

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

Загрузка...

  • Сообщения

    • Второе что не понятно #ifdef __cplusplus
       extern "C" {         //
      #endif  Обычно же  слово extern говорит компилятору что "С" объявлена в другом месте,но тогда бы запись была extern int c,но тут "C",что не совсем похоже на переменную.
    • Однозначно, шапочка из фольги необходима. Большой Брат не дремлет. Все мы находимся под колпаком . Аминь.
    • Начал изучать stm32.Сразу смутило что все видео уроки в интернете начинаются с установки заголовочных файлов и каких-то там непонятных действиях в них,что-то раскоментируют и т.д. Решил разобраться что такое заголовочные файлы,но есть загвоздки в самом начале. 1. Сразу не понятно что в этой строчке такое __STM32F10x_H?Это имя макроса? #ifndef __STM32F10x_H  // тут как я понял компил проверяет не был ли __STM32F10x_H раньше подключен #define __STM32F10x_H // если не был то подключает Обычно пишется же #define TRUE 1 // то есть если компил увидет true то заменит его на 1, а тут просто  __STM32F10x_H  
    • Тю-у!! Мне, в отрочестве, МЖ в лобешник прилетел, как раз промеж глаз,  когда гнал с горы на велике,.... Когда вылез из канавы, весь был в шишках и ссадинах!! рваный и грязный как... Ладно, было уже вечером, никого особо то и не напугал. Родители были привыкшие, мама фельдшер, зелёнка, йод, бинты .... - всегда под рукой. Ну а папа, один раз как то  сказал " - Детей, особенно пацанов, без царапин - не бывает!!!" и добавил " - Убьёшься, домой не приходи!!!" и для закрепления сказанного погрозил ремнём, и закончил нравоучение словами " - Если типа "руки чешутся", а не знаешь как сделать спроси у меня, у меня тоже было детство! Знаю как надо!!!! И знаю как не надо!!!!" И чего только с ним не делали.... с 9-го класса одного отпускал на охоту с ружьём (на боровую дичь).... С уважением, Сергей.
    • гармоники из мобилы прут ... норма на некоторых - можно просто выставить частоту передачи на ФМ-приемник (у меня на 78 нокии)