Товарищи, у меня хуйня, спрашиваю как специалистов. На стм32 на одном ьаймере юзаю прерывания по переподнению и по совпадению на канале1. Частоьа шины 72мгц, делитель 71, arr 24, ccr1 19. Т.е. переполнение раз в 25мкс, шим перещелкивается раз в 20 мкс. А теперь суть: если я собираю код с Оg или Ofast, то работает как задумано, прерывание по переполнению выполняется за 4мкс, прерывание по совпадению за 3 с копейками. А если собираю с О0, у меня прерывание по совпадению сползает с 19мкс на 24, хотя прерывание по переполнению исполняется за 9мкс. Вопрос: как аппаратное, етить, событие, может сползать, хотя регистр ccr1 после запуска таймера я нигде не модифицирую?

Комментарии: 12

  1. Karboflex

    сравни ассемблерный код))

    • Serge

      предложи что-нибудь менее трудоемкое

      • Karboflex

        вон у дихалта чот такое было в либе нагавнокодили)

        • Serge

          Я думаю попробовать поставить data breakpoint, чтоб брякнулл при перезаписи регистра

  2. Magistrdev

    Заведи фриртос какой-нибудь и на нем пиши, тогда результат будет всегда один И вопрос если в варианте Og или Ofast работает, в чем сложность всегда в нем компилить?

Не нашли ответ?

Вам также может быть интересно