Jump to content

    

inventor

Свой
  • Content Count

    619
  • Joined

  • Last visited

Community Reputation

0 Обычный

About inventor

  • Rank
    Знающий
  • Birthday 02/18/1969

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

4464 profile views
  1. У меня тож проблема с кубом не могу найти как в CubeIde сделать Call Stack как это сделано например в IAR - остановка дебагером и можно посмотреть все вызовы функций до этой точки. как это сделать в Cube ? Ничего не нашел, ни в гугле нигде...
  2. 1) Нужно программировать новые контроллеры STM32L4* - обратил внимание что нет обычной библиотеки которая шла практически со всеми отладочными платами и сейчас все это хозяйство программируется только через Cube? так ли это, сохранилась ли поддержка "обычной" библиотеки StdPeriph_Driver ? 2) как в CubeIde сделать Call Stack как это сделано например в IAR - остановка дебагером и можно посмотреть все вызовы функйций до этой точки. как это сделать в Cube ?
  3. посмотрел ассемблер кажись нашел причину. Присваивание status = SUCCESS; не работает если пишешь status = 1; то все ОК почему он так воспринимает - загадка Разобрался в моем файле переопределение SUCCESS Охрененно! Чего уж сказать! меняю на bool свои функции
  4. #define RTC ((RTC_TypeDef *) RTC_BASE) вот так объявлено RTC_TypeDef как я понимаю структура с описанием регистров Внутри все регистры объявлены как _IO - typedef __IO int32_t vs32; то есть volatile дебагером он попадет вот сюда: if ((RTC->ISR & RTC_ISR_INITF) != RESET) { status = SUCCESS; и статус не переприсваивается посмотрел ассемблер кажись нашел причину. Присваивание status = SUCCESS; не работает если пишешь status = 1; то все ОК почему он так воспринимает - загадка
  5. по самому первому бит правильно выставляется и проверяется но почему то возвращает ноль.
  6. в стандартном библиотечном файле typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
  7. Настраиваю RTC и вхожу дебагером внутрь функции RTC_EnterInitMode() Функция должна вернуть статус ERROR или SUCCESS (описано как !ERROR) Прохожу все строки и вижу что status = SUCCESS не присваивается, функция возвращает ошибку. ErrorStatus RTC_EnterInitMode(void) { __IO uint32_t initcounter = 0x00; ErrorStatus status = ERROR; uint32_t initstatus = 0x00; /* Check if the Initialization mode is set */ if ((RTC->ISR & RTC_ISR_INITF) == (uint32_t) RESET) { /* Set the Initialization mode */ RTC->ISR = (uint32_t) RTC_INIT_MASK; /* Wait till RTC is in INIT state and if Time out is reached exit */ do { initstatus = RTC->ISR & RTC_ISR_INITF; initcounter++; } while ((initcounter != INITMODE_TIMEOUT) && (initstatus == 0x00)); if ((RTC->ISR & RTC_ISR_INITF) != RESET) { status = SUCCESS; return 1; } else { status = ERROR; } } else { status = SUCCESS; return 1; } return (status); } Поставл возврат единицы - заработало В чем может быть проблема? Результат status лежит в регистре R0
  8. то из этого следует что только LSE ?
  9. stm32f 40* 10* 05* смотрю схему тактирования, по ней непонятно сигналы идут к RTC от lsi и lse но непонятно при отсутствии основного питания будут rtc работать от LSI и считать время или нет столкнулся с этим на другом контроллере. не stm
  10. подскажите вот такое. есть контроллер STM40* или STM10* или даже STM0* у него есть несколько ног для основного питания и нога для батарейного питания предположим на ногу батарейного питания я ставлю supercapacitor или батарейку основного питания нет! RTC будут идти только от генератора LSE или от других генераторов тоже будут идти: LSI HSE HSI пытаюсь найти в документации, но что то не могу.
  11. Вопрос снимается. Плохой разъем. Нет сигнала D+
  12. Сделали плату новый вариант, старый вариант заводился, USB работало программа VCP перекомпилирую для платы discovery с 407 камнем, загружаю - USB работает перекомпилирую для 429 камня - вообще ничего, кроме зарядки батареи посмотрел делители PLL вроде все OK,заводится от кварца 8МГц /* PLL_VCO = (HSE_VALUE / PLL_M) * PLL_N */ #define PLL_M 8 #define PLL_N 336 /* SYSCLK = PLL_VCO / PLL_P */ #define PLL_P 2 /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */ #define PLL_Q 7 В чем может быть проблемма, и как ее искать, подскажите! DATA_N и DATA_P идут на ноги PA11и PA12 разъем неправильна назван. на PCB стоит USBD1X04SW-2-M-H, Разъем USB2.0 "гнездо" 4-х конт. тип A, поверхн. монтаж на плату
  13. ну. если есть для stm, наверное можно ее для миландра переделать.
  14. проблема такая, с одной станцией могут работать несколько вариантов модулей производства от 2011 года, некторые модули прошиты в прошлом году (я создавал тему по этому вопросу), некоторые нет Старые модули на команду $PMTK457*34 выдают смещение 15 секунд, то есть то, которое было в далеком 2012 году если этот модуль работает какое то время и выводит время с координатами, значит он получил альманах ( это происходит каждые 12.5 минут) и показывает текущий правильный offset. в прошлом году вроде 18 секунд. я это время нигде не использую, в конце работы прошивки вручную корректируем у меня такой вопрос: как определить, что при получении строки NMEA, если у меня данные валидные (то есть есть буква A в строке времени): $GPRMC,085827.649,A,5541.7900,N,03721.3821,E,0.06,0.00,181113,10.0,E,A*36 что уже пришел альманах с правильным офсетом времени или еще не пришел? есть такой вариант, как у меня появилась строка с буквой A - ждать еще 12-15 минут чтобы гарантировать что уже есть альманах, хотелось бы все упростить - получил время, синхронизировал часы и не паришься этой проблемой.
  15. Пока только скачал emWin у зеггера Хотел бы спросить у знатоков: версию эвалюешн можно для своего контроллера сделать? Я еще не раскрыл архив и просто интересуюсь. Может мой миландр не удастся с этой библиотекой запустить.