Перейти к содержанию

stm32f4 как настроить шим


Ivan Rusev

Рекомендуемые сообщения

02.06.2020 в 16:58, BARS_ сказал:

0x55500000;

Ваши коллеги меня опустили на самое дно.Хотя в нете много мусора.Что тут плохого .Я любитель.У вас 10-20 лет стажа.Не судите ибо вы судимы будете.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

40 минут назад, Ivan Rusev сказал:

И этот бред мне дал понять как нужно.

Что нужно? Нужно прочесть учебник по Си? Конечно нужно, без этого никак.

 

42 минуты назад, Ivan Rusev сказал:

Контроллерами 5 с половиной год занимаюсь.С stm32 даже года не будет.

Ну нельзя же 5 лет программить контроллеры и до сих пор не выучить Си. Разве что все 5 лет был ассемблер.

 

43 минуты назад, Ivan Rusev сказал:

Такой настройки я не видел.

Еще бы. Нафиг писать простыню кода, когда все решается короткой строкой? Ведь все просто. Имеем два регистра AFRL. Каждый отвечает за настройку 8 пинов порта:

image.png.dfe4520b5560ed5134e8b9de1cad90df.png

Каждые 4 бита - настройка одного пина. Т.е. в записи

GPIOA->AFR[0] |= 0x55500000;

каждая цифра = настройка одного пина. Конкретно тут настраиваются пины А5, А6, А7. Пины с 8 по 15 лежат в AFR[1]. Причем в такой записи сразу ясно, что записано в настройку пина, ибо эта циферка бьется с таблицей из даташита:

image.png.689b6d9053c82837474e86e15e602fe4.png

 

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Ну не умеет он, ему готовая функция нужна...

https://bitbucket.org/AVI-crak/rtos-cortex-m3-gcc/src/default/

Файлы gpio_one.h - заметить сточку /#include "GPIO_ONE32F746BG.h"/ и один нужный вам из каталога gpio_one_all. Для f412rg - там точно есть файл.

Использовать - gpio_one_pin(zap_gpio. - а дальше будет подсказка.

Ошибиться невозможно, протупить тоже, если в автоподстановке нет нужного вам варианта - значит чип это безобразие не поддерживает. Конечный вариант выглядит примерно так:

    /// SPI4
    gpio_one_pin(zap_gpio.E.pin02.v_af05_spi4_sck.speed4.pull_up.lock_on);             /// spi4_sck
    gpio_one_pin(zap_gpio.E.pin04.out.speed4.lock_on);                                 /// spi4_nss
    gpio_one_pin(zap_gpio.E.pin05.v_af05_spi4_miso.speed4.pull_up.lock_on);            /// spi4-mo
    gpio_one_pin(zap_gpio.E.pin06.v_af05_spi4_mosi.speed4.pull_up.lock_on);            /// spi4_mi
    gpio_one_pin(zap_gpio.A.pin00.analog.lock_on);                                      /// adc1-0 - PA0. 43
    gpio_one_pin(zap_gpio.A.pin03.analog.lock_on);                                      /// adc2-2 - PA3. 50
    gpio_one_pin(zap_gpio.C.pin03.analog.lock_on);                                      /// adc3-13 - PC3. 38

 

Изменено пользователем AVI-crak Home
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Си не Си .В каждом контролере  свои регистры.Были AVR.Ci тут не причём.В обьектном программировании тоже СИ но  другой немного.

Stm32 не AVR.

Ссылка на комментарий
Поделиться на другие сайты

4 минуты назад, Ivan Rusev сказал:

В каждом контролере  свои регистры

При чем тут регистры? Речь именно и Си. У него обращение к регистрам абсолютно одинаковое везде. Так что в STM и AVR Си абсолютно одинаковый. Да и принципы работы желез тоже, как и у всех МК.

 

6 минут назад, Ivan Rusev сказал:

Stm32 не AVR.

Ты не поверишь, я тоже начинал с AVR, а потом спокойной перешел на STM. По крайней мере с базовым функционалом, типа прерываний таймеров, портов, SPI проблем вообще не было. Наоборот, у STM куда проще и логичнее настройка.

Ссылка на комментарий
Поделиться на другие сайты

@BARS_ тут у тебя случайно нет ошибки?  (нету проверил)

GPIOA->OTYPER &= ~GPIO_OTYPER_OT_5 & ~GPIO_OTYPER_OT_6 & ~GPIO_OTYPER_OT_7;

как по мне так нагляднее:

GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_5 | GPIO_OTYPER_OT_6 | GPIO_OTYPER_OT_7);

 

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Тоже неплохой вариант, ещё и запись короче. Но так в принципе удобно настраивать, когда пиров штук 5. А если надо целый порт настроить, то я просто числами пишу и все.

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, AVI-crak Home сказал:

