- ST-LINK V2
- STM32CubeMX
- Необходими материали
- Електрическа схема и връзки
- Създаване и запис на програма в STM32 с помощта на Keil uVision и ST-Link
- Изход на програмирана от Keil платка STM32
- Програма
Микроконтролерите STM32, които използват ARM Cortex M архитектура, вече стават популярни и се използват в много приложения поради своите характеристики, цена и производителност. Програмирали сме STM32F103C8, използвайки IDE на Arduino в предишните ни уроци. Програмирането на STM32 с Arduino IDE е лесно, тъй като има много библиотеки на разположение на различни сензори за изпълнение на всяка задача, просто трябва да добавим тези библиотеки в програмата. Това е лесна процедура и може да не се запознаете задълбочено с ARM процесорите. Така че сега навлизаме в следващото ниво на програмиране, наречено ARM програмиране. По този начин можем не само да подобрим структурата на кода, но също така можем да спестим място в паметта, като не използваме ненужни библиотеки.
STMicroelectronics представи инструмент, наречен STM32Cube MX, който генерира основен код според периферните устройства и избраната платка STM32. Така че не е нужно да се притесняваме за кодирането на основните драйвери и периферни устройства. Освен това този генериран код може да се използва в Keil uVision за редактиране според изискванията. И накрая кодът се изгаря в STM32 с помощта на програмист ST-Link от STMicroelectronics.
В този урок ще научим как да програмираме STM32F103C8, използвайки Keil uVision & STM32CubeMX, като направим прост проект за свързване на бутон и светодиод с платката за синьо хапче STM32F103C8. Ще генерираме кода с помощта на STM32Cube MX, след което ще редактираме и качим кода в STM32F103C8 с помощта на Keil uVision. Преди да влезем в подробности, първо ще научим за програмиста ST-LINK и софтуерния инструмент STM32CubeMX.
ST-LINK V2
В ST-LINK / V2 е в съединение дебъгер и програмист за микроконтролера семейства STM8 и STM32. Можем да качим код на STM32F103C8 и други микроконтролери STM8 & STM32, използвайки този ST-LINK. Едножичният интерфейсен модул (SWIM) и интерфейсите за отстраняване на грешки JTAG / сериен проводник (SWD) се използват за комуникация с всеки микроконтролер STM8 или STM32, разположен на платка за приложения. Тъй като приложенията STM32 използват USB пълен скоростен интерфейс за комуникация с интегрирани среди за разработка на Atollic, IAR, Keil или TASKING, така че можем да използваме този хардуер за програмиране на микроконтролерите STM 8 и STM32.
По-горе е изображението на ST-LINK V2 донгъл от STMicroelectronics, който поддържа пълния набор от интерфейси за отстраняване на грешки STM32 SWD, прост 4-жилов интерфейс (включително захранване), бърз и стабилен. Предлага се в разнообразни цветове. Корпусът е изработен от алуминиева сплав. Той има синя LED индикация, тъй като се използва за наблюдение на работното състояние на ST-LINK. Имената на щифтовете са ясно маркирани върху черупката, както можем да видим на горното изображение. Той може да бъде свързан със софтуера Keil, където програмата може да бъде мигана към микроконтролерите STM32. Така че нека видим в този урок как този ST-LINK програмист може да се използва за програмиране на STM32 микроконтролер. По-долу изображението показва щифтовете на модула ST-LINK V2.
Забележка: Когато свързвате ST-Link с компютъра за първи път. Трябва да инсталираме драйвер за устройство. Драйверите за устройства могат да бъдат намерени в тази връзка според вашата операционна система.
STM32CubeMX
Инструментът STM32CubeMX е част от STMicroelectronics STMCube. Този софтуерен инструмент улеснява разработката, като намалява усилията, времето и разходите за разработка. STM32Cube включва STM32CubeMX, който е инструмент за графично конфигуриране на софтуер, който позволява генерирането на код за инициализация на C, използвайки графични съветници. Този код може да се използва в различни среди за разработка като keil uVision, GCC, IAR и т.н. Можете да изтеглите този инструмент от следната връзка.
STM32CubeMX има следните функции
- Разрешаване на конфликти с ПИН
- Помощник за настройка на дърво с часовник
- Калкулатор за консумация на енергия
- Помощна програма, изпълняваща MCU периферна конфигурация като GPIO щифтове, USART и т.н.
- Помощна програма, изпълняваща MCU периферна конфигурация за стекове за мидълуер като USB, TCP / IP и др
Необходими материали
Хардуер
- STM32F103C8 дъска за синьо хапче
- ST-LINK V2
- Натисни бутона
- LED
- Макет
- Джъмперни проводници
Софтуер
- Инструмент за генериране на код STM32CubeMX (Връзка)
- Keil uVision 5 (връзка)
- Драйвери за ST-Link V2 (връзка)
Електрическа схема и връзки
По-долу е дадена електрическата схема за просто свързване на светодиод с платка STM32 с помощта на бутон.
Връзка между ST-LINK V2 и STM32F103C8
Тук платката STM32 Blue Pill се захранва от ST-LINK, който е свързан към USB порта на компютъра. Така че не е необходимо да захранваме STM32 отделно. Таблицата по-долу показва връзката между ST-Link и Blue хапче.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED и бутон
Светодиодът се използва за индикация на изхода от дъската Blue Pill при натискане на бутон. LED анодът е свързан към щифта PC13 на платката Blue Pill и катодът е заземен.
А бутон е свързан да даде своя принос към пин Pa1 на Blue Pill борда. Трябва също да използваме издърпващ резистор на стойност 10k, защото щифтът може да плава без никакъв вход, когато бутонът е освободен. Единият край на бутона е свързан към земята, а другият край към щифт PA1, а издърпващият резистор от 10k също е свързан към 3.3V на борда на Blue Pill.
Създаване и запис на програма в STM32 с помощта на Keil uVision и ST-Link
Стъпка 1: - Първо инсталирайте всички драйвери на устройства за ST-LINK V2, софтуерни инструменти STM32Cube MX & Keil uVision и инсталирайте необходимите пакети за STM32F103C8.
Стъпка 2: - Втората стъпка е Open >> STM32Cube MX
Стъпка 3: - След това кликнете върху Нов проект
Стъпка 4: - След това търсене и изберете нашия микроконтролер STM32F103C8
Стъпка 5: - Сега се появява скината на STM32F103C8, тук можем да зададем конфигурациите на щифтовете. Също така можем да изберем нашите щифтове в раздела за периферни устройства според нашия проект.
Стъпка 6: - Можете също така да щракнете директно върху щифта и се появява списък, сега изберете необходимата конфигурация на щифта.
Стъпка 7: - За нашия проект ние избрахме PA1 като GPIO INPUT, PC13 като GPIO OUTPUT & SYS отстраняване на грешки като SERIAL WIRE, тук само свързваме щифтовете ST-LINK SWCLK & SWDIO. Избраните и конфигурирани щифтове се показват в ЗЕЛЕН цвят. Можете да забележите, че на изображението по-долу.
Стъпка 8: - След това в раздела Конфигурация изберете GPIO, за да зададете GPIO конфигурации на щифтове за избраните от нас щифтове.
Стъпка 9: - След това в това поле за конфигуриране на щифтове можем да конфигурираме потребителски етикет за пинове, които използваме, т.е.потребителски имена на пинове
Стъпка 10: - След това кликнете върху Проект >> Генериране на код .
Стъпка 11: - Сега се появява диалоговият прозорец за настройки на проекта. В това поле изберете името и местоположението на вашия проект и изберете среда за разработка. Използваме Keil, така че изберете MDK-ARMv5 като IDE.
Стъпка 12: - Следваща под Code Generator раздела, изберете Copy само необходимите библиотечни файлове и след това щракнете върху OK.
Стъпка 13: - Сега се появява диалоговият прозорец за генериране на код. Изберете Open Project, за да отворите проекта автоматично генерирания код в Keil uvsion.
Стъпка 14: - Сега инструментът Keil uVision се отваря с генерирания ни код в STM32CubeMx със същото име на проект с необходимата библиотека и кодове, които са конфигурирани за избраните от нас щифтове.
Стъпка 15: - Сега просто трябва да включим логиката за извършване на някакво действие на изходния светодиод (щифт PC13), когато бутонът се натисне и отпусне на входа GPIO (щифт PA1). Затова изберете нашата програма main.c, за да включите някои кодове.
Стъпка 16: - Сега добавете кода в цикъл while (1) , вижте изображението по-долу, където подчертах този раздел, за да стартирам кода непрекъснато.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Бутонът DETECTS се натиска {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // За повишаване на изхода при натискане на бутон} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // За да направим изхода нисък при натискане на бутона}}
Стъпка 17: - След като приключите с редактирането на кода, щракнете върху иконата Options for Target под раздела за отстраняване на грешки, изберете ST-LINK Debugger
Също така щракнете върху бутона Настройки и след това в раздела Изтегляне на Flash поставете отметка в квадратчето Нулиране и изпълнение и щракнете върху „ОК“
Стъпка 18: - Сега кликнете върху иконата Rebuild, за да възстановите всички целеви файлове.
Стъпка 19: - Сега можете да включите ST-LINK към компютър с готови връзки на веригата и да кликнете върху иконата ИЗТЕГЛЯНЕ или да натиснете F8, за да мига STM32F103C8 с кода, който сте генерирали и редактирали.
Стъпка 20: - Можете да забележите мигащата индикация в долната част на прозореца на keil uVision.
Изход на програмирана от Keil платка STM32
Сега, когато натиснем бутона, светодиодът се включва и когато го освободим, светодиодът се изключва.
Програма
Основната част, която сме добавили в генерираната програма, е показана по-долу. Това по-долу код трябва да бъде включена в докато (1 ) на Стартиране програма генерира от STM32CubeMX. Можете да се върнете към стъпка 15 до стъпка 17, за да научите как трябва да бъде добавен в програмата main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => Бутонът DETECTS се натиска {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // За повишаване на изхода при натискане на бутон} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // За да направим изхода нисък при натискане на бутона}}
Пълният процес на създаване и качване на проект в платката STM32 също е обяснен във видеото, дадено в края. Също така по- долу е даден пълният код на файла main.c, включително горепосочения код.
Освен това можете да намерите пълния ни набор от STM32 проекти тук.