Страница 1 из 1

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

Добавлено: Ср сен 21, 2022 23:40:24
xintrea
Привет, народ.

Сделал я простую прошивку для 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
Eddy_Em
Диод на PC13 дергается минусом, а на PA0 - плюсом?

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

Добавлено: Чт сен 22, 2022 07:29:26
Zhuk72
Почему в обоих случаях BS? Где ваш BR?
Светодиоды к портам подключены анодом или катодом?

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

Добавлено: Чт сен 22, 2022 13:44:30
MLX90640
На BluePill светик на PC13 подключен направлением в порт, говорили ж уже. Зажигается установкой нуля на выходе.
Ну а автору более внимательно посмотреть относительно названий битов и регистров, свериться с мануалом

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

Добавлено: Пт сен 23, 2022 22:27:33
xintrea
[uquote="Zhuk72",url="/forum/viewtopic.php?p=4293156#p4293156"]Почему в обоих случаях BS? Где ваш BR?[/uquote]

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

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

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

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

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

Добавлено: Пт сен 23, 2022 22:45:08
Eddy_Em
[uquote="xintrea",url="/forum/viewtopic.php?p=4294299#p4294299"]А что не так с BS? Зачем BR?[/uquote]
Там претензии лишь к тому, что в разных регистрах используются флаги одного и того же. В конкретном случае - пофиг. Но в общем можно и в засаду попасть...

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

Добавлено: Сб сен 24, 2022 00:11:12
azhel12
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4294309#p4294309"]В конкретном случае - пофиг. Но в общем можно и в засаду попасть...[/uquote]Вот поэтому плюсовые шаблоны (ну или хотя бы enum class) - это круто и полезно.

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

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