STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Чтобы она была написана ее написать надо. Только смысла в этих говнолибах нет не нужна так как достаточно си и напрямую работать с регистрами. Если кому то нужно где ее люди скачать могут? Или ты предлагаешь самому это все ебошить с нуля? Мне вот заняться нечем как писать говнолибы на C++ ради экономии пары байт и пару тактов, мне проще аппаратно подключить к fsmc с дма, и комфортно работать.

К тому же людям полезнее работать без библиотек так они будут лучше понимать архитектуру и изучение новых чипов не будет вызывать проблем. Это трата времени в никуда и еще платить C++ программисту за это которых и так нету.
А вот программировать на си через CMSIS легче.
К тому же ваши библиотеки изучать еще надо как применять аналог калокуба.

Поэтому CMSIS и C как были так и будут. А то что единицы колхозят ни о чем разговор.
Последний раз редактировалось Oxford Пт окт 09, 2020 13:20:56, всего редактировалось 10 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3904047#p3904047"]Чтобы люди видели как оно может быть и не верили бездумно клише "C++ это оверхед", "C++ в эмбедде не место, им никто не пользуется" и прочей зомбочуши.[/uquote]
ОК, расскажи-ка, сколько лет ты потратил, чтобы сделать свой фреймворк на С++, чтобы потом можно было так легко и просто оперировать!

Добавлено after 52 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3904063#p3904063"]Зачем? Она же уже написана. Ей нужно просто пользоваться.[/uquote]
Ну так и выложи ее на гитхаб!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3904069#p3904069"]ОК, расскажи-ка, сколько лет ты потратил, чтобы сделать свой фреймворк на С++, чтобы потом можно было так легко и просто оперировать![/uquote]
Сколько лет ты свою либу для работы с USB допиливал и стала ли она от этого менее ценной? Любой ведь может просто сгенерить проект кубом и получить то же самое, пусть и в менее оптимизированном варианте...
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

И что USB либа C++ будет работать с нордиком? Ой как же жаль она не может использоваться. Ну ниче напишите новую или скачаете на гитхабе чужую :)))
Ладно программисты удачи вам в стряпании говнолиб на C++
Последний раз редактировалось Oxford Пт окт 09, 2020 13:30:15, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904068#p3904068"]Чтобы она была написана ее написать надо.[/uquote]И не поспоришь. Но можно и не писать, а оправдываться "оно никому не надо".

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3904069#p3904069"]ОК, расскажи-ка, сколько лет ты потратил, чтобы сделать свой фреймворк на С++, чтобы потом можно было так легко и просто оперировать![/uquote]Лет? Ты прикалываешься? Вообще, меня Reflector этим делом заразил. Сначала он идей накидал, потом уже друг другу какие-то решения подкидывали. Время в общении с умным человеком незаметно проходит. И, кстати, наши проекты довольно сильно разошлись. Я пошёл на лёгкое добавление разных чипов (у меня сейчас Миландр, например, поддерживаеся), а Reflector далеко в C++20 ушёл. Как подтянутся все основные компиляторы - буду догонять :) На костяк библиотеки ну может месяц ушёл без отрыва от основных проектов. Улучшения - бесконечны. Добавление Миландра пару дней заняло параллельно с его изучением. Пробовал на MicroBlaze, но там это не так актуально - намного эффективнее схемной реализацией оптимизировать.

[uquote="VladislavS",url="/forum/viewtopic.php?p=3904063#p3904063"]Ну так и выложи ее на гитхаб![/uquote]Ты думаешь я намёков не понимаю?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Ну так выкладывай пусть начинающие юзают чтобы не изучать ничего.
В том и дело что я обучаю людей чтобы как можно быстрее научились программировать микроконтроллеры, а для этого достаточно базовых знаний языка Си и умение пользоваться референс мануалом. Всего пару сеансов моих уроков и любой человек сможет программировать GPIO порты который даже не знал ничего о МК.
При этом ему не надо будет изучать много лет C++ и программировать говнолибы или изучать как их юзать готовые. :tea:
Потому что это совершенно не нужно трата времени. Ваш код никто больше не будет понимать кроме вас, умрете и код ваш умрет вместе с вами.

Поэтому не надо баламутить тут воду.

