пятница, 7 августа 2015 г.

Изучаем STM32. Урок 1. Работаем с CubeMX и CooCox IDE

Добрый вечер. Пока потянуло немного на писанину напишу ещё один урок. В данном уроке мы сконфигурируем наш микроконтроллер расположенный на плате Discovery, и помигаем светодиодом нажимая на кнопку.
Так как в одной записи нельзя вставить более 20 картинок. Урок будет разбит на части.
Итак. на нашей плате расположены 4 светодиода подключённые анодами к ножкам PD12,PD13,PD14,PD15
и кнопка подключена к выводу PA0. Причём кнопка при нажатии замыкается на +3.3В (напряжение питания).
Итак открываем программу STM32Cube MX и выбираем наш процессор который у нас есть. Далее будут картинки в последовательности и немного где нужно описания. Поэтому если где то что то не подписано, то просто действуйте согласно картинкам 
открываем КубеМХ 
Нажимаем — новый проект
  
выбираем в списке нужный нам контроллер
 
 
поваляется наш процессоор с подписанными ножками. Справа, у нас расположена вся периферия процессора. А нажимая на ножки на картинке, мы будем выбирать что это ножка должна делать.
Итак первым делаем настраиваем ножки PD12,PD13,PD14,PD15 на выход GPIO_Output

Далее нам нужно настроить ножку PA0 на вход -выбираем GPIO_Input
 
У нас получается вот такая картинка
 
тут у нас всё .
далее вверху переходим на вкладку Clock_Configuration, Она нам не нужна на данном этапе, просто посмотрите на схемку. Это система тактирования нашего процессора. В данном случае у нас идёт тактирование от внутреннего источника тактирования — HSI.
 
Далее переходим на вкладку Configuration
В этой вкладке настраиваются все параметры прерываний, таймеров, портов и так далее. В этом уроке нам нужно просто настроить порты ввода-вывода.
 
первым настроим порт вводка PA0. Настроим его безо всяких подтяжек, так как все подтяжки к питанию и массе у нас расположены в самой схеме.
 
Далее настраиваем порты вывода к которым подключены светодиоды.
В этом случае мы должны в выпадающем списке GPIO Pull_UP\PulL_Down — выбираем Pull_UP, так как нам нужно то на светодиод подавать напряжение, они то анодами подключены к контроллеру. Настраиваем так все наши 4 порта вывода.
 
Далее, ради интереса можем зайти в вкладку NVIC и посмотреть — в ней мы будем настраивать прерывания и т.д. в следующих проектах.
 
ну и вверху можем нажать на последнюю вкладку — Power Consumption Calculator. В этой вкладке мы можем рассчитывать параметры энергопотребления и т.д. Она нам пока не интересна.
 
Итак, далее мы должны настроить параметры экспорта нашего проекта. Вверху нажимаем кнопочку Project Settings и попадаем в вкладку настройки параметров
 
Выбираем экспорт в формате TrueStudio (кому нужно можно выбрать экспорт в Keil либо Iar)
Далее переходим в вкладку Code Generator, и в ней выбираем Copy only necesary library files
 
Ну собственно теперь нам осталось дать имя проекту и сделать экспорт. По окончанию экспорта, выскочит сообщение в котором мы можем открыть папку с нашим с генерированным проектом.На этом с CubeMX закончили. Переходим к среде разработки Coocox (Кокос в простонародье)))
Открываем Кокос
 
далее вверху выбираем — создать новый проект — Create New Project
 
Далее выбираем CHIP (ведь мы будем работать с процессором)
 
Далее в списке выбираем нужный нам процессор. В моём случает это STM2F407VG6T
 
После этого ствавим галчку напртив CMSIS BOOT. Вместе с ней установится галочка и напротив M4 CMSIS Core — вот её нам нужно снять.
 
Далее в левой части, нам нужно удалить два файла которые начинаются на system и также после этого удаляем файл main.c (он нам не нужен)
 
После этого, нам нужно скопировать папки сгенерированные нашим CubeMX в папку с проектом Кокоса. Копируем три папки.
И далее выделяем эти три папки и перетягиваем их в Кокос (добавляем в проект). Стрелочкой указано куда.
 
Получаем вот такой вид файлов нашего проекта
Далее начинаем раскрывать наш список файлов в папке
Driver->CMSIS->Device->ST->STM32f4xx->Source->Templates-gcc
и удаляем файл startup_.
 
