Jump to content

    

kostyan1

Участник
  • Content Count

    121
  • Joined

  • Last visited

Everything posted by kostyan1


  1. В Eclipse это Alt + Shift + R с древних времен и да ПО ВСЕМУ проекту...
  2. VisualGDB и ARM

    Нене, теплое с мягким путать не надо, рефакторинг там наиотличнейший и из коробки, в отличии от. А вот к примеру в чужом коде ищешь баг - поставил какой нибудь принтф в одном месте - пошел дальше по стэктрэйсу в глубины изучать код, даже запустил чтото, подебажил... Потом осенило, надо резко вернуться найти где ты своего что то привнес - очень удобно. Буквально из разряда "попробовал раз, ем и сейчас", ванлав.
  3. VisualGDB и ARM

    Фича весьма мастхевная! Если конечно не гирлянду писать, а, к примеру, рыться в чужом/своем объемном коде, выискивая где бага посажена.
  4. VisualGDB и ARM

    Откровенно забавляют микрософтофилы со своими платными студиями и платными же кучей плагинов под них. То что было в бесплатном еклипсе едва ли не в первой версии, как то отличнейшие рефакторинг и навигация по коду, того нету из коробки в студии наверное и сейчас. Да госпидя, элементарнейшего - "goto last edit location" нету в 2013 студии, неудивлюсь если нет и в 2015ой! Терпеть ненавижу когда по ходу разработки иногда приходится пересаживаться в студию.
  5. Пользуясь случаем, а не подскажет кто где J-Flash лежит да с ключиком? :rolleyes:
  6. Народ, подскажите, хотелось бы затактировать stm32f4 от кварца 13.1072 МГц. Програмулина System Clock Configuration коэффициенты выдает такие же что и для 13МГц. Интересует: USB и SDIO будет работать на таком кварце? Или решение в корне не профессионально, и так делать нельзя?
  7. stm32 RTC Alarm

    Да тут скорее не в плюсах дело, а в многострадальных стм библиотеках. ОП взял какой то пример видимо "с забора", а не хотя бы с форума сайта разработчика камня или из рабочих демопроектов, коих на том же сайте разработчика выше крыши. Не работает. Вместо того чтобы читать вдумчиво документацию по регистрам RTC, а их там всего с десяток, и тщательно дебажить (обнимая и нежно лаская каждый бит каждого регистра) полез на форум "найдите мне ошибку". Увы и ах, хорошие библиотеки не делают разработчиков хорошими по умолчанию.
  8. stm32 RTC Alarm

    Бедные "мужики" что пишут на сях - "они то не знали" этого правила.
  9. Я по сути про тоже.
  10. По своему опыту: после аврок пересел на атмел САМ7 и САМ3. После них на стм32ф4. Там где раньше в изделии стояло два САМ7, можно обойтись одним САМ3. Где глючил САМ3 - ставишь стм32ф4. У САМ3 плохие часы - батарейный отсек если питать от лития - зависает, если подавать питание по нажатию кнопки - проц запускается порядка двух секунд. Плюс генерация на внешнем часовом кварце АРХИ слабая - от щупа осцила садится и не восстанавливается без перезапуска! После перевыпуска изделия на стм32ф4 - просто не нарадуюсь. Прямо до сих пор балдею - неужели "с таким щастьем и на свободе". Многие хают преднаписанные либы - а я кайфую. Функции хорошо задокументированы. Входные парамерты понятно названы - можно даташит не читать и все понимать что делает та или иная функция. Куб не юзал - руки не доходят. А то что есть в либах - ошибок пока не встречал. Если нужен какой то быстродействующий код - открываю даташит, смотрю чего надо выставить в конкретном регистре, беру код из либы, убеждаюсь что он все делает как написанно в даташите, убираю лишние проверки и макросы, профит. Возможно мне конечно повезло с ерратой - юзаю очень узкий круг стм32ф4 последних ревизий. Критического для себя не ловил.
  11. Спасибо, будем применить.
  12. Продолжим изыскания, жрет уже 400мкА плата в режиме стоп. Но заметил неприятность. Выключаю sd карту как написанно тут: void SD_LowLevel_DeInit(void) { GPIO_InitTypeDef GPIO_InitStructure; /*!< Disable SDIO Clock */ SDIO_ClockCmd(DISABLE); /*!< Set Power State to OFF */ SDIO_SetPowerState(SDIO_PowerState_OFF); /*!< DeInitializes the SDIO peripheral */ SDIO_DeInit(); /* Disable the SDIO APB2 Clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, DISABLE); GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_MCO); GPIO_PinAFConfig(GPIOD, GPIO_PinSource2, GPIO_AF_MCO); /* Configure PC.08, PC.09, PC.10, PC.11 pins: D0, D1, D2, D3 pins */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOC, &GPIO_InitStructure); /* Configure PD.02 CMD line */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure PC.12 pin: CLK pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_Init(GPIOC, &GPIO_InitStructure); } Ухожу в сон, плата потребляет 400мкА. SD карточку вытаскиваю на горячую - потребление платы уменьшается до 280 мкА. Получается карточка потребляет 120 мкА, что совсем не есть айс! Это нормально, или програмно как то можно уменьшить потребление?
  13. Как говорится, сам дурак, переферию не полностью отключал, только тактирование выключал, а надо еще и _CMD( , DISABLE); делать для всего и вся. Дело сдвинулось с мертвой точки. Еще с волтаж регулятором надо побаловаться.
  14. Есть плата на STM32F401VET6, надо сделать режим микропотребления. Впаял одноомные резисторы на 11, 19-21-22, 28, 50, 75, 100 ноги в разрыв питания. Сколько мВ падает на этих резисторах - столько мА собственно потребляет проц. Перед уходом в стоп отрубаю всю переферию, все неиспользуемые ноги - выход ноль, или если есть подтяжки - входом. Потом делаю "PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);" Но счастья не приходит :( . На резисторах насчитал что падает около 2.2 мВ в сумме. Больше всего на 19-21-22, один резистор на три ноги, падает примерно 0.8 мВ. И на 11 и 28 ногах по 0.3-0.4 мВ примерно. На вход платы подцепил стрелочный четкий амперметр, он показывает потребление платы те же примерно 2.2 мА. То есть по сути всё что жрет плата - жрет проц, всякие преобразователи напряжений, питающие плату, не шалят. Ноги общупал осцилом. Криминала не вижу. Собственно что делать? Есть плата диско401 - там запускаю ST-шный пример микропотребления в режиме STOP - вуаля, десятки микроампер. Вот даже не знаю что же отрезать начать - все ноги что ли, используемые в проекте, подряд?
  15. Действительно, проверил на железе, работает "само", очень удобно! Тему можно закрывать.
  16. Народ, подскажите делал кто нибудь? Надо передать килобайты байтов по USART в передатчик модема, который имеет апаратные ноги RTC и CTS. На stm32f4, насколько понял из документации, аппаратная поддержка flow контроля есть. Но интересует вопрос с дма. Если выставить передачу данных по USART с использованием дма - передача будет "сама" приостанавливаться, пока ей не разрешат продолжиться через ноги RTC и CTS??? Или "flow апаратика" работает только при побайтовой передаче с полингом флага передачи каждого байта?
  17. STM32F207

    Красиво структурированный читаемый код, и "только дурак" - имхо несовместимые понятия. Особенно для проектов, в которых трудятся программистов в количестве больше одного.
  18. сигнал SCK то имеется на второй щуп, и полярность с фазой правильно на осцыле (а не по логике) выглядят?
  19. Сделал в итоге через EXTI, как уже ранее предлагалось: Способ запуска одного дма через 2 других М2М дма не подходит, ибо помимо установки регистров DMA1_Stream4->NDTR и DMA1_Stream4->CR, необходимо еще устанавливать регистр DMA1->HIFCR. И вроде вполне все бодро крутится - проц готов к свершениям помимо данной задачи. Тему можно закрывать.
  20. это только на линухе насколько я понял :( упд. Неправильно видимо понял - не могу разобраться как запустить собственно. Установил и туплю. упд2. Нашел инструкцию как пользовать на сайте, слона как водится не заметил, изучаю пробую...
  21. В режиме heap_1.c фриртосина вполне себе обеспечивает статичность объектов. Имхо главное отличие чибиоси от прочих ртос - добавление абстракции от железа. Но любая абстракция - это дополнительные накладные расходы.
  22. Спасибо за поиск, проблема таки решилась! Искал вчера весь день рабочий пример под 401й проц и под конец осенило про стм32куб. Сегодня как раз для диско401 создал проектик цдц, как то запустил его - передача идет! Через USBLyzer обнаружил что конечные точки в проекте, полученном через куб, другие : CDC_IN_EP = 0x81, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x82. А у меня были такие: CDC_IN_EP = 0x82, CDC_OUT_EP = 0x01, CDC_CMD_EP = 0x83. Сделал в своем проекте первый вариант, переделал libusb драйвер и заработало! А то, что точки другие - обнаружил через USBLyzer! Он гадина платный и не ломанный, рега скоро кончится на него. Хоть и оффтоп - посоветуйте народ, пожалуйтса, подобный просмоторщик USB трафика бесплатный?!
  23. Народ, кто нибудь поднимал usb cdc именно на STM32F401? Есть две платы: диско429 и диско401. На диско429 отладил пример из набора STM32_USB-Host-Device_Lib_V2.1.0. Там пример идет для stm32f407, но заработало и для stm32f429 на хайспидовом usb но в режиме фулспида. Со стороны компа - libusb с двумя точками 0x01 и 0x82 для передачи приема данных. Беру ровно тот же код (ну ножки другие только буквально) и пробую запустить его на диско401. Енумерация проходит, работает приём - я принимаю от компа данные (несколько байт), посылаю в ответ посылку (тоже несколько), НО ПРЕРЫВАНИЯ ОТ ПЕРЕДАЧИ НЕ ПРОИСХОДИТ!!! Со стороны компа выхожу из кода чтения данных по таймауту в несколько секунд, а проц долбится в прерывании в коде анализа прерывания DCD_HandleInEP_ISR, где для epnum=2 бит XFRC:Transfer completed interrupt регистра OTG_FS_DIEPINT2 не встает! Хэзэ что думать - в гугле такой проблемы не нашел. HID пример для stm32f401 с эмуляцией мышки работает - так что железо вроде бы рабочее, но мне нужен cdc.
  24. А вроде даже и заработало, но есть нюанс! В доках написано: "TIM_SlaveMode_External1: Rising edges of the selected trigger (TRGI) clock the counter. " То есть нарастающий фронт ловится, а мне надо спадающий faling edges. Как то можно крутануть в контроллере это дело? А пардон, сам нашел в доках. Заработал таймер, теперь на повестке: Вопрос один - собственно КАК? Как от одного таймера настроить два запроса на разные каналы ДМА? Каплю кода бы в пример...