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

Re: STM32 новичку в ARM что к чему

Сб фев 15, 2020 12:57:23

Со всеми замеченными правками - должно работать.

Уф, заработало, благодарю. Код действительно рабочий - мой косяк - с таймера 1 на выход ШИМа подключил один светодиод на PA11, с таймера 2 - на PA15, отсчитал от 11 четвёртый пин - PA15. Не учёл, что на Blue Pils STM32F103C8T6 - PA11, PA12, а затем сразу PA15. Ещё раз благодарю всех!!!

Re: STM32 новичку в ARM что к чему

Сб фев 15, 2020 14:23:54

А для быстрой замены таймера есть такая фича:

#define USED_TIM TIM2
USED_TIM->CCMR1 = TIM_CCMR.......
USED_TIM->CR1 |= TIM_CR1_CEN.......

и надо лишь заменить в дефайне TIM2 на TIM1

Раз уж всплыл этот момент, может есть идеи как... Вот для такого типа подстановки проблем нет:
Код:
#ifndef I2C_BUS
#define I2C_BUS I2C1
#warning Default I2C interface set to I2C1
#endif

Но как сделать подмену в строчках:
NVIC_EnableIRQ(I2C1_IRQn);
void I2C1_IRQHandler()
RCC->APB1ENR |= RCC_APB1ENR_I2C1EN;

В гугле был нашедши что-то типа
Код:
#define APB_ENABLE(A)   RCC_APB1ENR_ ## A ## EN
#define APB_EN(A) APB_ENABLE(A)
Но у меня APB_EN(I2C_BUS) не хочет создать RCC_APB1ENR_I2C1EN
Первая строчка, вроде, работает: APB_ENABLE(I2C1) создаёт RCC_APB1ENR_I2C1EN. Но вот как сделать подмену в аргументе подстановки?

Re: STM32 новичку в ARM что к чему

Вс фев 16, 2020 15:05:03

Так... кажется, до меня дошло, почему не работает эта подстановка...
Оказывается, сам "I2C1" является макросом:
Код:
#define I2C1                ((I2C_TypeDef *) I2C1_BASE)
Поэтому когда все макросы раскрываются и получается глупость...

Re: STM32 новичку в ARM что к чему

Вт фев 18, 2020 22:11:06

Народ, подскажите - в STM32F103C8T6 - есть таймеры 1, 2, 3 и 4. Вопрос: Если соединять два 16-бит таймера в один 32-бит таймер, можно делать любые комбинации из них, или есть какие-то фиксированные пары Master-Slave?

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 05:59:30

Можно я почитаю RM за вас?
СпойлерИзображение
Изображение
t1_t8.png
(25.61 KiB) Скачиваний: 79
t2-t5.png
(25.43 KiB) Скачиваний: 54

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 08:11:51

Подскажите. кристалл stm32f051. Ведь, так не правильно писать обработчик прерывания?
Код:
void I2C_IRQHandler(void) {
      if (I2C->ISR & I2C_ISR_ARLO) { // Arbitration lost;
...
      if (I2C->ISR & I2C_ISR_BERR) {
...
      if (I2C->ISR & I2C_ISR_NACKF) { // Not acknowledgment;
итд.
Ведь, если я соответствующее разрешение выключу, например, TXIE то обработчик всё-равно может с некоторой вероятностью залезть в этот IF? Может, надо еще и проверять состояние разрешения в CR1?

Это нужно мне из-за того, что хочу часть данных качать через ПДП и боюсь, что вместо ПДП может сработать этот обработчик.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 08:15:38

Всё верно, флаги в регистре статуса вскакивают независимо от того разрешено прерывание или нет.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 10:19:38

Можно я почитаю RM за вас?

Благодарю, теперь буду точно знать, где нужно читать. После AVR несколько сложновато сразу всё понять и запомнить - 21 регистр у таймера 1, по 18 регистров у таймеров 2, 3 и 4. Насколько я понял - для STM32F103C8T6 все 4-е таймера могут работать в паре с любым другим таймером?

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 11:04:00

Frogfot, если вам нужен 32-битный таймер, можно еще и камень более подходящий выбрать.
Все таки, в семействе STM32 хуже STM32F103 ничего нет!

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 11:11:19

Eddy_Em, именно F103 или вообще F1?

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 11:49:35

WiseLord, про F103 могу сказать точно, с остальными F1xx не работал.
Сейчас для меня основные МК - это STM32F072. Супер!
Некоторые вещи, для которых нужно чуть пошустрей работать или не хватает периферии F0, пользуюсь F103. Но постоянно плююсь, когда вспоминаю, как все легко и изящно на F0xx, и какая жесть на этом Г.
Из Cortex-M4 работал с F407 (но это было давно и на SPL, т.е. можно сказать, не работал я с ним). Дома уже с год лежит девборда на F411, но все руки не доходят: это ж надо для нее линкер проверить, стартап модифицировать и натащить заголовочных файлов с объявлениями портов. А потом еще это намного более жирное железо программировать как-то. Есть, правда, один плюс: у Cortex-M4 есть FPU. Но мне флоаты на МК нужны крайне редко.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 12:29:32

Eddy_Em писал(а):Дома уже с год лежит девборда на F411, но все руки не доходят: это ж надо для нее линкер проверить, стартап модифицировать и натащить заголовочных файлов с объявлениями портов. А потом еще это намного более жирное железо программировать как-то.
Сносишь линуксы, ставишь прошивку от игровых приставок а не нее IDE (ругательство для линуксера) и спокойно пишешь на SPL и отлаживаешь. :) Короче все просто. Это ты со своими линуксами все усложнил.
Скажу по секрету есть недорогие STM32H750. Когда до них доберешься? :)))

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 12:59:26