Поэтому если говорить зачем брать 48 ногий или 100 ногий с FSMC так вот 100 ногий лучше взять потому что там аппаратный FSMC и скорость выше и траты времени нет.
Последний раз редактировалось Oxford Пт окт 09, 2020 13:47:27, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904079#p3904079"]И что USB либа C++ будет работать с нордиком?[/uquote]А почему нет? Писать надо разделяя на уровни. ЧИП <-> USB Device <-> USB Class. При переходе на другой чип верхние два уровня не меняются. Остаётся только раздел ЧИП заменить, что я уже неодократно делал. Под спойлером слой USB Device. Он аппаратно независим. USB Class и подавно.
Спойлер

Код: Выделить всё

#pragma once

#define MIN(a, b)        (((a) < (b)) ? (a) : (b))

// Universal Serial Bus Specification Revision 2.0
// 9.4 Standard Device Requests
enum class STD_REQUEST : uint16_t
{
  CLEAR_DEVICE_FEATURE    = 0x0100,
  CLEAR_INTERFACE_FEATURE = 0x0101,
  CLEAR_ENDPOINT_FEATURE  = 0x0102,
  GET_CONFIGURATION       = 0x0880,
  GET_DESCRIPTOR          = 0x0680,
  GET_INTERFACE           = 0x0A81,
  GET_DEVICE_STATUS       = 0x0080,
  GET_INTERFACE_STATUS    = 0x0081,
  GET_ENDPOINT_STATUS     = 0x0082,
  SET_ADDRESS             = 0x0500,
  SET_CONFIGURATION       = 0x0900,
  SET_DESCRIPTOR          = 0x0700,
  SET_DEVICE_FEATURE      = 0x0300,
  SET_INTERFACE_FEATURE   = 0x0301,
  SET_ENDPOINT_FEATURE    = 0x0302,
  SET_INTERFACE           = 0x0B01,
  SYNCH_FRAME             = 0x0C82
};

struct __attribute__((__packed__)) USB_SETUP_REQ
{
  uint16_t  wRequest;
  union
  {
    uint16_t  wValue;
    struct
    {
      uint8_t descIndex;
      DescriptorType descType;
    };
  };
  uint16_t  wIndex;
  uint16_t  wLength;
};

template<typename TPort>
class USB_DEVICE
{   
  public:
      USB_DEVICE() = default;

    //Чисто виртуальная функция обязательна для реализации в производных классах
    virtual bool ClassSpecificSetup(USB_SETUP_REQ *uSetReq, uint32_t *len, uint8_t **pbuf) = 0;

    inline void Enumerate_Reset()
    {
      TPort::Enumerate_Reset();
      TPort::template EPInit<0,EP_TYPE::Control>(); // Инициализируем EP0
      CurrentConfiguration = 0;
    }

