Jump to content

    

vlad_new

Участник
  • Content Count

    223
  • Joined

  • Last visited

Community Reputation

0 Обычный

About vlad_new

  • Rank
    Местный
  1. Судя по таблице, в группе из 4 бит, NVIC_IRQChannelSubPriority должен быть равен 0. The table below gives the allowed values of the pre-emption priority and subpriority according to the Priority Grouping configuration performed by NVIC_PriorityGroupConfig function ============================================================================================================================ NVIC_PriorityGroup | NVIC_IRQChannelPreemptionPriority | NVIC_IRQChannelSubPriority | Description ============================================================================================================================ NVIC_PriorityGroup_0 | 0 | 0-15 | 0 bits for pre-emption priority | | | 4 bits for subpriority ---------------------------------------------------------------------------------------------------------------------------- NVIC_PriorityGroup_1 | 0-1 | 0-7 | 1 bits for pre-emption priority | | | 3 bits for subpriority ---------------------------------------------------------------------------------------------------------------------------- NVIC_PriorityGroup_2 | 0-3 | 0-3 | 2 bits for pre-emption priority | | | 2 bits for subpriority ---------------------------------------------------------------------------------------------------------------------------- NVIC_PriorityGroup_3 | 0-7 | 0-1 | 3 bits for pre-emption priority | | | 1 bits for subpriority ---------------------------------------------------------------------------------------------------------------------------- NVIC_PriorityGroup_4 | 0-15 | 0 | 4 bits for pre-emption priority | | | 0 bits for subpriority ============================================================================================================================
  2. Ну во первых флаг LBD - это не обязательно LIN. Например я его использую как флаг начала пакета. Во вторых странно, что у вас не выставляется флаг FE. Хотя он не на что и не влияет. В третьих флаг OVR заслуживает отдельного внимания, поскольку ( как я понял в некоторых камнях ) он блокирует дальнейший приём. В мэнуале как то странно написано, что сбросить его можно чтением приемника ??? и/или ??? чтением регистра SR (вроде). Поэтому при приёме байта сначала вычитываем RX и SR в каие нибудь переменные, а потом уже занимаемся всем остальным. Правда во время обработки приема байта, флаг OVR опять может установиться ( от разного там дребезга в контактах ). Ситуация редкая, но я уже с этим сталкивался (приёмник просто намертво виснет, хотя казалось бы, что ранее флаг OVR был сброшен). Вообщем написав уже с не один десяток разных обработчиков пакетов, везде вылезало что то своё и до всего приходилось докапываться самому.
  3. STM32H750 + Ethernet + веб-загрузчик

    От кого шифруемся? http://www.break-ic.com :)
  4. Точность внутрених клоков в STM32L4

    Смотрим еррату! Option byte loading can fail if MSI frequency is greater than 8 MHz Description The option byte loading operation can fail if the MSI clock is ON with a frequency equal or greater than 8 MHz before performing an option byte loading by setting OBL_LAUNCH bit in the FLASH _CR register. Some options and engineering bytes values can be corrupted. Workaround If MSI is ON at a frequency equal or higher than 8MHz, It is mandatory to reduce MSI frequency to 4 MHz or less before launching the Option Byte loading operation by setting the OBL_LAUNCH bit in the FLASH_CR register. Ну и т.д. :)
  5. А разве не надо сбрасывать флаг в любой ситуации. Иначе есть вероятность, что Вы при выходе из прерывания снова в него будете влетать до бесконечности. Не знаю что там библиотеках индюшка понаписал, но я это делаю просто вот так: EXTI->PR|=(1<<12); // clear pending interrupt PA12 __ISB(); ...
  6. Изолированный программатор

    Ну собственно вот. Можно и самодельный и штатный JLINK доработать самому. 2 мГц тянет. Ещё есть вариант купить штатный STLINK IsoI ( он с опторазвязкой ) и воспользоваться утилитой с сайта сиджера, которая перепрошивает его в JLINK. У меня есть такой. Всё норм работает. Правда не знаю работает ли при этом полный JTAG. Ну если надо могу проверить.
  7. Bootloader STM32 + CAN

    Вот вычитал, что в STM32F412xxx штатный загрузчик может грузить по CAN2 , PB5, PB13. Для всех типов корпусов. ( п. 3.16 Boot modes ).
  8. JTAG + STM32

    Для начала запустите STM32-STLINK utility. Он должен увидеть ваш stm. А уже потом переходите к кейлу. Убедитесь, что в кейле в debug -> utility установлен ваш Jlink и внутри выбран нужный тип роцесора из таблицы.
  9. Можно попробовать в прерывании, перед выходом, поставить что то типа сброса всех флагов и ошибок напрямую в регистрах уарта. Скорее всего, как уже было замечено, какой то флаг вам не дает выйти из прерывания ( вернее вы туда тут же влетаете ). Ну или анализируйте, на сколько корректно HAL всё это делает за вас
  10. STM32F2: RTC проблемы с датой

    Как уже было замечено ранее, всё дело в последовательности. Там вы работаете не напрямую с физическими регистрами, а с теневыми. Сейчас уже точно не помню, но вроде реальные данные, переписываются из теневых регистров только после записи секунд в них. С чтением проблем вроде не было. Но и там то же читать надо 2 раза, что бы не напороться на секундный переход. Причем при использовании библиотек, убедитесь, что там верная последовательность (ошибок в библиотеках хватает). Читаем в такой последовательности: КодRTC_GetTime(RTC_Format_BCD, &RTC_TimeStructure);           // Get the current Time RTC_GetDate(RTC_Format_BCD, &RTC_DateStructure);           // Get the current Date Пишем в такой: Код    PWR_BackupAccessCmd(ENABLE);                                        // BKP ENABLE     RTC_SetDate(RTC_Format_BCD, &RTC_DateStructure);                    // Init Date     RTC_SetTime(RTC_Format_BCD, &RTC_TimeStructure);                    // Init Time     PWR_BackupAccessCmd(DISABLE);                                       // BKP DISABLE Или я не уловил суть вопроса?
  11. STM32F4x9 + LAN8720A + lwIP 2.0.2

    На счет подвисания. Все они виснут. Вопрос при каких условиях это происходит. На счет ланки, могу сказать, что в домашних условиях, она редко виснет. У меня она работает уже лет 5. Но она очень помехо не защищенная. Если рядом с ethernet кабелем создать даже небольшую помеху, то она сразу перестает работать. В 90% помогает обычный импульс сброса на её лапку. типа: if(read_PHY(0)==0), то сбрасываем её. К стате, зависнуть может даже от включения холодильника ( если проводка в доме неважная). В промышленных вариантах использую DP83848. Она на порядок более помехо защищенная. Вот как то так.
  12. STM32L151 USB

    При смене камня, часто меняется и размер стека.
  13. в ф4, да и во всех других стм-ах есть би директ режим в уартах. я пользую этот режим. прекрасно работает по 1 проводу. Если надо именно ок. то тут уже всё что нужно было сказано.
  14. Оптимизация в Keil

    Я не раз нарывался на проблеммы с оптимизатором в кейле. много всего было всего не упомниш. вот один пример: есть массив глобальный волятивный. Делаем какие то действия с массивом. После этого разрешаем прерывание и ждём флага окончания изменения данных в массиве. Так вот 1 элемент массива с оптимизатором не менялся. Почему то кейл заганял его в регистр и после обновления массива в прерывании, 1 элемент брал из этого же регистра. это было в версии 4.2 В версии 4.5 уже это было исправлено. Так же попадались примерчики кейловские, например с USB, которые работали только без оптимизатора. Так что смотрите ассемблер и поймёте что не так.