Similar presentations:
этап 1. программирование blue pill
1.
Работа с IntrosatЭтап 1
Программирование blue pill
Распиновка
STM32F103
Подключение через
программатор
Проверка работы
Arduino IDE
Мигание
светодиодом
По завершению первого этапа мы подключим плату blue pill к
компьютеру и напишем прошивку, использующую
конструкцию for для плавного мигания светодиодом
Изучение конструкции FOR
Финальное задание
2.
Распиновка STM32F1033.
Контакты, с которыми мы будем работатьGPIO
GPIO (General Purpose
Input-Output) — это
выводы общего
назначения, выводы
микроконтроллера,
доступные для
прямого управления.
4.
Подключение программатора• Научиться передавать данный на микроконтроллер STM-32 с
помощью интерфейса ST-LINK.
• Написать программу мигания расположенного на плате контроллера
светодиода PIN13.
ПРОГРАММАТОР ST-LINK
ПЛАТА
МИКРОКОНТРОЛЛЕРА
«BLUE-PILL»
СОЕДИНИТЕЛЬНЫЕ
ПРОВОДА «МАМА-МАМА»
4 ШТУКИ
5.
Подключение BluePill к программатору ST-LinkSWCLK -> CLK
SWDIO -> DIO
GND -> GND
3.3 V -> 3.3 V
GND
CLK
DIO
3.3V
6.
Настройте Arduino IDE7.
Настройте Arduino IDE8.
Настройте Arduino IDE9.
Основы Wiring (диалект C++)Любой новый скетч создается вместе с двумя секциями.
Рассмотрим первую. Setup - это настройка оборудования. На
распиновке платы можно заметить, что к контакту 13 подключен
светодиод. Чтобы иметь возможность включать и выключать его,
нужно настроить этот контакт как output, т.е. выход
void setup() {
pinMode(PB13, OUTPUT);
}
10.
Основы Wiring (диалект C++)Функция pinMode() в Arduino IDE устанавливает режим работы заданного
входа/выхода (пина) как входа или как выхода.
Синтаксис: pinMode(pin, mode).
Параметры:
• pin: номер вход/выхода (пина), который нужно установить.
• mode: режим (одно из двух значений — INPUT или OUTPUT, устанавливает на вход или
выход соответственно).
Некоторые режимы:
• OUTPUT (порт работает как выход) — пин становится управляемым источником
питания с максимальным током 40 мА. В зависимости от команды digitalWrite() пин
принимает значение единицы или нуля.
• INPUT (порт работает как вход) — пин в этом режиме считывает данные с аналоговых
и цифровых датчиков, состояния кнопок. Порт находится в высокоимпедансном
состоянии, то есть у пина высокое сопротивление.
11.
Основы Wiring (диалект C++)Команда digitalWrite() в Arduino используется для управления
цифровыми выводами микроконтроллера.
Она позволяет определить логическое состояние цифрового вывода, установив для
него значение HIGH (5 Вольт) или LOW (0 Вольт).
Синтаксис команды: digitalWrite (pin, value).
Параметры:
• pin — номер цифрового вывода, которым нужно управлять;
• value — логическое состояние вывода (HIGH или LOW).
Перед использованием команды digitalWrite следует установить режим работы порта
с помощью команды pinMode() как OUTPUT, иначе светодиод может гореть тускло.
Пример использования: с помощью команды digitalWrite можно, например, мигать
светодиодами от цифровых портов или управлять другими устройствами, подавая на
них логический ноль (LOW) или единицу (HIGH).
12.
Основы Wiring (диалект C++)Loop - это петля, то есть секция кода, которая будет постоянно
повторять команды по очереди, пока не дойдет до конца петли
и тогда все повторится заново. Попробуем включить и
выключить светодиод с помощью функции digitalWrite()
внутри которой нужно указать номер контакта и
состояние (HIGH или LOW).
void loop() {
digitalWrite(PB13, LOW);
}
13.
Основы Wiring (диалект C++)Команда delay() в Arduino останавливает выполнение программы
на заданное количество миллисекунд (1000 миллисекунд в 1
секунде).
Синтаксис: delay(ms).
Параметр ms — количество миллисекунд, на которое приостанавливается
выполнение программы (тип данных — unsigned long).
Команда delayMicroseconds( ) останавливает выполнение программы
на заданное количество микросекунд
(в 1 секунде 1 000 000 микросекунд).
Максимальное значение команды — 16 383, что равно 16 миллисекундам.
Разрешение равно 4, то есть число будет всегда кратно четырём.
14.
Основы Wiring (диалект C++)Loop - это петля, то есть секция кода, которая будет постоянно
повторять команды по очереди, пока не дойдет до конца петли
и тогда все повторится заново. Попробуем включить и
выключить светодиод с помощью функции digitalWrite()
внутри которой нужно указать номер контакта и
состояние (HIGH или LOW). Добавим задержку с
помощью функции delay(), где нужно указать время в
миллисекундах и помигаем светодиодом
void loop() {
digitalWrite(PB13, HIGH);
delay(1000);
digitalWrite(PB13, LOW);
delay(1000);
}
15.
Основы Wiring (диалект C++)Компиляция кода перед загрузкой.
Проверяется на синтаксические
ошибки, переводится в массив из 0 и 1
и собирается определённым образом.
ЗАГРУЗКА
• Передача кода на ядро
микроконтроллера по
интерфейсу
• Код записывается в память
микроконтроллера.
16.
Основы Wiring (диалект C++)Повторим основные моменты:
Функции Arduino:
pinMode(pin, mode)
digitalWrite(pin, value)
delay(1000)
Номера пинов:
PA11, PC13, …
Режимы работы пинов:
INPUT, OUTPUT,…
Сигнал, который можно подать на цифровой пин:
HIGH, LOW
Аргумент функции delay():
число в миллисекундах
17.
Основы Wiring (диалект C++)Измените значение delay() и сделайте мигание светодиода более частым
Помните, что:
в конце каждой строчки кода, кроме тех, что начинаются с #, ставится ;
блоки программы выделяются фигурными скобками { }
функция setup() выполняется один раз
функция loop() бесконечно зациклена
язык чувствителен к регистру: b и B - разные переменные
18.
Конструкция forИтоговое задание: сделать мигание светодиода изменяющимся во
времени, начинающим с большими задержками (2 секунды), плавно
уменьшающимся до 100 миллисекунд и так же возвращающимся к
исходным
Для этого понадобится конструкция for:
for (инициализация; условие; изменение) {
// тело цикла
}
Инициализация - исходный параметр, например переменная i будет равна 0
int i = 0
Условие - пока i будет меньше или равна 10
Изменение - шаг изменения переменной i, пусть увеличивается на 1
В таком случае for повторит десять раз то, что будет в теле цикла
i <= 10
i=i+1
19.
Конструкция forvoid loop() {
for (int i = 0; i <= 255; i++) {
delay(100);
}
}
Помните, что:
в конце каждой строчки кода, кроме тех, что
начинаются с #, ставится ;
блоки программы выделяются фигурными скобками { }
функция setup() выполняется один раз
функция loop() бесконечно зациклена
язык чувствителен к регистру: b и B - разные
переменные
electronics