    inline void Enumerate_Setup()
    {
      uint32_t reply_len=0;
      uint8_t *pbuf=NULL;

      switch(STD_REQUEST(uSetReq.wRequest))
      {
        case STD_REQUEST::GET_DESCRIPTOR:  //Запрос дескриптора
          switch(uSetReq.descType)
          {
            case DescriptorType::DEVICE:   //Запрос дескриптора устройства
              DEBUG_Print("GET_Device_Descriptor %d bytes\r\n",uSetReq.wLength);
              reply_len = sizeof(DeviceDescriptor);
              pbuf = (uint8_t *)&DeviceDescriptor;
              break;
            case DescriptorType::CONFIGURATION:   //Запрос дескриптора конфигурации
              DEBUG_Print("GET_Configuration_Descriptor %d bytes\r\n",uSetReq.wLength);
              reply_len = sizeof(ConfigDescriptor);
              pbuf = (uint8_t *)&ConfigDescriptor;
              break;
            case DescriptorType::DEVICE_QUALIFIER:  //Запрос дескриптора device_qualifier
              DEBUG_Print("GET_Device_qualifier_Descriptor %d bytes\r\n",uSetReq.wLength);
              reply_len = sizeof(Device_Qualifier);
              pbuf = (uint8_t *)&Device_Qualifier;
              break;
            case DescriptorType::STRING:       //Запрос строкового дескриптора
              for(auto& it : descr_table)      // Проходимся по таблице адресов дескрипторов
                if( *it == uSetReq.descIndex)  // По полю bIndex смотрим на совпадение
                {
                  pbuf = (uint8_t *)it+1;      // Адрес для отправки указывает на поле bLength
                  reply_len = *pbuf;           // Длина для отправки берётся из поля bLength
                  DEBUG_Print("GET_String_Descriptor 0x%X %d bytes\r\n", uSetReq.descIndex, uSetReq.wLength);
                  break;
                }
              if(pbuf==NULL) DEBUG_Print("GET_String_Descriptor 0x%X not supported\r\n",uSetReq.descIndex);
              break;
            default:
              DEBUG_Print("GET_Descriptor 0x%X not supported\r\n",uSetReq.wValue);
              return;
          }
          break;
        case STD_REQUEST::SET_ADDRESS:  // Установка адреса устройства
          DEBUG_Print("SET_ADDRESS %d\r\n", uSetReq.wValue);
          TPort::SetAdr(uSetReq.wValue); // reply_len = 0 -> ZLP
          break;
        case STD_REQUEST::SET_CONFIGURATION: // Установка конфигурации устройства
          DEBUG_Print("SET_CONFIGURATION %d\r\n", uSetReq.wValue);
          CurrentConfiguration = uSetReq.wValue;
          break;       // reply_len=0 -> ZLP
        case STD_REQUEST::GET_CONFIGURATION:
          DEBUG_Print("GET_CONFIGURATION:\r\n");
          reply_len = 1;
          pbuf = (uint8_t *)&CurrentConfiguration;
          break;
        case STD_REQUEST::GET_DEVICE_STATUS:
          [[fallthrough]];
        case STD_REQUEST::GET_INTERFACE_STATUS:
          [[fallthrough]];
        case STD_REQUEST::GET_ENDPOINT_STATUS:
          DEBUG_Print("GET_STATUS\r\n");
          reply_len = sizeof(get_status_reply);
          pbuf = (uint8_t *)get_status_reply;
          break;
        case STD_REQUEST::CLEAR_DEVICE_FEATURE:
          [[fallthrough]];
        case STD_REQUEST::CLEAR_INTERFACE_FEATURE:
          [[fallthrough]];
        case STD_REQUEST::CLEAR_ENDPOINT_FEATURE:
          DEBUG_Print("CLEAR_FEATURE\r\n");
          // для простоты просто ZLP
          break;
        case STD_REQUEST::SET_DEVICE_FEATURE:
          [[fallthrough]];
        case STD_REQUEST::SET_INTERFACE_FEATURE:
          [[fallthrough]];
        case STD_REQUEST::SET_ENDPOINT_FEATURE:
          DEBUG_Print("SET_FEATURE\r\n");
          // для простоты просто ZLP
          break;
        case STD_REQUEST::SET_INTERFACE:
          DEBUG_Print("SET_INTERFACE\r\n");
          // для простоты просто ZLP
          break;
        case STD_REQUEST::SET_DESCRIPTOR:
          DEBUG_Print("SET_DESCRIPTOR\r\n");
          // надо бы STALL, но для простоты просто ZLP
          break;
        case STD_REQUEST::SYNCH_FRAME:
          DEBUG_Print("SYNCH_FRAME\r\n");
          // для простых устройств забьём
          break;
        default:
          if(!ClassSpecificSetup((USB_SETUP_REQ *)&uSetReq, &reply_len, &pbuf)) return;
          break;
      }
      TPort::template WriteEP<0>(pbuf,MIN(reply_len,uSetReq.wLength));
    }

    inline USB_SETUP_REQ *GetSetupRequestAdr() { return (USB_SETUP_REQ *)&uSetReq; }
    inline uint8_t *GetRXBufAdr() { return (uint8_t *)rx_buf; }
    inline void SetRxLen(uint32_t len) { rx_len = len; }
    inline uint32_t GetRxLen() { return rx_len; }

    volatile uint32_t rx_len;
    volatile uint8_t rx_buf[64];
  private:
    volatile USB_SETUP_REQ uSetReq;           // Принятый SETUP запрос
    volatile uint8_t CurrentConfiguration;    // Текущая конфигурация
    uint8_t get_status_reply[2];              // Ответ на запрос GET_STATUS
};
[uquote="Oxford",url="/forum/viewtopic.php?p=3904086#p3904086"]Ну так выкладывай пусть начинающие юзают чтобы не изучать ничего.[/uquote]О, ещё один любитель халявы.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904086#p3904086"]В том и дело что я обучаю людей чтобы как можно быстрее научились программировать микроконтроллеры, а для этого достаточно базовых знаний языка Си и умение пользоваться референс мануалом. Всего пару сеансов моих уроков и любой человек сможет программировать GPIO порты который даже не знал ничего о МК.[/uquote]Похвально, я тоже это делаю. Только в определённый момент ученику надо больше, а вы его по рукам "нельзя байтовый доступ к регистрам использовать", "С++ оверхед", "только С89 форева!" и т.д. Зачем это вам?
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Не будет твоя либа работать с нордиками, пока не напишешь библиотеку. не умничай тут. Это я еще не обсуждаю энергопотребление и интеграцию с ОС.
Вот как напишешь библиотеки для нордика приходи поговорим. У нордика свои SDK и свои библиотеки под архитектуру.

