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

Wasserati

Участник
  • Постов

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

  • Посещение

Весь контент Wasserati


  1. Если подумать, то согласен, что приведенный мной вариант не правильный. Возможность изменения статусных бит за время чтения-модификации-записи я не учел.
  2. Я бы поспорил. Что-либо сбросить случайно второй вариант в принципе не может. А вот посмотрев даташит могу утверждать, что обе конструкции дадут идентичный эффект, тут разницы не будет, да.
  3. Если тут сброс бита подразумевается: TIM2->SR = ~TIM_SR_UIF; то он не так делается, а так: TIM2->SR &= ~TIM_SR_UIF; В остальных местах та же ситуация.
  4. А у таймера есть разрешение генерировать события для DMA? Бит UDE в регистре DIER таймера должен быть установлен в единицу. Переключать DMA на DMA2 не нужно. Событие TIM4_UP привязано к Stream6 Cnannel 2 DMA1. На DMA2 оно просто работать не будет. Если так нужно DMA2 то стоит взять другой таймер, который может генерировать события именно для DMA2. Например TIM1 или TIM8.
  5. Двусмысленно немного выразился, в итоге получилась путаница. У куба все библиотеки хранятся в отдельной папке которая так и называется "Repository", что я и написал. Про системы контроля версий как-то мысль даже в голову не пришла.
  6. Если отдельно без куба, то вот например для F0: https://my.st.com/content/my_st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-mcu-packages/stm32cubef0.license=1543601114301.product=STM32CubeF0.version=1.9.0.html Подобным образом и для других линеек мк. Правда качать сотни мегабайт данных все равно придется. Не могут ST не приложить пачку примеров использования под все возможные демоплаты, кучу всякой лишней документации и софта. Все нужное в папке Drivers/CMSIS. Куб я бы советовал поставить. Все актуальные версии заголовочных и прочих файлов только под него сейчас идут. Места он много не занимает, есть не просит. Сам за актуальностью библиотек следит.
  7. Startup файл соответствующего мк можно из репозитория CubeMX взять. Там они в отдельной папочке лежат. Советую обновить все файлы от ST. А то какие-то уже очень старые версии файлов в приложенном проекте.
  8. Максимальная частота тактирования АЦП - 14 МГц. Отсюда и могу быть проблемы.
  9. STM32F0 и FT232

    Спасибо всем за советы. Проблему пока что решил использовав кольцевой буфер. Изначально я использовал более запутанную схему буферов, поэтому перезагрузка DMA занимала довольно много времени, за которое USART успевал принять 2 лишних байта и поймать overrun. Неприятно что ST такую ситуацию не предусмотрело.
  10. STM32F0 и FT232

    Буферов на прием у меня и так несколько. DMA копирует данные в один из них. По заполнению буфера происходит перезагрузка DMA. Данные начинают копироваться уже в другой буфер. Проблема возникает как раз в при перезагрузке, так как она может произойти прямо в момент приема данных. Например, в текущем буфере есть 2 свободных байта места, а нужно принять данных на 10 байт. DMA принимает 2 байта в текущий буфер. Перезагружается. Принимает еще 8 байт в другой буфер. За время перезагрузки, USART ловит overrun. То есть сигнал RTS нужного эффекта не дает. На скриншоте именно момент перезагрузки показан.
  11. STM32F0 и FT232

    Есть МК STM32F030C8 подключенный к ПК через FT232. Настройки USART: 8 бит данных, 2 стоп бита, скорость - 3М, RTS/CTS включены. Чего я ожидал от Flow Control. USART принимает байт, устанавливает флаг RXNE, устанавливает на выходе RTS 1. FT232 приостанавливает передачу пока на линии RTS не установится 0. Что получается в действительности. USART принимает байт, устанавливает флаг RXNE, устанавливает на выходе RTS 1. FT232 передает еще один байт, а уже потом приостанавливает передачу пока на линии RTS не установится 0. Как итог, USART ловит overrun ошибку. DMA, который работает с RX линией, по этой причине, периодически виснет. Скриншот этой ситуации из лог. анализатора. 1. Flow Control так и должен работать, или где-то есть ошибка? 2. Как избежать потери данных в этом случае? Вручную забирать данные из RX регистра, пока DMA неактивен?
  12. Установка "Connect under reset" ничем в данном случае не поможет, так как у обрезка программатора установленного на stm32vldiscovery попросту нету линии Reset. Данную процедуру можно провести только следующим способом: принудительно притянуть линию Reset МК к земле (на stm32vldiscovery для этого специальная кнопка есть черного цвета), запустить процесс подключения к МК в программе (ST-Linl Utility, Keil и пр.) и сразу же отпустить Reset. После этого произойдет подключение. В некоторых особо запущенных случаях, удерживать Reset нужно секунду-две. Ну и еще раз повторю, программатор софтом определяется, он просто не может подключиться к программируемому МК. Как выше заметили, это может происходить из-за неправильного подключения, отсутствия перемычек(любой из трех установленных на плате), либо, в худшем случае, программируемый МК уже мертв.
  13. Судя по всем скриншотам программатор определяется нормально. Есть проблемы с подключением к МК. Опишите более конкретно что подключается и как. С stm32VLDiscovery дело имел довольно давно, но насколько помню это плата определяется сразу и как внешний накопитель и как программатор.
  14. Для начала можно попробовать понять что вообще происходит при отключении: hardfault, зависание на определенном участке кода или еще что-то. Скорее всего авторами стека ситуация разрыва соединения не предусмотрена вообще.
  15. Kabdim Спасибо, поправил. Если у кого есть рабочий пример программы передачи массива, поделитесь, пожалуйста.
  16. Здравствуйте. Осваиваю интерфейс USB. На основе HAL сгенерировал CDC устройство. Пытаюсь передавать с МК массив длинной 256 байт. Со стороны ПК принимаю эти же 256 байт. Вот здесь и возникает проблема. На стороне ПК сначала принимаются элементы массива с 64 по 255, а уже потом с 0 по 64. Тоесть первые 64 байта каким то образом сдвигаются в самый конец.В чем тут ошибка может быть? Использую МК STM32F103RC. Код использую нижеприведенный. Все остальное - код куба, без каких либо изменений. uint8_t buf[LEN], j = 0; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USB_DEVICE_Init(); uint16_t i; while (1) { if (j == 0) { for (i = 0; i < LEN; i++) { buf[i] = (uint8_t)i; } j = 1; } else { for (i = (LEN - 1); i >= 0; i--) { buf[i] = (uint8_t)i; } j = 0; } buf[0] = 0x01; buf[1] = 0x02; buf[LEN - 2] = 0x03; buf[LEN - 1] = 0x04; HAL_Delay(1000); while (CDC_Transmit_FS(buf, LEN) == 1); } }
  17. Спасибо всем за ответы. Причину ошибок я нашел. Нужно было добавить путь к .c файлам USB драйвера.
  18. Здравствуйте. Собрал среду для STM по следующей статье: http://www.carminenoviello.com/en/2014/12/...2nucleo-part-1/ Для пробы сгенерировал в QubeMX простой проект - мигалку, который нормально собрался и заработал. Проблемы возникли при попытке собрать проект с USB, сгенерированый в том же QubeMX. Eclipse в упор не видит часть функций для работы с USB, и выдает ошибки undefined reference to..., хотя #include для заголовочного файла с ними есть. Если использовать комбинации CTRL+C, CTRL+V (заменить функцию на саму себя), то ошибка исчезает, но только до попытки компиляции, после которой ошибка опять появляется. Еще одна странность в том, что есть функции, которые ошибок не вызывают, но при этом находятся в том же файле, что и ошибочные. Обе функции со скриншота находятся в одном файле. В чем здесь проблема? И как можно ее исправить? Template_STM32F1xx.7z
  19. Я с такой проблемой тоже сталкивался, правда на плате VLDISCOVERY. Лечилось достаточно просто: нужно поставить конденсатор емкостью пикофарад 100 между линией SWCLK и общим проводом. После этого все работет как нужно. Скорость прошивки также не особо падает.
  20. Сергей Борщ 1. GDB в строке GDB command прописан. 2. С брандмауером все в порядке, пробовал порт специально в исключения добавлять, не помогло. 3. Команда не распознается, проверить этот пункт не могу. 4. В Verbose моде что-то вроде запускается, но весь процесс заканчивается ошибкой, в консоли творится изображенное на скриншотах: Ошибки есть, но что они значат мне непонятно. Raven Вот Debug _log файл в Verbose mode. debug_log.txt aba О привязке я слышал, но по тому что встречал в интеренете, видно что люди нормально сервером поьзуются, и в ус не дуют. Все у них работает, один я неудачник какой-то. Texane GDB попробую. Спасибо всем большое что откликнулись на призыв новичка о помощи.
  21. Если все в данной ситации так тяжело, то посоветуйте какой-нибудь другой вариант внутрисхемной отладки. Мне, как новичку, тяжело ошибки в коде без отладчика искать.
  22. Здравствуйте. Помогите с решением одной проблеммы. Решил попробовать внутрисхемную отладку. Выбор пал на способ с использованием ST-link GDB сервер. Все настройки производил по этой статье: http://we.easyelectronics.ru/STM32/otladka...eclipsegcc.html GDB серер нормально запускается и начинает ожидать подключения дебаггера. При попытке запуска оного и начинаются проблеммы: выбивает окно с ошибкой, после чего сервер автоматически выключается. Скриншот ошибки прилагается. Отлаживать пытаюсь программу для платы STM32VL-discavery. Подскажите что в данной ситуации делать, и как все таки запустить отладку?
  23. STM32W

    Спасибо большое, буду пробовать.
  24. STM32W

    Поделитесь тем что есть под gcc пожалуйста. Может смогу под свои нужды как-то довести. Я изначально пытался проект на основе eclipse+CS собрать, но потом рещил на IAR перейти.
  25. STM32W

    Здравствуйте, уважаемые форумчане. Появилась необходимость разобраться с написанием кода для самодельного модуля на STM32W108CB, но ничего у меня не получается. :smile3046: Главная проблемма состоит в том, что уже длительное время не могу собрать нормальный скелетный проект. Радиомодулем хочу управлять с помощью SimpleMAC, трудности появились с подкючением HAL: файлов оного слишком много, какие из них нужны, а какие нет - непонятно. В примерах что идут с самим SimpleMAC все программы написаны под готовые боарды, у меня же, как отмечал выше, самодельный модуль, а примера создания проекта не для готового модуля я не встречал. Мои попытки настройки под имеющийся модуль привели только к ошибкам и запросам файлов, которых в библиотеках SimpleMAC нету. Может кто обьяснить какие файлы HAL должны бить обязательно подключены к проекту, а какие личшние и особо не нужны; и как вобще правильно настроить проект под мои нужды? Либо поделиться готовым примером Workspace для IAR на основании которого уже сам попытаюсь добиться нужного мне результата. Главная преследуемая цель всего - добится возможности обмена сообщениями между несколькими радиомодулями. Буду рад любой помощи по данному вопросу.
×
×
  • Создать...