- Избор и изтегляне на необходимите платформи за разработка на платки Nucleo64
- Електрическа схема и хардуерна настройка
- Първи стъпки със STM32CubeMX за STM32 Nucleo64 съвет за разработка
- Програмиране на STM32 Nucleo64 съвет за разработка с помощта на TrueSTUDIO
- STM32 Nucleo64 програма за управление на светодиода с помощта на бутон
- Отстраняване на грешки и качване на код в STM32 Necleo64 съвет за разработка с помощта на TrueSTUDIO
Много от нас трябва да са запознати с популярните микроконтролери и платки за разработка като Arduino, Raspberry Pi, ESP8266, NoduMCU, 8051 и др. Всъщност за повечето хора Arduino щеше да бъде първата им дъска за разработка, но тъй като се задълбочаваме и започваме професионални дизайни, скоро ще осъзнаем ограниченията на Arduino (като цена, гъвкавост, стабилност, скорост и т.н.) и ще разберем необходимостта от преминаване към по-родна платформа за микроконтролер като PIC, STM, Renesas и др.
Вече разгледахме поредица от уроци за PIC Microcontroller, които ръководят начинаещи за изучаване на PIC микроконтролери. По същия начин, започвайки с тази статия, ние също ще планираме поредица от уроци за борда за развитие на STM32 Nucleo64, които могат да помогнат на абсолютно начинаещите да се учат и развиват с помощта на платформата STM32. Nucleo64 Development Boards са евтина и лесна за използване платформа за професионални разработчици, както и за любители. Ако сте напълно нови за STM32 Nucleo64 Board Board, разгледайте това видео Nucleo64 Review, за да разберете основите на тази дъска, преди да продължите по-нататък. Видеото също така демонстрира как да програмирате STM32 с помощта на ARM Mbed Platform но за този урок ще използваме друга безплатна за използване платформа от ST Microelectronics, наречена TrueSTUDIO.
Забележка: Има много версии на STM32 Nucleo64 Development Boards, конкретната дъска, използвана в този урок, е NUCLEO-F030R8. Избрахме тази дъска главно поради ниската й цена. Дори ако имате различна версия, повечето неща, обсъдени в урока, ще ви бъдат достатъчни, за да започнете.
Избор и изтегляне на необходимите платформи за разработка на платки Nucleo64
Първите стъпки с всеки микроконтролер ще се нуждаят от IDE за програмиране, като например имаме Arduino IDE за платки Arduino, Atmel Studio за AVR микроконтролер, MP Lab за PIC и др. Семейството STM32 се състои от 32-битови микроконтролери, които поддържат следните IDE и вериги от инструменти:
- IAR Embedded Workbench® за ARM® (EWARM).
- MDK-ARM Keil
- TrueSTUDIO
- Системна работна среда за STM32
Тук за нашите уроци TrueSTUDIO ще бъде използван за писане, компилиране и отстраняване на грешки, тъй като е безплатен за изтегляне и използване дори за търговски проекти без изискване за лиценз. Тогава STM32CubeMX ще се използва за генериране на периферни драйвери за платки STM32, за да улесни програмирането. За да качим нашата програма (шестнадесетичен файл) в нашата дъска за разработка, хората обикновено използват инструмента STM32 ST-LINK Utility, но вместо това ще използваме самия TrueSTUDIO, за да направим това. TrueSTUDIO има режим за отстраняване на грешки, който позволява на програмистите да качват шестнадесетичния файл директно на платката STM32. И TrueSTUIO, и STM32CubeMX са лесни за изтегляне, просто следвайте връзката по-долу, регистрирайте се и изтеглете настройката. След това ги инсталирайте на вашия лаптоп.
- Изтеглете STM32Cube MX
- Изтеглете TrueSTUDIO
Електрическа схема и хардуерна настройка
Преди да пристъпим към раздела за софтуера и кодирането, нека подготвим нашата дъска за този проект. Както бе споменато по-рано в тази статия, ние ще управляваме светодиода с помощта на бутон. Сега, ако сте виждали видеото, свързано по-горе, вече трябва да знаете, че вашият STM32 съвет за разработка има два комплекта конектори от двете страни, наречени ST Morpho щифтове. Към тези щифтове сме свързали бутон и светодиод, както е показано на схемата по-долу.
Верижните връзки са лесни за този проект, трябва да свържем светодиод на PA5 на PORTA и превключвател на PC13 на PORTC по отношение на GND. След като бяха осъществени връзките, тестовата ми настройка изглеждаше така.
Друга възможност е да използваме вградения светодиод и бутон на дъската. Тези вградени светодиоди и бутон също са свързани на същия щифт, както е показано на електрическата схема. Добавили сме външни компоненти само за практика. Долната диаграма на щифта за разработка на STM32 ще бъде полезна, за да разберете къде са свързани всички морфо щифтове на борда.
Първи стъпки със STM32CubeMX за STM32 Nucleo64 съвет за разработка
Стъпка 1: След инсталирането стартирайте STM32CubeMX, след това изберете селектора на дъската за достъп, за да изберете платката STM32.
Стъпка 2: Сега потърсете дъската по името на вашата платка STM32 като NUCLEO-F030R8 и кликнете върху дъската, показана на снимката. Ако имате различна дъска, потърсете съответното име. Софтуерът ще поддържа всички платки за разработка на STM32 от ST Microelectronics.
Стъпка 3: Сега кликнете върху да, както е показано на снимката по-долу, за да инициализирате всички периферни устройства в техния режим по подразбиране. По-късно можем да променим необходимите такива според нуждите на нашия проект.
След като щракнете върху „Да“, екранът ще бъде подобен на снимката по-долу и зеления цветен щифт, което показва, че те са инициирани по подразбиране.
Стъпка 4: Сега потребителите могат да изберат желаната настройка от категориите. Тук в този урок ще превключим светодиод с помощта на бутон. И така, трябва да направим LED щифта като изход и превключващия щифт като INPUT.
Можете да изберете всеки пин, но аз избирам PA5 и променям състоянието му на GPIO_Output, за да работи като изходен пин, както е показано на снимката по-долу.
По същия начин избирам PC13 като GPIO_Input, за да мога да чета състоянието на моя бутон.
Друга възможност е да конфигурираме щифтове от раздела за разпитване и конфигуриране, както е показано по-долу.
Стъпка 5: В следващата стъпка потребителят може да зададе желаната честота за микроконтролера и щифтовете според външния и вътрешния осцилатор. По подразбиране е избран вътрешен 8 MHz кристален осцилатор и с помощта на PLL, този 8 се преобразува в 48MHz. Значение по подразбиране STM32 платка или микроконтролер и Pins ще работят на 48MHz.
Стъпка 6: Сега се преместете в мениджъра на проекти и дайте име на вашия проект, местоположение на проекта и изберете верига от инструменти или IDE. Тук използваме TrueSTUDIO, така че избрах същото, както е показано по-долу.
Стъпка 7: Сега кликнете върху Генериране на кодов знак от червения кръг на снимката по-долу.
Стъпка 8: Сега ще видите изскачащ прозорец, както е дадено, след което кликнете върху отворен проект. Уверете се, че сте инсталирали TrueSTUDIO преди тази стъпка.
Програмиране на STM32 Nucleo64 съвет за разработка с помощта на TrueSTUDIO
Сега вашият код или проект ще се отвори автоматично в TrueSTUDIO, ако TrueSTUDIO поиска местоположение на работното пространство, след това предоставете местоположение на работното пространство или отидете с местоположението по подразбиране.
Потребителят ще види дадения по-долу екран и след това ще трябва да щракне върху ъгъла в червен цвят.
И сега можем да видим код в нашата ID на TreuSTUDIO. От лявата страна под папката 'src' можем да видим други програмни файлове (с разширение.c), които вече са генерирани за нас от STM32Cube. Просто трябва да програмираме файла main.c. Дори във файла main.c вече ще имаме няколко неща, настроени за нас от CubeMX, трябва само да го редактираме според нашата програма. Пълният код във файла main.c е даден в долната част на тази страница.
STM32 Nucleo64 програма за управление на светодиода с помощта на бутон
Тъй като всички необходими драйвери и код се генерират от STM32CubeMX, трябва само да конфигурираме LED извод като изход и бутон като вход. Програмата за управление на led с помощта на бутона трябва да бъде записана във файла main.c. Пълната програма може да бъде намерена в долната част на тази страница. Обяснението му е следното
Имаме само написан код за превключване на светодиода с помощта на бутона. За да постигнем това, първо определяме щифтове за светодиоди и бутони. Тук дефинирахме светодиод на ПИН номер 5 на PORTA
#define LED_PORT GPIOA #define LED_PIN GPIO_PIN_5
И дефинирайте превключвателя на ПИН номер 13 на PORTC.
#define SW_PORT GPIOC #define SW_PIN GPIO_PIN_13
След това в основната функция сме инициализирали всички използвани периферни устройства.
/ * Инициализирайте всички конфигурирани периферни устройства * / MX_GPIO_Init (); MX_USART2_Init ();
И след това прочетете бутона с помощта на оператора if и ако бъде намерен бутон, натиснете (LOW), след това светодиодът ще превключи състоянието си.
Докато (1) {/ * ПОТРЕБИТЕЛСКИ КОД ПРИКЛЮЧВА ДОКАТО * / Ако (! HAL_GPIO_ReadPin (SW_PORT, SW_PIN)) {HAL_GPIO_TogglePin (SW_PORT, LED_PIN); HAL_Delay (200); } / * ПОТРЕБИТЕЛСКИ КОД НАЧАЛО 3 * /}
Тук функцията HAL_GPIO_ReadPin (SW_PORT, SW_PIN) има два аргумента, единият е PORT, а другият е щифт, към който е свързан превключвателят и този щифт е конфигуриран като INPUT, докато конфигурира периферна в STM32CubeMX.
Отстраняване на грешки и качване на код в STM32 Necleo64 съвет за разработка с помощта на TrueSTUDIO
Сега свържете дъската си към компютъра с помощта на кабела на програмиста. След като го свържете, драйверът, необходим за платката, трябва да бъде изтеглен автоматично, можете да проверите това с помощта на диспечера на устройствата.
След това натиснете иконата за отстраняване на грешки, маркирана с червения кръг в дадената по-долу картина, за да компилирате програмата и да влезете в режим за отстраняване на грешки.
В режим за отстраняване на грешки кодът автоматично ще бъде качен. Сега трябва да стартираме кода чрез натискане на "Възобновяване" или F8 (маркиран в червената верига на долната снимка).
Сега можем да тестваме управлението на светодиода чрез натискане на бутона. Според кода светодиодът трябва да променя състоянието си всеки път, когато натиснете бутона. Пълната работа може да се намери и във видеото, свързано в долната част на тази страница.
След тестване можем да прекратим програмата и чрез натискане на иконата за прекратяване, маркирана с червения кръг на снимката по-долу.