далее сворачиваем пару папок и переходим вот по такому пути
Driver->CMSIS->Device->ST->STM32f4xx->Include и открываем файл отмеченный на картике указателем мыши. В нашем основном окне этот файл откроется. Листаем вниз и ищем наш процессор, и выделяем его как на картинке и нажимаем копировать — это нужно чтобы добавить это название в конфигурацию проекта
 
Далее, нажимаем на корневой файл проекта правой кнопкой мыши и выбираем Configuration
 
У нас откроется вот такое окно
 
Нажимаем в правой части ADD и добавляем скопированое значение в поле как на картинке
 
Получаем пот такой вид
 

Итак далее переходим на вкладку LINK, и в ней выбираем в поле Options — Use BASE C Library
 
ну вот собственно и всё. можем открывать фал main.c и нажать кнопочку F7, и пронаблюдать сборку проекта без ошибок. После этого делаем тройное сальто назад, двойное вперёд, бубин откладываем и ставим чайник)))
 
Ну чтож, давайте набросаем пару строк кода для того чтобы помигать нашим светодиодом
Создаём переменную

uint8_t button;

и пишем вот такие строчки кода
button = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
if (button == 0)
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
}
а кто хочет гирлянду впишите вот такой код — светодиодиики будут бегать по кругу
if (button == 0)
{
}
else
{
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_RESET);
HAL_Delay(100);
}


ну и подключаем нашу плату к компьютеру и нажимаем Download Code to Flash
 
Ну вот собственно и конец урока 1 в котором мы от начала до конца создали проект и помигали светодиодом.
Ну — и как всегда жмём палец вверх и ждём новых уроков)))

13 комментариев:

  1. Спасибо большое! очень помогло

    ОтветитьУдалить
  2. Спасибо, помогло сделать сделать первую прогу.

    ОтветитьУдалить
  3. а у меня кокос новее версии не разберусь. вроде все так делаю, а компиляция не проходит

    ОтветитьУдалить
  4. Спасибо большое ! Нихуя не работает

    ОтветитьУдалить
  5. Этот комментарий был удален автором.

    ОтветитьУдалить
  6. Установил Кокос, тест компилируется и работает, но
    редактор кокоса "не видит" типы переменных с99
    uint8_t, uint16_t и т.п., т.е. он красит их как проблемный синтаксис.
    Станартные типы: char, int и пр., видит....
    Кто нибудь сталкивался с этим? Как боролись?

    ОтветитьУдалить
  7. Возможность кредита, предложенная мистером Бенджамином, которая спасла мою семью от финансового рабства {lfdsloans@outlook.com}

    Привет всем, я одинокая мама Путри Адиратнаа из Джакарты, я хотел бы поделиться этим замечательным свидетельством о том, как я получил кредит от мистера Бенджамина, когда мы были изгнаны из нашего дома, когда я больше не мог оплачивать свои счета, после меня обманывали различные компании в Интернете и отказывали в кредите от моего банка и другого кредитного союза, который я посетил. Мои дети были усыновлены приемной семьей, я был один на улице. В тот день, когда я позорно зашёл к старому школьному товарищу, который представил меня Дейзи Морин. Сначала я сказал ей, что я не готов больше рисковать запрашивать кредит онлайн, но она заверила меня, что я получу от них кредит. Во-вторых, из-за моей бездомности мне пришлось пройти испытание и подать заявку на получение кредита, к счастью для меня, я получил кредит в размере 80 000 долларов США от мистера Бенджамина. Я счастлив, что рискнул и подал заявку на кредит. Мои дети были возвращены мне, и теперь у меня есть собственный дом и собственный бизнес. Спасибо и благодарность мистеру Бенджамину за то, что он дал мне смысл жизни, когда я потерял всякую надежду. Если вы в настоящее время ищете помощь в кредите, вы можете связаться с ними по адресу: {lfdsloans@outlook.com WhatsApp + 1-989-394-3740

    ОтветитьУдалить
  8. Самая практическая статья, которую я нашел. Спасибо огромное!

    ОтветитьУдалить
  9. Casino Poker - Play & Bonus - CasinoTopTOS
    Casino 일반인 후방 Poker is a casino type 파라오도메인 of poker site for everyone. You can find a wide range 룰렛사이트 of casino games 다이 사이 and live casino games that can be played at the 토토 사이트 직원 모집

    ОтветитьУдалить