Всем привет. Мы продолжаем свой цикл публикаций о постройке
квадрокоптера. В прошлой статье мы рассказали о подготовке проекта, поиске о
заказе необходимых деталей.
Платы нам пришли, детали из Китая идут полным ходом
(надеюсь, идут туда, куда, нужно), пора писать новую статью. В этой статье – начальное
описание платы STM32f3discovery, установка необходимого ПО для работы с STM32F3discovery, и первая программа – для перемигивания огоньков.
STM32 – что это?
(Информация ниже представляет собой перевод страницы официального сайта, пользовательского руководства и других документов. Ставим ©. 4-copter.blogspot.ru – скажем нет плагиату!)
Официальная информация.
STM32f3discovery включает в себя все
необходимое для начинающих и опытных пользователей, позволяя не тратить время на ненужные распайку и подключение и решительно приступить
к работе.
Построенная на основе STM32F303VCT6, плата включает в себя
встроенный инструмент отладки ST-LINK/V2, акселерометр, гироскоп, электронный
компас ST MEMS, USB-разъем, светодиоды и кнопки.
Полезные документы - user manual (схемы подключения, архитектура), programming manual (как и что программировать), reference manual, datasheet на чип stm32f303vc.
В нашем проекте понадобятся
- трехосевой MEMS-гироскоп с цифровым выходом L3GD20;
- МЭМС e-Compass с трехосевым акселерометром и трехосевым магнитным датчиком LSM303DLHC.
CooCox
Мы пользуемся средой программирования CocCox, скачать здесь (напрямую) или здесь (через CoCenter).
Дополнительно надо скачать и установить драйвер ST-LINK/V2.
Еще дополнительно - GCC (о да!).
Среда довольно приятная, есть много удобных фич, упрощающих нашу заполненную стрессами жизнь.
Испортим дефолтную прошивку.
Попробуем написать первую прогу. Пусть светодиоды завораживающе загораются.
Открываем CoIDE, идем Project -> New Project.
Придумываем имя проекта. Жмем далее
Здесь мастер предложит выбрать, под что будет создаваться программа - под конкретную плату или под чип. В случае с STM32f3discovery - выбираем chip. Далее.
Выбираем ST->STM32F303->STM32F303VC. Финиш.
Подключаем необходимые библиотеки - библиотеки работы с периферией RCC, библиотека работы с портами GPIO, остальные нужные библиотеки подключатся сами.
На плате есть светодиоды LD1 - LD10. LD1 и LD2 - системные, а LD3-LD10 можно помигать.
На этом рисунке - в нижней части в белом круге.
Они как бы подсоединены к выводам платы (которые по бокам), на discovery-плате это реализовано внутрисхемно.
Так, надо узнать - к каким выводам.
Лезем в user manual. Ищем подпункт LED's и видим:
Т.е, LED'ы подцеплены к порту E на выводы 8-15. Отлично.
Открываем main.c и пишем такой код:
//подключаем библиотеки
#include "stm32f30x_gpio.h"
#include "stm32f30x_rcc.h"
#include "stm32f30x.h"
#define DELAY_TIME 1000000
//Инициализация светодиодов (настройка порта на вывод информации)
void initGPIOE()
{
GPIO_InitTypeDef gpio; //структура для инициализации порта
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE, ENABLE); //включаем тактирование
//заполняем структуру
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_8 | GPIO_Pin_10 | GPIO_Pin_15 | GPIO_Pin_11 | GPIO_Pin_14 | GPIO_Pin_12 | GPIO_Pin_13| GPIO_Pin_8;
//инициализируем порт
GPIO_Init(GPIOE, &gpio);
}
//Функция задержки времени
void simpleDelay(unsigned int delayTime)
{
unsigned int i;
for (i = 0; i < delayTime; i++);
}
int main(void)
{
initGPIOE();
while(1)
{
GPIO_SetBits(GPIOE, GPIO_Pin_9); //посылаем на вывод 1 - светодиод загорается
simpleDelay(DELAY_TIME); //ждем
GPIO_SetBits(GPIOE, GPIO_Pin_10); //загорается следующий
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_11);
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_12);
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_13);
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_14);
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_15);
simpleDelay(DELAY_TIME);
GPIO_SetBits(GPIOE, GPIO_Pin_8);
simpleDelay(DELAY_TIME);
GPIO_ResetBits(GPIOE, GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 |
GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15 | GPIO_Pin_8); //сбрасываем выводы - диоды гаснут
}
}
Описание функций можно найти в библиотеках GPIO и RCC.Должно заработать. Все, пока. В следующий раз - подключение акселерометра-компаса-гироскопа.









Комментариев нет:
Отправить комментарий