Ну не умеет он, ему готовая функция нужна...

https://bitbucket.org/AVI-crak/rtos-cortex-m3-gcc/src/default/

Файлы gpio_one.h - заметить сточку /#include "GPIO_ONE32F746BG.h"/ и один нужный вам из каталога gpio_one_all. Для f412rg - там точно есть файл.

Использовать - gpio_one_pin(zap_gpio. - а дальше будет подсказка.

Ошибиться невозможно, протупить тоже, если в автоподстановке нет нужного вам варианта - значит чип это безобразие не поддерживает. Конечный вариант выглядит примерно так:


    /// SPI4
    gpio_one_pin(zap_gpio.E.pin02.v_af05_spi4_sck.speed4.pull_up.lock_on);             /// spi4_sck
    gpio_one_pin(zap_gpio.E.pin04.out.speed4.lock_on);                                 /// spi4_nss
    gpio_one_pin(zap_gpio.E.pin05.v_af05_spi4_miso.speed4.pull_up.lock_on);            /// spi4-mo
    gpio_one_pin(zap_gpio.E.pin06.v_af05_spi4_mosi.speed4.pull_up.lock_on);            /// spi4_mi
    gpio_one_pin(zap_gpio.A.pin00.analog.lock_on);                                      /// adc1-0 - PA0. 43
    gpio_one_pin(zap_gpio.A.pin03.analog.lock_on);                                      /// adc2-2 - PA3. 50
    gpio_one_pin(zap_gpio.C.pin03.analog.lock_on);                                      /// adc3-13 - PC3. 38

 

Надо же столько сношаться ради настройки пинов

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, MasterElectric сказал:

Надо же столько сношаться ради настройки пинов

Надо!!! Уже на третьем проекте с чипом в 200 ног - всякие GPIO_AFRL_AFRL1_1 и тому подобное, начинают дико бесить. Потом начинает бесить дма, чуть позже дма2д... Словом - бесит всё, что требует много раз открывать документацию.

 

Ссылка на комментарий
Поделиться на другие сайты

11 часов назад, AVI-crak Home сказал:

всякие GPIO_AFRL_AFRL1_1 и тому подобное, начинают дико бесить.

А на кой оно надо? Что мешает сделать так?

	GPIOB->MODER = 1<<30 | 1<<28 | 1<<26 | 1<<24 | 1<<22 | 1<<18 | 1<<16 | 1<<10 | 1<<8 | 1<<6 | 1<<2 | 1; // R_OUT7 - R_OUT3 | LED_L2_G | LED_L2_B | LED_S_R | LED_S_G | LED_S_B | RST_E1 | CS_E1
	GPIOB->OTYPER = 0;
	GPIOB->OSPEEDR = 3<<30 | 3<<28 | 3<<26 | 3<<24 | 3<<22 | 3<<18 | 3<<16 | 3<<10 | 3<<8 | 3<<6 | 3<<2 | 3;
	
	GPIOE->MODER = 1<<30 | 1<<28 | 1<<8 | 1<<6 | 1<<2 | 1; // R_OUT2 | R_OUT1 | LED_L1_R | LED_L1_G | LED_L1_B | LED_L2_R
	GPIOE->OTYPER = 0;
	GPIOE->OSPEEDR = 3<<30 | 3<<28 | 3<<8 | 3<<6 | 3<<2 | 3;

МК на 100 ног, задействованы все ноги. 

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, BARS_ сказал:

А на кой оно надо? Что мешает сделать так?

Это конечно здорово, но я так делал только один раз. Устройство должно было быстро стартовать, поэтому некогда было по одному пину настраивать.

В основном приходится настраивать по одному пину, потому что скорее всего будет очередное изменение разводки печатной платы и линия "кнопка А" может стать "светодиод 3" )))
А так у меня в отдельном файле находятся дефайны "#define LED1_PIN" и "#define LED1_PORT" и при изменении разводки, я их быстро и легко переопределяю. Но это мой частный случай. Не всем подойдет.

Ссылка на комментарий
Поделиться на другие сайты

51 минуту назад, LiVit сказал:

А так у меня в отдельном файле находятся дефайны "#define LED1_PIN" и "#define LED1_PORT"

Аналогично, все ноги по максимумы вынесены в дефайны. Аналогично с SPI и прочими интерфейсами.  Для запуска либы на любом SPI достаточно пару дефайнов сменить.

Ссылка на комментарий
Поделиться на другие сайты

04.06.2020 в 17:56, BARS_ сказал:

При чем тут регистры? Речь именно и Си. У него обращение к регистрам абсолютно одинаковое везде. Так что в STM и AVR Си абсолютно одинаковый. Да и принципы работы желез тоже, как и у всех МК.

 

