Jump to content

    

Сергей Борщ

Модераторы
  • Content Count

    8784
  • Joined

  • Last visited

Everything posted by Сергей Борщ


  1. Если здесь запятая стоит намеренно, то нет - в общем случае секции по размеру страницы флеша выравнивать не нужно. Бывают отдельные исключния: секция векторов, секции для хранения изменяемых настроек - эмуляции ЭСППЗУ (EEPROM).
  2. STM32F407 зависание UART4 периферийного модуля

    Никак. Но предпочтительнее хранить указатель, чтобы избежать постоянного вычисления "номер => указатель".
  3. И куда будеn указывать считанный из EEPROM указатель от предыдущей прошивки?
  4. На что будет указывать считанный указатель после обновления прошивки?
  5. Сообщения об ошибках

    Он не может замкнуть контур платы, поэтому не может отобразить саму плату. Где-то у вас не сходятся концы линий с концами дуг.
  6. Error[Pe070]: incomplete type is not allowed

    Зато строки выглядят как человеческие строки, а не массив кракозябр плюс рассчитанная вручную длина..
  7. Я не помню точно, надо ли принудительно при инициализации переводить ноги I2C в режим открытого стока или при выборе I2C в альтернативных функциях ноги это происходит автоматически? Не может быть, что у вас нога работает в двухтактном режиме, выдает единицу и ЦАП просто не в силах перетянуть ее во время ACK?
  8. Вроде была другая тема для жалоб на неработающие ссылки, но найти не могу. В этом сообщении ссылка не работает.
  9. Пришла пора раскрыть интригу и рассказать о вашей программе. А то может вы реализуете программный I2C ногодрыгом и вместо выставляете "честную" единицу на выход вместо использования открытого стока или перевода ноги на чтение во время ACKа.
  10. Это система управления давлением, а не его контроля. При использовании этой системы из ниппелей колес удаляются золотники и все колеса соединяются в единую пневматическую систему. Сомневаюсь, что вам бы захотелось иметь на своем автомобиле такую систему. Перед длительной стоянкой вручную закрывать краны на всех колесах, а после стоянки не забыть их все открыть - так себе удовольствие.
  11. Даже если это 100 разных констант - это всего 400 байтов. У вас нет лишних 400 байтов флеша в вашем контроллере?
  12. Все равно непонятно, зачем тут именно указатель? У вас motor_rt_params[0].position меняется после того, как вы сделали expression.l_var = &motor_rt_params[0].position и до того, как использовали expression.l_var? Не получится. У вас указатель. Он должен на что-то указывать. Вот что вы уперлись в это "без выделения константы"? чем вам константа мешает?
  13. Много объектовых устройств, низкая скорость, LoRaWAN вроде подходит, но она на сильно большие расстояния заточена при очень небольшой мощности передатчика. Если брать готовый модуль от Murata - будет не очень дешево, зато со всеми сертификатами и STM32L072 внутри - твори что душа пожелает. Или собирать из рассыпухи на SX1276 - будет дешевле, можно любой любимый проц прицепить, но весь стек протокола програмно реализовывать надо. У ST есть готовые примеры.
  14. кто генерит меандр? По тикам какого таймера - 2 или 3?
  15. Да не нужен автору тут указатель. Просто он услышал про новое для себя понятие и теперь пытается его впихнуть куда-нибудь.
  16. Модератор: Теперь ждите июня следующего года.
  17. Error[Pe070]: incomplete type is not allowed

    Перечитайте, на что вы отвечали - поймете.
  18. Error[Pe070]: incomplete type is not allowed

    Но она как бы даже не намекакет, а явно говорит, что автор предполагал использование этого файла в плюсовых программах.
  19. Error[Pe070]: incomplete type is not allowed

    Я вам привел цитату из Стандарта. Вы уверждаете, что ИАР этот код ест. Ах да, я снова забыл: ваше мнение и ваш компилятор самые правильные... Тогда читайте документацию на ИАР. Помнится, там был раздел "отклонения от стандарта". В порядке гуманитарной помощи: using namespace usb::descriptor; #define STRING_DESCRIPTOR(name, text) \ struct string_descriptor_##name \ { \ header Header; \ char16_t Text[sizeof(text)/ sizeof(text[0])]; \ } __attribute__((__packed__))const name = \ { \ /* do not transfer trailing null char */ \ { sizeof(name) - sizeof(char16_t), type::STRING }, \ text \ } STRING_DESCRIPTOR(Language, u"\x0409"); STRING_DESCRIPTOR(Device_name, u"device name");
  20. Error[Pe070]: incomplete type is not allowed

    В тех, которые соблюдают Стандарт. На ИАРе свет клином не сошелся.
  21. Error[Pe070]: incomplete type is not allowed

    Тогда пишите создателям файла - пусть "или трусы наденут, или крестик снимут".
  22. Error[Pe070]: incomplete type is not allowed

    В языке C массивы неопределенной длины в конце структуры допускаются. В плюсах - нет. Если вы хотите эту библиотеку использовать в плюсах - вам придется ее трогать.
  23. инструкция BX

    Осталось разобраться, за что в адресе перехода отвечает младший бит и почему на ядре Cortex он должен быть всегда установлен. Чтобы не смотреть на него как на некое магическое число.
  24. Вот только делает не то, что вы хотели. Ваш код портит ту ячейку памяти, на которую указывал expression.l_var. То, что вы хотели, выглядит вот так: { static int Value = 100; expression.l_var = &Value; }
  25. Чтение EEPROM в STM32L152

    В языке C, к счастью, нет неявного приведения типа из целого в указатель. Вам нужно сделать явное приведение типа: uint8_t const * const Addr = (uint8_t const *)0x8080000; const я добавил от себя, чтобы компилятор не дал вам совершить глупые ошибки. Но гораздо более наглядно объединить все ваши данные в const volatile структуру и эту структуру разместить в соответствующей секции, расположение которой задать компоновщику. const даст вам по рукам при попытке прямой записи в эту структуру, а volatile не позволит компилятору повыдергивать из нее известные на этапе компиляции значения и вставить константами прямо в код. И не нужны будут указатели.