Перейти к содержанию

    

esaulenka

Свой
  • Публикаций

    1 057
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о esaulenka

  • Звание
    Профессионал
  • День рождения 25.01.1983

Информация

  • Город
    Маськва

Посетители профиля

6 515 просмотров профиля
  1. Программирования LPC1788

    "Программатор" на ардуине - никакой не программатор, а обыкновенный преобразователь UART<>Serial. Т.е. именно то, что вам надо. Убираем собственно ардуину, чтобы не мешалась (самый простой способ - на разъеме ICSP замкнуть reset на землю), соединяем RX LPC'шки c ногой TX ардуины, TX LPC'шки c ногой RX ардуины, не забываем про ногу BOOT, и всё! Включаем, запускаем FlashMagic...
  2. Периодически приходится искать информацию по разным форумам. Зарегистрироваться, поставить галку "согласен на всё", подтвердить почту и через полчаса обнаружить, что единственная картинка, которая была мне нужна - ну вообще не в тему, надо смотреть какой-то другой форум. Нинавижу. Этот вопрос можно и нужно обсудить отдельно.
  3. Инициализация и работа с USART1

    TXE таким образом испортить не получится :-)
  4. УГО на схемах

    Да уж куда им... Оригинал картинки легко можно найти здесь: http://www.ti.com/lit/ds/slus564c/slus564c.pdf
  5. Инициализация и работа с USART1

    Советы: - указывать название чипа. То, что это STM32L1xx, местные ясновидящие уже в курсе, но хотелось бы видеть это явно. - указывать содержимое регистров. Благо у усарта их 3 штуки для управления, 1 для прескалера и 1 статусный. - у SPL (как, впрочем, и у HAL) есть неприятная особенность. В языке си простое объявление структуры не гарантирует того, что поля её будут осмысленно инициализированы (более того, гарантирует, что это НЕ произойдёт, и там будет мусор). И если пользователь а) не заполнил вручную все поля и б) отключил отладочный макрос assert_param(), эта фигня обязательно стрельнет.
  6. Из простого вопроса "как бы мне написать загрузчик" родились DAP-контроллеры с тридцатью пятью запасными экземплярами эталонной прошивки и аппаратным рубильником. Наркомания какая-то, извините.
  7. Хочу порекламировать не это описание (к сожалению, автор дальше адвертайза не расписал, а там самое интересное начинается), а книжку Getting started with Bluetooth Low Energy. Townsend, Cufi, Akiba, Davidson.
  8. OS::get_tick_count()

    Ещё TEventFlag можно в паре мест пооптимизировать. Но там проще - флажок да/нет атомарный везде.
  9. OS::get_tick_count()

    Из потенциальных кандидатов нашёл только TMutex::is_locked(). Но настойчивого зуда её оптимизировать у меня нет.
  10. OS::get_tick_count()

    Нету. Точнее, есть, но не работает, как хочется. Передать в конструктор экземпляр переменной, чтобы он сам догадался, какой у неё тип, можно только в C++17 (вчера узнал новое слово). А объявлять критическую секцию не для переменной, а для класса этой переменной (или decltype писать) мне не понравилось. Это я делал, чтобы случайно не зацепить какой-то класс с небольшим количеством переменных. Но можно понадеяться на сознательность программиста, тем более это решение и так имеет много ограничений. Тут самая главная проблема, что эта "критическая" секция ограничивается только чтением и записью. В остальных случаях атомарность НЕ гарантируется. Пожалуй лучше даже назвать в духе CritSectionReadWrite. Тут я согласен с Сергеем, что изначальная идея касалась только счётчика времени, но может свободно распространиться и на остальные переменные ядра. А тут-то всё и ломается - во-первых, их больше одной, а во-вторых, начинают массово плодиться вложенные крит.секции. Можно сделать, чтобы оно и так работало, но от изначальной идеи - "проще и быстрее" ничего не останется...
  11. OS::get_tick_count()

    Попробовал. Своих умений не хватило, к сожалению. Спасибо добрым людям из телеграмма pro.cxx Получилось некоторое нагромождение шаблонов: https://godbolt.org/z/yJiCQS Слушаю предложения и замечания (а заодно и тесты на не-gcc. У меня под рукой только древний кейл).
  12. OS::get_tick_count()

    Значит, не зря я начал это обсуждение :-) Угу. Мысль хорошая. TEventFlag, на мой взгляд, будет работать без критической секции вообще. Булевый флажок влезает в атомарные чтение/запись в любом случае. А вот для mutex'а, например, стоит придумать что-нибудь. Я не плюсплюс-гуру, но попробую...
  13. OS::get_tick_count()

    Господа, а скажите мне, насколько необходима критическая секция INLINE tick_count_t get_tick_count() { TCritSect cs; return Kernel.SysTickCount; } Я помню о существовании порта на AVR (кто-нибудь пользуется, интересно?..), но для широко распространённых 32-битников можно съэкономить кучку тактов, добавив дефайн наподобие scmRTOS_SYSTEM_TICKS_ATOMIC.
  14. Некорректно работают ссылки из старых сообщений. Например, во втором сообщении этой темы есть ссылка http : // electronix.ru / forum / lofiversion/index.php/t19103.html которая обрабатывается некорректно. Необходимо перенаправлять её на https : // electronix.ru / forum/index.php?app=forums&module=forums&controller=topic&id=19103 Аналогично с ссылками на не-мобильную версию (тема, см. в четвёртом сообщении): вместо http : // electronix.ru / forum/index.php?showtopic=83155&hl=STM32 надо переходить на https : //electronix.ru / forum/index.php?app=forums&module=forums&controller=topic&id=83155 PS вроде б на тестовой версии это всё работало?..
  15. Просмотр переменных в STMStudio

    Поискать APBPrescTable в исходниках - не пробовали? Помнится мне, это в HAL'е массив для пересчёта делителя для шины APB (в человеческих /1 /2 и т.д.) в значение регистра прескалера. Есть ли оно в HAL'е от 32F030 - понятия не имею. Зачем оно прибито гвоздями к этой студии, вопрос риторический. Ну и в зависимость от камня я не верю. Вот в зависимость от типа переменной (глобальная-локальная) и в зависимость от степени оптимизации компилятора - очень даже.