А писать ты будешь до потери сознания или гробовой доски что быстрее наступит.

Когда как я прошивки для девайсов в производство запускаю за 2 недели. Ты за это время только говнолибу начнешь писать :tea: Костяк месяц только будешь обсуждать с рефлектором и ждать когда компиляторы до C++20 дотянут это если человек доживет:)))

какие же вы смешные. вам не жалко времени? Вы для конфигурации пинов либы пишете ))) жесть

Абсолютно так же все и STM32 обстоят дела у них свой HAL/LL как и стеки, а есть еще много много разных стеков.
Последний раз редактировалось Oxford Пт окт 09, 2020 14:09:33, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904097#p3904097"]Когда как я прошивки для девайсов в производство запускаю за 2 недели.[/uquote]Две недели это непозволительная роскошь. Обычно 3 дня (вчера, сегодня и завтра к утру) есть. Бывает даже без доступа к железке.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904097#p3904097"]Ты за это время только говнолибу начнешь писать :tea: Костяк месяц только будешь обсуждать с рефлектором и ждать когда компиляторы до C++20 дотянут это если человек доживет:)))[/uquote]Во, я же говорил слюной брызгать будут :)))

[uquote="Oxford",url="/forum/viewtopic.php?p=3904097#p3904097"]какие же вы смешные.[/uquote]Зато вы унылые. УГ.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904097#p3904097"]вам не жалко времени?[/uquote]Во-первых, это окупается при применении. Во-вторых, лучше уж заниматься любимым делом и что-то новое изучать, чем сидеть в болоте.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904097#p3904097"]Абсолютно так же все и STM32 обстоят дела у них свой HAL/LL как и стеки, а есть еще много много разных стеков.[/uquote]И чего? Мне то до этого какое дело? Я их даже не открывал.
Последний раз редактировалось VladislavS Пт окт 09, 2020 14:11:37, всего редактировалось 1 раз.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Любимое дело говнлибы стряпать годами ну ок. Чувак порты программируются за 15 минут по мануалу, очнись пока не поздно при чем на любой МК мира, и либы тут не нужны с C++20 :tea: И рефлектор не нужен с которым ты костяки месяц обсуждаешь.
Сам подход программирования FSMC программно не верный, так как есть аппаратные контроллеры.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А за 5? А без мануала? Когда в работе целый зоопарк чипов буду я ещё в голове все регистры/константы держать... Продолжай сидеть в своём болоте.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

А тебе в любом случае разбираться надо будет при чем не только в регистрах но и еще С++ осваивать. ты порядка 5 лет изучал это дело. Просто наговнячил свои наработки и всего делов. При этом так и не научился программировать.

Достаточно CMSIS и Си. И начинающим легче и поддержка есть на форуме. Это общепринятые правила программирования мировым сообществом, а не щепки которая откололась от общества.

И помнить их не надо, достаточно открыть мануал на любой чип и запрограммировать здесь и сейчас конкретную требуемую конфигурацию в одной функции.
Последний раз редактировалось Oxford Пт окт 09, 2020 14:35:48, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904086#p3904086"]Поэтому если говорить зачем брать 48 ногий или 100 ногий с FSMC так вот 100 ногий лучше взять потому что там аппаратный FSMC и скорость выше и траты времени нет.[/uquote]
У меня спектрум работал на F103RC у которого нет FSMC, а дисплей был с такой-же 8-ми битной шиной и выдавал положенные 50 fps при нормально звуке, а RC я брал только ради RAM, любого 32-х пинового мк с 64К RAM, типа L431KB, вполне бы хватило.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3904119#p3904119"]Когда в работе целый зоопарк чипов буду я ещё в голове все регистры/константы держать.[/uquote]
Если у вас с GPIO такие сложности, то впору о карьере управдома задуматься.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Reflector программная реализация всегда будет медленнее + занятость CPU для других вычислений. ну разве только если МК только этим будет заниматься то можно программировать и программно. Но тут необязательно либы говнячить универсальные, а если смерть пожили мало, прогали либу, если только это не смысл вашей жизни :))) . Достаточно зашиться под конкретную конфигурацию в несколько строк здесь и сейчас.
Последний раз редактировалось Oxford Пт окт 09, 2020 14:46:55, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

