Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Неправильно мигают светодиоды на BluePill - почему?

Ср сен 21, 2022 23:40:24

Привет, народ.

Сделал я простую прошивку для BluePill STM32F103C8T6 с использованием CMSIS.

Она должна просто мигать двумя диодами. Один диод встроенный - C13, второй на ноге A0.

Основной цикл выглядит так:

Код:
    while (true)
    {
        delayMs(5000);
        GPIOA->BSRR = (1<<GPIO_BSRR_BS0_Pos);  // Hi A0
        GPIOC->BSRR = (1<<GPIO_BSRR_BS13_Pos); // Hi C13

        delayMs(5000);
        GPIOA->BRR = (1<<GPIO_BSRR_BS0_Pos);  // Low A0
        GPIOC->BRR = (1<<GPIO_BSRR_BS13_Pos); // Low C13
    }


Полный код здесь: https://pastebin.com/ZHfGWiaC

Проблема в том, что при таком коде диоды мигают в противофазе: когда один горит, второй тухнет и наборот.

Но ведь они должны мигать вместе!

Я не понимаю, почему так происходит. Кто-нибудь может объяснить?

Re: Неправильно мигают светодиоды на BluePill - почему?

Чт сен 22, 2022 00:07:28

Диод на PC13 дергается минусом, а на PA0 - плюсом?

Re: Неправильно мигают светодиоды на BluePill - почему?

Чт сен 22, 2022 07:29:26

Почему в обоих случаях BS? Где ваш BR?
Светодиоды к портам подключены анодом или катодом?

Re: Неправильно мигают светодиоды на BluePill - почему?

Чт сен 22, 2022 13:44:30

На BluePill светик на PC13 подключен направлением в порт, говорили ж уже. Зажигается установкой нуля на выходе.
Ну а автору более внимательно посмотреть относительно названий битов и регистров, свериться с мануалом

Re: Неправильно мигают светодиоды на BluePill - почему?

Пт сен 23, 2022 22:27:33

Почему в обоих случаях BS? Где ваш BR?


Потому что в первом случае работа с регистром BSRR, и в нем устанавливается 1 через BS. Где установили 1 - там выставится 1.

Во втором случае работа с регистром BRR, и в нем устанавливается 1 через BS. Где установили 1 - там выставится 0, это же BRR.

Все работает корректно. C13, как выяснилось, подключен на (+) и поэтому зажигание диода инверсно относительно A0, который подключен на (-).

А что не так с BS? Зачем BR?

Re: Неправильно мигают светодиоды на BluePill - почему?

Пт сен 23, 2022 22:45:08

А что не так с BS? Зачем BR?

Там претензии лишь к тому, что в разных регистрах используются флаги одного и того же. В конкретном случае - пофиг. Но в общем можно и в засаду попасть...

Re: Неправильно мигают светодиоды на BluePill - почему?

Сб сен 24, 2022 00:11:12

В конкретном случае - пофиг. Но в общем можно и в засаду попасть...
Вот поэтому плюсовые шаблоны (ну или хотя бы enum class) - это круто и полезно.

Re: Неправильно мигают светодиоды на BluePill - почему?

Сб сен 24, 2022 00:27:38

azhel12, да, но плюсы - это плюсы. А С - вечно! Да и просто. Один раз выучил, и пиши себе до смерти. С плюсами так не прокатит…
Ответить