Jump to content
Ivan Rusev

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

Recommended Posts

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

0x55500000;

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

Share this post


Link to post
Share on other sites
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

 

Share this post


Link to post
Share on other sites

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

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

 

Edited by AVI-crak Home

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Экономичные решения МЕAN WELL для надежных разработок» (30.09.2021)

Компания Компэл приглашает 30 сентября на вебинар посвященный экономичным решениям МЕAN WELL. На вебинаре мы рассмотрим, как решения MEAN WELL позволяют сэкономить при выборе недорогого источника питания. Будут представлены основные группы источников питания по конструктивным признакам и по областям применения в контексте их стоимости или их особенностей, позволяющих снизить затраты на электропитание конечного устройства.
Подробнее

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

Stm32 не AVR.

Share this post


Link to post
Share on other sites

Модульные RJ-соединители KLS — масштабное пополнение склада Компэл

Продуктовая линейка компании KLS на складе Компэл пополнилась модульными соединителями типа RJ. Ассортимент представлен неэкранированными соединителями RJ11, RJ12 и RJ45 для построения базовых информационных сетей, а также экранированными RJ45 с трансформатором для реализации систем передачи данных между узлами ЛВС.

Подробнее

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

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

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

 

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

Stm32 не AVR.

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

Share this post


Link to post
Share on other sites

Вебинар «Microchip и современный подход к искусственному интеллекту. Разворачиваем нейронную сеть на 32-битном микроконтроллере» (13.10.2021)

Приглашаем всех желающих 13 октября 2021 г. посетить вебинар, посвященный искусственному интеллекту, машинному обучению и решениям для их реализации от Microchip. Современные среды для глубинного обучения нейронных сетей позволяют без детального изучения предмета развернуть искусственную нейронную сеть (ANN) не только на производительных микропроцессорах и ПЛИС, но и на 32-битных микроконтроллерах. А благодаря широкому портфолио Microchip, включающему в себя диапазон компонентов от микроконтроллеров и датчиков до ПЛИС, средств скоростной передачи и хранения информации, возможно решить весь спектр задач, возникающий при обучении, верификации и развёртывании модели ANN.
Подробнее

@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);

 

Edited by MasterElectric

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

 

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

Share this post


Link to post
Share on other sites
1 час назад, MasterElectric сказал:

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

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

 

Share this post


Link to post
Share on other sites
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 ног, задействованы все ноги. 

Share this post


Link to post
Share on other sites
1 час назад, BARS_ сказал:

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

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

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

Share this post


Link to post
Share on other sites
51 минуту назад, LiVit сказал:

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

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

Share this post


Link to post
Share on other sites
04.06.2020 в 17:56, BARS_ сказал:

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

 

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

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

Share this post


Link to post
Share on other sites
55 минут назад, Ivan Rusev сказал:

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

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

 

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

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

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

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

Edited by LiVit

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 час назад, LiVit сказал:

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

 

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

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
16 часов назад, BARS_ сказал:

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

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

Share this post


Link to post
Share on other sites
16 часов назад, Ivan Rusev сказал:

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

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

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

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

Цитата

 

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

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

 

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

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

Share this post


Link to post
Share on other sites
1 час назад, LiVit сказал:

Это не оно?

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

 

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

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

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

Share this post


Link to post
Share on other sites
3 часа назад, BARS_ сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
21 час назад, LiVit сказал:

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

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

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

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

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

 

Share this post


Link to post
Share on other sites
20 часов назад, Ivan Rusev сказал:

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

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

Share this post


Link to post
Share on other sites

@BARS_ какой толк с ним вести диалог если он не понимает где разное ядро, а где разные семейства МК. Просто это не его.

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...