Скажу по секрету есть недорогие STM32H750.

Я встречал такую платку с STM32H750VB 480 МГц - без ничего, только ножки выведены и флеш 25Qxx можно допаять - примерно 12 зелёных - как, нормальный контроллер?
STM32H750.jpeg
(67.44 KiB) Скачиваний: 171

Добавлено after 7 minutes 31 second:
Frogfot, если вам нужен 32-битный таймер, можно еще и камень более подходящий выбрать. Все таки, в семействе STM32 хуже STM32F103 ничего нет!

Ну взял не особо разобравшись несколько штук BluePils, не выбрасывать же их. Конечно, сейчас уже заценил, что F105, F107 покрасивше камушки будут.

А как F030 будут? Тоже взял несколько чипов, пока не юзал - STM32F030F4 (16 kB 20 pin) и STM32F030C8 (64 kB 48 pin)

Сейчас начал присматриваться к таким же платкам с STM32F401/411 - как они?

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 13:20:44

спокойно пишешь на SPL и отлаживаешь. :)
Скажу по секрету есть недорогие STM32H750. Когда до них доберешься? :)))

Какой смысл брать недорогие STM32H750 если для них SPL нет и не будет? :)

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 14:16:50

спокойно пишешь на SPL и отлаживаешь.

А ничего, что SPL уже давно канул в Лету? "Спокойно писать и отлаживать" можно вообще где угодно - хоть в ондроеде. Только мне внутрисхемная отладка нафиг не нужна — она вообще не имеет смысла в подавляющем большинстве случаев.
Скажу по секрету есть недорогие STM32H750. Когда до них доберешься? :)))

Никогда. Это - слишком сложно и не нужно для наколенного девелопмента.

Добавлено after 1 minute 37 seconds:
Какой смысл брать недорогие STM32H750 если для них SPL нет и не будет? :)

А что, писать на регистрах религия не позволяет? Обязательно какую-нибудь дрянь тащить надо?

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 22:05:04

Все таки, в семействе STM32 хуже STM32F103 ничего нет!

Чем уж так плох STM32F103? Я знаю, что DMA у новых семейств более быстрый, а что ещё, какие у него недостатки?
Последний раз редактировалось Frogfot Ср фев 19, 2020 22:27:01, всего редактировалось 1 раз.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 22:14:42

Frogfot да бред собирает не слушай его. 103 это мейнстрим камни хороший камушек на ядре M3.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 22:23:40

F1xx - это одни из самых первых и самых древних в современной продукции STM32, им уже больше 10 лет. Посему в них остались недостатки, которые исправлены в последующих сериях. Не нравятся - не пользуйтесь. Однако, они ближайшие, в которых есть 100 и более ножек. ...Кстати, еще досконально не смотрел че там по G серии.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 22:30:15

Из моего пока не слишком большого опыта общения с STM32:

- I2C у F1 очень запутанный и неудобный
- RTC неполноценный (просто счётчик секунд по сути). Хотя иногда это и удобно
- GPIO/AFIO не очень удачная система.

Это, как минимум, в сравнении с F3 семейством, с которым тоже немножко довелось поработать. F0, как я понимаю, ближе к F3 по периферии.

И да, нужно очень внимательно изучить Errata. Есть много описанных багов периферии, которые нужно учитывать. Часто, к слову, связанных с уже упомянутой неудачной GPIO/AFIO системой.

Но, в целом, пользоваться можно.

Re: STM32 новичку в ARM что к чему

Ср фев 19, 2020 22:35:36

Чем уж так плох STM32F103? Я знаю, что DMA у новых семейств более быстрый, а что ещё, какие у него недостатки?

Просто скопирую свой старый пост касательно сравнения 48-ми пиновых F103 и F072:
... порты старые, подтяжки доступны не во всех режимах, меньше гибкости в плане привязки периферии к конкретным пинах и эти порты медленные. USB также без подтяжки, буфер в 2 раза меньше, без кварца USB не работает, одновременно с CAN тоже, разгон с USB недоступен. I2C старый и просто неудачный, USART/SPI старые, USART-ов еще и на 1 меньше, ADC старый, но 2 канала, RTC - просто счетчик, таймеров всего 4 против 9, 32-х таймеров нет, CEC нет, DAC нет, емкостных каналов нет, компараторов нет, DFU нет.

Хотя учитывая цены F1 вполне можно сравнивать и с F3, у которого FPU, быстрые ADC, ОУ и т.д.... А если цены не особо учитывать, то не нужно забывать, что для F0/F3 уже выкатили замену в лице G0/G4.

ps. Однако если использовать HAL/SPL и т.д., то обо всех этих отличиях можно и не подозревать...
Ответить