Ты не поверишь, я тоже начинал с AVR, а потом спокойной перешел на STM. По крайней мере с базовым функционалом, типа прерываний таймеров, портов, SPI проблем вообще не было. Наоборот, у STM куда проще и логичнее настройка.

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

Ссылка на комментарий
Поделиться на другие сайты

55 минут назад, Ivan Rusev сказал:

Наверное ты прав.Но структура команд разная

Вот так вот, коллеги.
Структура команд в сях зависит от типа микроконтроллера.:clapping:
Это что-то новенькое.
Жду дальнейших перлов. 

 

Иван, я с AVR дела не имел. Писал под 8051, PIC12, PIC18, некоторые мелкие NEC микроконтроллеры. Но, право слово, такого никогда не было, чтобы структура команд Си была зависима от процессора.

Там есть некоторые моменты с Little/Big endian, но не со структурой команд.

Конечно, я понял что ты имел в виду настройку микроконтроллера - периферию, тактирование. Но блин.... учись писать грамотно. 

Хотя о чем я....

Изменено пользователем LiVit
Ссылка на комментарий
Поделиться на другие сайты

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LiVit сказал:

Вот так вот, коллеги.
Структура команд в сях зависит от типа микроконтроллера.:clapping:
Это что-то новенькое.
Жду дальнейших перлов. 

 

Иван, я с AVR дела не имел. Писал под 8051, PIC12, PIC18, некоторые мелкие NEC микроконтроллеры. Но, право слово, такого никогда не было, чтобы структура команд Си была зависима от процессора.

Там есть некоторые моменты с Little/Big endian, но не со структурой команд.

Конечно, я понял что ты имел в виду настройку микроконтроллера - периферию, тактирование. Но блин.... учись писать грамотно. 

Хотя о чем я....

В AVR всё  проще и понятнее.В STM нужно предугадывать.Уметь читать  и настройка периферии сложнее.Извените я не русский.Даже не славяьянин.Понял учител

1 минуту назад, BARS_ сказал:

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Неправда.Настройка периферии отличается.В корне.

Вы учителя.А я не учител.Даже кухарка может управлять страной.Только нужно её научить.Дать информацию.Я мало знаю.Хотел бы больше.

Ссылка на комментарий
Поделиться на другие сайты

Ясен пень, что надо читать и разбираться. Это везде так. А про настройку нечего сказки рассказывать. Отличия лишь в названии битов в регистрах. Принцип работы и настройки один в один.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, BARS_ сказал:

Какая ещё структура команд? Да на сях ты её вообще не касаешься. А настройки простейшей периферии, типа gpio, spi, таймеров, мало чем отличаются от любого другого мк, включая avr. А тактирование включить много ума не надо, тупо строка кода.

Не, ну как... сначала пишем for, а потом в скобочках задаем условия. Это не оно? ))))

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, Ivan Rusev сказал:

В AVR всё  проще и понятнее.В STM нужно предугадывать.Уметь читать  и настройка периферии сложнее.Извените я не русский.Даже не славяьянин.Понял учител

Неправда.Настройка периферии отличается.В корне.

Вы учителя.А я не учител.Даже кухарка может управлять страной.Только нужно её научить.Дать информацию.Я мало знаю.Хотел бы больше.

1.  Нет никакой разницы какая национальность. В прошлом году я мексиканцу помогал. Он вполне грамотно излагал мысли, не смотря на то, что он не профессионал а любитель.
2. Тебе не нравится, что тебя учат? Какого лешего тогда спрашиваешь совета?
3. Настройки периферии везде разные. Даже в разных сериях микроконтроллеров одного производителя. И что? Есть даташит, референс мануал - называй как хочешь. Там всё прописано. Как настраивать и зачем. Хочешь обойтись без этого? Юзай ардуину.
4. Мы не учителя. Мы просто хорошо знаем свое дело. И можем объяснить, если спрашивающий адекватен. И вообще, научить невозможно. Можно только научиться. А для этого необходимо прилагать усилия.
5. Вот дословно то, что говорил Ленин:

Цитата

 

из статьи «Удержат ли большевики государственную власть?» (1917) В. И.Ленина

«Мы не утописты. Мы знаем, что любой чернорабочий и любая кухарка не способны сейчас вступить в управление государством.. Но мы […] требуем немедленного разрыва с тем предрассудком, будто управлять государством, нести будничную, ежедневную работу управления в состоянии только богатые или из богатых семей взятые чиновники. Мы требуем, чтобы обучение делу государственного управления велось сознательными рабочими и солдатами и чтобы начато было оно немедленно, т. е. к обучению этому немедленно начали привлекать всех трудящихся, всю бедноту»).

 

