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

VladislavS

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    7

Сообщения, опубликованные VladislavS


  1. J-Link это всего лишь адаптер, он ничего сам не делает. Делает программа, которая с его помощью прошивает. Программ этих чуть больше чем дофига и каждая делает посвоему. Собственно и OpenOCD через J-link шить умеет.

  2. 3 часа назад, LAS9891 сказал:

    Скажите уже, что мне надо читать Страуструпа.

    Вообще-то, Кернигана и Ритчи 🙂  Это никому не повредит. Но что-то мне подсказывает, что там ни про работу с volatile сущностями, ни про оптимизирующий компилятор, ни про то как данные с задержками по шинам бегают, ни вообще про эмбэдд ни слова не будет. А до Страуструпа ещё надо дорасти.

  3.  

    17 минут назад, LAS9891 сказал:

    Как я ИХ мог очистить

    Между чтение для обработки и повторным чтением для очистки могло произойти что угодно.

    3 часа назад, LAS9891 сказал:

    Вам стоило написать в STM и рассказать им какие они там все говнокодеры

    Это Секрет Полишинеля. Впрочем, тот код что для них индусы пишут, ещё ничего. :)))

  4. 1 час назад, LAS9891 сказал:
    TIMER_INTF(TIMER1) &= (~TIMER_INTF_CH0IF);

    А потом у вас прерывания теряются. Тут вы очистили флаги, которые "вскочили" во время обработки текущего прерывания, не обработав.

    45 минут назад, LAS9891 сказал:

    Тут пишут, что флаг надо смотреть не прямо в регистре, а через переменную:

    Смотреть прямо в регистре периферии микроконтроллер не может. Он сначала считывает в регистр процессора, а затем смотрит. Локальная переменная будет расположена в регистре процессора. Не нужно много раз читать регистр статуса в регистр процессора, это напрасная трата времени в прерывании.

  5. 56 минут назад, RR2021 сказал:

    Пока что делаю так  сначала умножил на 10 , перевёл в int, потом прибавил 1 перевёл во float, и разделил на 10 

    Мои глаза!!! 

    Что это изменит? Значение 1.1 во float не представимо точно.

    image.png.ca63230473357b6b41c8fe94908ef67e.png

     

  6. 1 час назад, razrab83 сказал:

    которая инитится в main

    У меня для совместимости с разными компиляторами (тулчейнами) вот такая конструкция используется

    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #ifdef __ICCARM__
      int __low_level_init(void)
    #else
      void SystemInit()
    #endif
    {
    
      // Код инициализации железа
    
    #ifdef __ICCARM__
      return 1;
    #endif
    }
    
    #ifdef __cplusplus
    }
    #endif

     

    35 минут назад, EdgeAligned сказал:

    Во внешней SDRAM хранить одиночные переменные или малые объемы данных - неэффективно.

    А с чего вы взяли что там одиночная переменная? Ясно же, что пример тестовый, что там реально в куче ХЗ.

  7. 22 минуты назад, amaora сказал:

    А кто-нибудь здесь пишет

    Не знаю это ли вы имеете в виду. Вот у меня в одной из библиотек обработчик прерываний USB. В нём IRQHandlers это список типов. Для каждого элемента списка выполняется лямбда.image.thumb.png.e87d0779ee24b07eb56ae9eaa5099ef5.png

    А сам список зависит от реализуемого класса. Например, для CDC обработчики двух конечных точек.

    image.thumb.png.c6fd84ce0b4a5c27c4325cf08500ff71.png

     

     

     

    3 минуты назад, Arlleex сказал:

    Опять же - это ведь не переменная, а константа.

    Вообще-то переменная. Изменять нельзя, правда. :)))

    4 минуты назад, Arlleex сказал:

    Видимость ограничена блоком (функцией), время жизни - глобальное, супер.

    Это и в православном С так было со статическими локальными переменными.

×
×
  • Создать...