[uquote="Reflector",url="/forum/viewtopic.php?p=3904075#p3904075"]Сколько лет ты свою либу для работы с USB допиливал и стала ли она от этого менее ценной?[/uquote]
В отличие от Славы, я не ору везде, как круто у меня все работает "легким движением руки".

А он почему-то не учитывает, что чтобы написать 3 строчки кода для инициализации кучи пинов, сначала нужно было с полгода (минимум) покорячиться над своим фреймворком!
Выше пишет про месяц. Но мы-то знаем!

А вообще, конечно, его подход - просто один из вариантов. Ведь никто не начинает клепать кучу полезного кода без базиса. Постепенно накапливаешь свои сниппеты, а потом просто слепил их в кучу, а недостающее по мануалу с даташитом доделал. Правда, в некоторых случаях приходится достаточно много времени убить. Скажем, с CAN на STM32F0х2 я больше недели разбирался: очень уж там много всяких флагов, а алгоритм действий в портянке не описан. И пришлось проверять опытным путем: как определить, что на шине больше никого нет, и т.д., и т.п.
Последний раз редактировалось Eddy_Em Пт окт 09, 2020 14:52:58, всего редактировалось 2 раза.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904125#p3904125"]программная реализация всегда будет медленее.[/uquote]
Аппаратная реализация на F4 будет медленнее, чем на H7, означает ли это, что нужно брать обязательно H7, даже если F4 по скорости хватает? А мне хватает 32-х пинового мк, ничего не могу с этим поделать :)
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]А тебе в любом случае разбираться надо будет.[/uquote]Я разработчик, это моя работа - постоянно в чём-то разбираться. Всё меняется - прогресс не остановить.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]ты порядка 5 лет изучал это дело.[/uquote]Откуда инфа? Вообще-то больше 25.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]Просто наговнячил свои наработки и всего делов.[/uquote]Я же уже говорил - оглянись, похоже ты обосрался, что кругом говно мерещится.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]При этом так и не научился программировать.[/uquote]Ты у меня экзамен принимал? Пока что, только тебе приходится объяснять про байты и такты.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]Достаточно CMSIS и Си. И начинающим легче и поддержка есть на форуме.[/uquote]Начинающим! А когда упираешься в их возможности - надо двигаться дальше.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]Это общепринятые правила программирования мировым сообществом, а не щепки которая откололась от общества.[/uquote]Можно посмотреть где они написаны или стандартизированы? А то как-то на бла-бла-бла смахивает.

[uquote="Oxford",url="/forum/viewtopic.php?p=3904121#p3904121"]И помнить их не надо, достаточно открыть мануал на любой чип и запрограммировать здесь и сейчас конкретную требуемую конфигурацию в одной функции.[/uquote]Я не хочу - ленивый стал. Компилятор сделает это за меня быстрее и лучше.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Reflector FSMC прост не надо ему говнячить либы. Дисплей линкуется в общую память и выглядит как два регистра данных и команды ВСЕ!! не надо ниче придумывать :tea:
100 ногая разница в цене копейки, а время экономит так еще и ускоряет работу и CPU свободен можно на DMA все это дело слить, особенно очистка экрана и заливка блоков. К тому же есть дисплеи SPI.

Код: Выделить всё

void WriteData(uint16 data)
{
LCD_DATA = data;
};

void WriteCommand(uint16 command)
{
LCD_COMMAND = command;
};
Что за AVR подходы в программировании? И любовь сидеть на C++ стряпать говнолибы какие-то не нужные?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Сообщение Reflector »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3904127#p3904127"]В отличие от Славы, я не ору везде, как круто у меня все работает "легким движением руки".[/uquote]
Одно время ты свою либу тоже рекламировал весьма активно :)
А он почему-то не учитывает, что чтобы написать 3 строчки кода для инициализации кучи пинов, сначала нужно было с полгода (минимум) покорячиться над своим фреймворком!
Я про либу портов тоже писал неоднократно, за все это время не один человек который реально мог бы ее использовать ко мне не обращался. Периодически кто-то высказывает желание на нее взглянуть, при этом можно заранее гарантированно сказать, что он в ней немного поковыряется, ничего не поймет, на С из нее перенести ничего не получится, на С он обратно и вернется. Вот как вы с Oxford-м сейчас. И реакция на выложенные фрагменты кода тоже характерная, естественно все это ни к каким действиям по расшариванию либы меня не побуждает.
Ответить

Вернуться в «ARM»