Понятно? Тут Ленин говорил то, что надо учиться.

А вот с информацией проблем нет. Сейчас 2020 год, не 2000. В инете есть почти всё, а уж того что тебе надо - больше чем достаточно. Поэтому тут не любят вопросы типа "а как мне включить тактирование порта С? Мне чо-та лень искать...."

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, LiVit сказал:

Это не оно?

Дык это стандартно для любого МК с написанием ПО на сях...

 

1 час назад, LiVit сказал:

Настройки периферии везде разные.

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

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, BARS_ сказал:

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

Ну, в 030 серии и в 10x они таки немножечко разные. Я про GPIO.

А так да - чувак какую-то ахинею несет.

Вообще не понятно, как он до сих пор занимался какими-то микроконтроллерами.

Ой, да ну его. Я его в игнор-лист отправил.

Ссылка на комментарий
Поделиться на другие сайты

21 час назад, LiVit сказал:

Ну, в 030 серии и в 10x они таки немножечко разные. Я про GPIO.

А так да - чувак какую-то ахинею несет.

Вообще не понятно, как он до сих пор занимался какими-то микроконтроллерами.

Ой, да ну его. Я его в игнор-лист отправил.

кортекс м3 кортекс м 4 разные не только настролйка портов а и настройка ацп и альтернативную функцию а также настройку тактирования. а в серии о30 настройка ацп вооще другая.Какая ахинея.??Я занимаюсь потому что я любитель.Никто  не запретит мне заниматься.Не боги обжигали горшки.

 

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, Ivan Rusev сказал:

кортекс м3 кортекс м 4 разные не только настролйка портов а и настройка ацп и альтернативную функцию а также настройку тактирования. а в серии о30 настройка ацп вооще другая

Какая другая? Для тебя дргуая = другое название битов в регистрах? Ну ты бы взял и сравнил оба даташита. Принципы и порядок настройки один в один. Для порта - вывод вход или выход - альтернативный, не альтернативный - скорость. И это есть во всех сериях STM. Что тут разного? И так для ВСЕЙ периферии.

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • сила притяжения, развиваемая соленоидом прямо зависит от тока. Если постоянно не нужна максимальная сила притяжения, то можно при помощи ШИМ уменьшить ток соленоида. Но это не точно ))
    • @READART Конкретно с LOGO не сталкивался, но у всех других, с кем сталкивался, программа всегда лежала во флеше. Да и хранить именно програмный код в энегозависимой памяти просто нелогично. Ионистор, скорее, может использоваться для отработки отключения питания, что-бы программа штатно могла завершиться, сохранив свое состояние.
    • А тема офигенно интересная. Рассуждать логически, в варианте А в среднем проводнике тока вообще практически нет и он нафиг не нужен. Во втором варианте по этим двум проводникам фигачит полный ток туда и обратно. Если хорошо свить, то по помехам одно...нно, только омические потери.  Дальше однозначного понимания у меня тоже нет. Я не выдающийся математик, мне нужен эксперимент. Например попробовать разорвать средний провод. Посмотреть куда подключены остальные цепи. Возможно у БЖТ асимметрия. Посмотреть как идут крайние провода обмотки, возможно раздвоенный средний компенсировал помеху от крайних.  ......  Не надо в подушку плакать, просто не нужно лезть с сегнетоэлектрикой в (калашный) звуковой ряд. Только не забывать про тоненькие дорожки к ним на ПП, если вдруг их приходится делать, или дилетанты наделали. А так да, отсутствие выводов большой плюс. Особенно когда занимаешься полосковой технологией.
    • Да схема самая обычная, без всяких пиэфси . Вот примерная.  Но блочок все равно не заработал, при превышении нагрузки 50 ватт происходит перекос плечей и выброс. В одной клетке 50 вольт. Получается на одном плече 200 на другом 150.
    • @1960sae "Собирал когда то такой конструктор, запустился сразу....". блин. не могу управится с ним. все проверил. нашел пробитый конденсатор, поменял. питание от адаптера сделал 7,3в. регулятор четко 5,05 в держит. на ногах пика питание есть, на всех ногах тоже какая то напруга есть. ниче не греется, транзы холодные. но не работает и все. когда щупами проверял по выводам пика моргнули индикаторы один раз и все. осцилла нет. ума не приложу, интернет рою. пока нифига не смог победить. что смущает: по схеме (я выше здесь выложил) 8 резисторов (на индикаторы идут) по 220 ом, а в наборе они по 1 кОм (я их впаял).  может по прошивке другая частота запуска прописана, может с кварцем что не так. опыта не хватает, конечно, сообразить, куда рыть. буду перебором
    • Кто сказал? Откуда такие знания? Опишите механизм появления искаженного звука. Точно не надо.
×
×
  • Создать...