Зачем вы так хардкодите задержку тактами? Это очень плохо и нельзя так учить в уроках. Ваш код будет не правильно работать на разных частотах. Тем более что в микроконтроллере есть RTC часы реального времени, то есть уже готовый таймер.
Это один из вариантов, он не самый лучший, но для начинающих так понятнее, в более поздних уроках, особенно там, где важно процессорное время, мы конечно так делать не будем. А RTC не имеет смысл подключать для бегущих огней. Это серьёзная периферия и она создавалась не совсем для этого. Достаточно таймеров вполне.
@@НиколайКрасиков-ы8й Тоже самое было, помог комент vadoooos сверху: пкм по "target 1" ==> Options ==> вкладка "C/C++ (AC6)" ==> Слева ищи "Optimization" и выбирай -О 0. Потом пересобрать проект и все заработает
повторил код до места где просто лампочки по кругу идут(в итоге горят зелёный, красный и оранжевый светодиод, а должны меняться по кругу). Вообще не понятно где ошибка
@@smidani8132 Оптимизация решает несколько задач, одна из них это ускорение выполнения кода за счет того что компилятор включает свои "мозги" и корректирует код на свое усмотрение.
+Дмитрий Попов Это на первых занятиях только. Затем будет конечно в отдельных файлах. В хедерах только дефайны, инклуды и прототипы. Сейчас суть не в этом. Ну и как раз мы увидим, что если функцию написать в заголовочном файле, то она также будет работать. Где-то с 4го занятия я конечно все вынесу уже в одноименные си-файлы. Ну и загромождать main.c я тоже не сторонник. Только вызов функций инициализации и бесконечный цикл.
Даже не знаю сколь велика будет серия. Это как загуляется. Зависит от моей фантазии, от наличия времени и различных компонентов. Все что в моих силах, сделаю.
Если мне нужно инициализировать только PIN9 порта Е например в output и не инициализировать остальные пины этого порта, то выглядит это так: GPIOE->MODER |= 1
20 лет назад видел такого учителя - "давайте напишем так, а нет, вот так,Раз и переключил". И так постоянно, больше похоже на запутывание, чем на обучение.
Спасибо за уроки, сейчас вспоминаю STM32. Когда-то давно баловался с SPL, сейчас придется привыкать к HAL. Поэтому Ваше видео как нельзя к стати. Странно, что у Вас не работают подсказки в Keil, у меня 5.2 и все отлично. Выбор появляется после 3-го введенного символа.
С дефайнами не очень понял. Изначально в соответствующий регистр прописывали нужное двоичное число (представленное правда в шестнадцатиричной форме) типа GPIOD->ODR = 0xC000; теперь мы с помощью дефайнов, как я понимаю, заменяем идентифиры типа PORTD0, PORTD1...итд на токены 1,2,3...и т д. затем в основной программе вместо шестнадцатиричного числа подставляем идентифир (например PORT12) и совершаем битовый сдвиг влево. Как при этом в регистре оказывается нужное двоичное число непонятно. Может подскажете куда глянуть?
я конечно самый первый крикун что кейл гавно полное, но даже мне кажется что отсутствие интелли сенса вроде полнейший зашквар уже... всё таки мне кажется должна быть подсказка иначе совсем непонятно как работать то в нём ))
Ошибки нет никакой. Просто я не понял как ваш код работает. как я понял #define PORTD12 12 #define PORTD13 13 Это замена идентификаторов PORTD12 и PORTD13 на числа 12 и 13 соответственно. затем GPIOD->ODR = (1
В любом stm32 есть RTC который может запитываться от батарейки, причем запитывается не только сам RTC, но и некоторая часть SRAM и некоторые регистры (количество зависит от вашей модели микроконтроллера), так вот эти ячейки памяти вы можете использовать для хранения каких-то переменных или настроек.
Спасибо! играю с stm32F429i discovery, полдня пытался понять почему лампочки не моргают, в итоге программа обновляется только после нажатия ресета... ))) А в Си нет встроенного delay? кажется когда-то в студенчестве она была...
Все работает отлично. Я не уничтожал код а его копировал и добавлял. В результате еще веселее смотрится программа и возможность разных вариантов включения порта. В последнем коде светодиоды загораются по часовой стрелке и против. Немного неточность в конце урока.
у вас при запуске сборки почему-то пересобираются файлы Сишные, которые не менялись!!! КАЖДЫЙ РАЗ!!! это "фича" такая у кейла что ли? или что-то в компиляторе неправильно настроено??
Здравтсвуйте! Смотрите уроки по программированию на СИ. Как раз мы недавно выводили в консоль различные типы данных. Диапазон int: от -2147483648 до 2147483647.
А может есть материалы по 16тиричным числам для 32 разрядных процессоров ? то я не пойму в видео для меня как колдовство эти цифры мои команды по включению пинов выглядят так GPIOC ->ODR|=(1
Здравствуйте! Ну, отдельно именно на эту плату нет. Но с использованием есть. практически все последние уроки по LAN-модулю ENC28J60 выходят с использованием именно такой платы. Просто дело в том, что чем сложнее уроки, тем более не важным становится, какой именно контроллер и какую плату мы используем в уроке.
Уже просмотрел ваши уроки по Кубу. И немного разочаровало меня происшествие с FreeRTOS. Выходит МК и операционка не поддерживают аппаратную многозадачность, а сделано банально на ручном переключение между задачами. Вам приходило в голову сделать хотя бы по таймеру переключение между задачами?
Ну это же не процессор с модулем виртуальной памяти и с несколькими раздельными ядрами. Уже и так хорошо. Раньше мы и об этом лет 20 назад мечтать не могли, когда работали с контроллерами. А в голову мою много чего приходит. И стараюсь её сразу освобождать, делясь всеми этими мыслями с вами.
Применив этот первый код. Диоды горят все вместе не в полную силу(синий горит слабее всех), только после нажатия черной кнопки. До этого работал на micropython подключал датчик. Флеш-память очистил. Подскажите кто-нибудь, что может быть не так? Еще при отдельном зажигании диодов. Не горит красный диод. Вместо него загораентся зеленый.
Тоже не могу понять светодиоды горят тускло синий всех слабее горит. Что сделать чтобы исправить? не могу понять. По урокам вроде все хорошо, но пол урока ползать по папкам копировать и прочее это сбивает.
К регистрам периферии (порт ввода-вывода) можно обращаться через адрес напрямую, тогда код будет непонятным, из звездочек скобочек и магических чисел. Это как писать адрес проживания через GPS координаты. А можно косвенно, с помощью структуры, тогда адрес будет вычислен от базового через несколько шагов, зато код будет ясный и понятный (город/улица/дом/кв). Структура для каждого типа периферии своя, у stm эти структуры описаны в общем *.h файле на каждый МК.