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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
xintrea
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вт ноя 11, 2014 22:38:33

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

Сообщение 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

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

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

Я не понимаю, почему так происходит. Кто-нибудь может объяснить?
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

Диод на PC13 дергается минусом, а на PA0 - плюсом?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

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

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

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

Сообщение MLX90640 »

На BluePill светик на PC13 подключен направлением в порт, говорили ж уже. Зажигается установкой нуля на выходе.
Ну а автору более внимательно посмотреть относительно названий битов и регистров, свериться с мануалом
Реклама
Эиком - электронные компоненты и радиодетали
xintrea
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Вт ноя 11, 2014 22:38:33

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

Сообщение 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?
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

[uquote="xintrea",url="/forum/viewtopic.php?p=4294299#p4294299"]А что не так с BS? Зачем BR?[/uquote]
Там претензии лишь к тому, что в разных регистрах используются флаги одного и того же. В конкретном случае - пофиг. Но в общем можно и в засаду попасть...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

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

Сообщение azhel12 »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4294309#p4294309"]В конкретном случае - пофиг. Но в общем можно и в засаду попасть...[/uquote]Вот поэтому плюсовые шаблоны (ну или хотя бы enum class) - это круто и полезно.
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

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

Сообщение Eddy_Em »

azhel12, да, но плюсы - это плюсы. А С - вечно! Да и просто. Один раз выучил, и пиши себе до смерти. С плюсами так не прокатит…
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Ответить

Вернуться в «ARM»