Два первых порта в ардуине на STM32

chip_1
Offline
Зарегистрирован: 01.11.2012

Почему здесь два первых серийных порта? Это ошибка? Как на самом деле к ним обращаться?

Спасибо!

a5021
Offline
Зарегистрирован: 07.07.2013

Это называется REMAP -- периферийный блок может использовать разные ноги в зависимости от значений, записанных в регистре конфигурации. В данном случае за это отвечает бит №2 в регистре AFIO_MAPR:

Bit 2 USART1_REMAP: USART1 remapping
This bit is set and cleared by software. It controls the mapping of USART1 TX and RX
alternate functions on the GPIO ports.
0: No remap (TX/PA9, RX/PA10)
1: Remap (TX/PB6, RX/PB7)

mikos
Offline
Зарегистрирован: 05.08.2018

То есть получается это просто возможность работы или там или там но Serial1.

А Serial0  здесь нет?

mikos
Offline
Зарегистрирован: 05.08.2018
0

То есть получается это просто возможность работы или там или там но Serial1.

А Serial0  здесь нет?

a5021
Offline
Зарегистрирован: 07.07.2013

Сколько сталкивался, ST присваивает цифровые индексы периферийным блокам начиная с единицы, т.е. первый или единственный последовательный порт будет именоваться USART1, но не USART0.

b707
Offline
Зарегистрирован: 26.05.2017

mikos пишет:

То есть получается это просто возможность работы или там или там но Serial1.

Да. обратите внимание, что и SPI1 тоже на двух разных группах пинов, и I2C1... Это позволяет вам удобнее раскидывать функции по выводам МК

mikos
Offline
Зарегистрирован: 05.08.2018

Спасибо!

Еще такой вопрос, может немного (или даже совсем) не по теме... Обычно в Arduino если пишу в Serial0 (или в нашем случае в Serial1), эта информация должна читаться на COM-порте, который через USB. На Nano или DUE все ок, пробую писать на STM - на COM-порте ничего, как мне отладочную инфу с него считать?

a5021
Offline
Зарегистрирован: 07.07.2013

Конкретно с STM32DUINO дела не имел, но вроде там бутлоадер надо сначала залить, чтобы вывод через юсб организовать.

Densl
Offline
Зарегистрирован: 28.11.2018

a5021 пишет:

Это называется REMAP -- периферийный блок может использовать разные ноги в зависимости от значений, записанных в регистре конфигурации. В данном случае за это отвечает бит №2 в регистре AFIO_MAPR:

Bit 2 USART1_REMAP: USART1 remapping
This bit is set and cleared by software. It controls the mapping of USART1 TX and RX
alternate functions on the GPIO ports.
0: No remap (TX/PA9, RX/PA10)
1: Remap (TX/PB6, RX/PB7)

В общем долго искал где делается этот ремап в среде Ардуино в файлах и папках, но всё не попадался. Ткните носом, пожалуйста, в каком файле искать.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Densl, в аддоне от Рожера Кларка можно воспользоваться функцией

afio_remap(AFIO_REMAP_USART1);
Densl
Offline
Зарегистрирован: 28.11.2018

Спасибо, попробую. Я просто искал где у него выполняется вызов этой функции с конфигурацией, чтобы подставить свои значения.

b707
Offline
Зарегистрирован: 26.05.2017

Densl пишет:
Спасибо, попробую. Я просто искал где у него выполняется вызов этой функции с конфигурацией, чтобы подставить свои значения.

если под "своими значениями" имеются в виду произвольныве пины - то так нельзя. Есть заранее определенные варианты и выбирать можно только из них

Densl
Offline
Зарегистрирован: 28.11.2018

b707 пишет:

Densl пишет:
Спасибо, попробую. Я просто искал где у него выполняется вызов этой функции с конфигурацией, чтобы подставить свои значения.

если под "своими значениями" имеются в виду произвольныве пины - то так нельзя. Есть заранее определенные варианты и выбирать можно только из них

Это понятно, я гляну как работает функция, и скормлю необходимым значением бита.