Stm32 qaysi muhitda dasturlash kerak. STM32 mikrokontrollerlarini tez o'zlashtirish. Rivojlanish uchun bizga Discovery kengashidan tashqari nima kerak?

Talabalik yillarimda men mikrokontrollerlar bilan juda tanish bo'lishim kerak edi, keyin ular 8 bitli 8051 va AVR edi. Endi, bu faoliyatga qaytishni istab, men e'tiborimni STM32 kontrollerlarining juda keng oilasiga qaratdim. Internetda ular haqida ko'p narsa yozilgan, ammo men STM bilan ishlash haqida qisqacha maqolalar yozish istagini bildirdim. Men ular bilan tanishishni, ular aytganidek, to'liq 0 dan boshlashni xohlayman. Tajribalar uchun oddiy va arzon ($3) Maple Mini disk raskadrovka taxtasini sotib oldim. Unda ishlatiladigan STM32F103CB kontrolleri juda ta'sirli imkoniyatlarga ega. (ayniqsa, uning narx toifasidagi echimlar bilan solishtirganda). Siz onlayn va, albatta, batafsil o'qishingiz mumkin. Menga Arduinoga o'xshash mahalliy rivojlanish muhiti darhol yoqmadi (ta'mi va rangi, ular aytganidek ...). Turli xil rivojlanish muhitlarining ko'pligidan men mikroelektronikadan ARM uchun mikroC-ga e'tibor qaratdim. Men bir marta ularning kompilyatorlarini (8081 uchun) uchratdim va ular menga juda yoqdi. Xatolar bo'lmasa-da, men sinab ko'rishga qaror qildim.


Kengash shunday ko'rinadi, hamma narsa juda sodda va ixcham:



Kengashning sxemasi ham oddiy, ammo sizga kerak bo'lgan hamma narsa bu erda:



Tanlangan dasturchi Xitoy kloni ST-LINK2 ($3), ammo mikroC bilan mukammal ishlaydi



MikroC demo versiyasiga havola. Demo versiyasi cheklovi: maksimal 4KB ikkilik kod. Ko'p emas, lekin tanishish uchun etarli. Ilovani o'rnatishda hech qanday muammo bo'lmasligi kerak, siz qilishingiz kerak bo'lgan yagona narsa mikroC o'rnatuvchisini ishga tushirishdan oldin ST-LINK2 uchun drayverlarni o'rnatishdir.


Loyihani ishga tushirgandan va yaratgandan so'ng, bizni dastur oynasi kutib oladi:



Foydalanish uchun mikrokontroller turini tanlagandan keyingi birinchi qadam loyihamiz xususiyatlarini sozlashdir. MikroC loyihasi konfiguratsiyasi klaviatura yorliqlari orqali chaqiriladi Shift-Ctrl-E(Loyiha - Loyihani tahrirlash). Aynan shu oynada STM32 mikrokontrollerlarining soat tizimining murakkab ichki tashkil etilishi bilan bog'liq barcha lazzatlar sozlangan. Umuman olganda, men sizga hech bo'lmaganda ushbu mikrokontrollerlar oilasi bilan qisqacha tanishishingizni maslahat beraman. Biz unga qayta-qayta qaytamiz.



STM32F103 ma'lumotlar varag'idan soat tizimining blok diagrammasi


Ushbu oyna registr konfiguratsiyasini belgilaydi RCC_CR va RCC_CFGR

  • Ichki yuqori tezlikdagi soatni yoqish - O'rnatilgan 8 MGts osilatorni (HSI) yoqish yoki o'chirish (ossilator o'chirilgan)
  • Tashqi yuqori tezlikdagi soatni yoqish - O'rnatilgan 8 MGts osilatorni (HSE) yoqish yoki o'chirish (ossilator ON)
  • Tashqi yuqori tezlikda soatni yoqish - Kvars o'rniga soat generatorini OSC kirishiga ulash imkoniyati. Biz kvartsdan foydalanishni o'rnatdik (HSE osilatori chetlab o'tilmagan)
  • Soat xavfsizligi tizimini yoqish - nazorat qilish qurilmasiga o'rnatilgan himoya tizimlarini soat signalining yo'qolishiga qarshi faollashtiradi; Biz uni hali ishlatmayapmiz (soat detektori oʻchirilgan)
  • PLL Enable - Chastotani ko'paytirish modulini yoqish/o'chirish (PLL ON)
  • Tizim soatini almashtirish - SYSCLOCK soat signalini tanlang: PLL, tashqi yoki ichki osilator. Biz PLL dan foydalanamiz. Bizning boshqaruvchimizning yadrosi PLL koeffitsientiga ko'paytirilgan HSE chastotasida ishlaydi (Tizim soati sifatida PLL tanlangan)
  • AHB soatining bo'linish koeffitsientini boshqarish uchun dasturiy ta'minot tomonidan o'rnatiladi va tozalanadi - MK ning periferik modullariga xizmat ko'rsatadigan AHB shinasi uchun SYSCLOCK oldindan o'lchov moslamasini o'rnatish; hozircha biz oldindan o'lchovni o'chiramiz * (SYSCLOCK ajratilmagan)
  • APB past tezlikda oldindan chaqiruvchi APB1 - I2C avtobusi kabi past tezlikli MK tashqi qurilmalar uchun chastota bo'luvchi, maksimal ish chastotasi: 36 MGts (HCLK 2 ga bo'lingan)
  • APB yuqori tezlikdagi oldindan chaqiruvchi APB 2 - kirish/chiqarish portlari, taymerlar va boshqalar kabi yuqori tezlikdagi MK tashqi qurilmalar uchun chastota bo'luvchi. (HCLK ajratilmagan)
  • ADC prescaller - APB 2 ga nisbatan ADC moduli uchun oldindan o'lchovchi (PCLK2 2 ga bo'lingan)
  • PLL kirish soati manbai - PLL kirishiga soat signalining manbai, o'rnatilgan RC osilatorining 1/2 qismini yoki PREDIV1 orqali o'tgan tashqi osilatorni tanlash; biz foydalanadigan narsa (PLL kirish soati sifatida PREDIV1 dan soat tanlangan)
  • PLL kirish uchun HSE bo'luvchi - bu juda PREDIV1 o'rnatish; Biz hali foydalanmayapmiz (HSE soati ajratilmagan)
  • PLL ko'paytirish omili - PLL ko'paytirish omili. Kirishda bizda 8 MGts kvarts chastotasi mavjud, 9 faktor bilan biz SYSCLOCK uchun 72 MGts chastotaga egamiz. (PLL kirish soati x 9)
  • USB oldindan chaqiruvchi - USB avtobus chastotasi. Spetsifikatsiyaga muvofiq USB 48 MGts chastotada ishlaydi, 1,5 oldindan o'lchovni tanlang. (PLL soati 1,5 ga bo'lingan)

MSU soat chastotasi SYSCLOCK chastotasini tanlang - 72 MGts (72.000000)




GPIO port chiqishlarini microC-da chiqishga o'rnatish uchun funktsiya mavjud


GPIO_Digital_Output(&GPIOx_BASE, _GPIO_PINMASK_ALL);// Chiqish portini sozlash

u GPIOx blokining soatini yoqadi va qiymatlarni konfiguratsiya registriga yozadi. Biz portga yozgan ma'lumotlar registrga kiritiladi GPIOx_ODR.


GPIOx_ODR = ; // Portga kirish registri

Kompilyator ma'lum bir registr bitiga yoki o'zgaruvchiga kirish imkonini beradi. Buning uchun registr nomidan keyin nuqta bilan ajratilgan bit raqamini (0 dan boshlab) yozing


REGx.by; // Registrning individual (y) bitiga kirish (x)

Kechikishlarni yaratish uchun biz o'rnatilgan funksiyadan foydalanamiz Delay_ms()(yoki Delay_us()) kompilyator. Mana bizning birinchi dasturimiz:


void main() ( GPIO_Digital_Output(&GPIOb_BASE, _GPIO_PINMASK_1); //PB1 ni GPIOb_ODR.b1 = 0 chiqishiga aylantiring; //GPIOb_ODR registriga 15 bitda yozing = 0 while(1) // Infinite sikl ( DR.~b) GPIOb_ODR b1;

Bir ishga tushirish buyrug'i bir vaqtning o'zida bir nechta port oyoqlariga qo'llanilishi uchun biz yozamiz _GPIO_PINMASKn"yoki" operatori orqali, masalan:


GPIO_Digital_Output(&GPIOb_BASE, _GPIO_PINMASK_1 | _GPIO_PINMASK_7); //PB1 va PB7 chiqish GPIO_Digital_Output(&GPIOa_BASE, _GPIO_PINMASK_ALL) uchun tuzilgan; //Barcha PA oyoqlari chiqish uchun o'rnatiladi

Endi PB15 portining chiqish holatini 5 ms oraliq bilan almashtirib, MK pinlaridan biriga meanderni chiqarishga harakat qilaylik. :


void main() ( GPIO_Digital_Output(&GPIOb_BASE, _GPIO_PINMASK_15); GPIOb_ODR.b15 = 0; while(1) ( GPIOb_ODR.b15=~GPIOb_ODR.b15; Kechikish_ms(5);/chastota 1. Hz)))

PB15 pinida bizda quyidagi signal mavjud:



Agar portning holatini o'qish kerak bo'lsa, biz registrdan foydalanamiz GPIOx_IDR, avvalroq portni GPIO_Digital_Input (*port, pin_mask) funksiyasidan foydalangan holda kirish sifatida sozlagan. Bizning platada PB8 port piniga ulangan tugma mavjud. Quyidagi dastur tugma bosilganda PB1 pinidagi miltillovchi LEDni yoqadi.


void main() ( GPIO_Digital_Output(&GPIOb_BASE, _GPIO_PINMASK_1); GPIO_Digital_Input(&GPIOb_BASE, _GPIO_PINMASK_8); // Kirish uchun PB8 chiqishini sozlang GPIOb_ODR.b1 = 0 bo'lsa (GPIOb_ODR.b1 = 0 bo'lsa) ID (/_b; agar bo'lsa). bosilganda 8-bit registr GPIOb_IDR 1 ga teng ( GPIOb_ODR.b1=~GPIOb_ODR.b1; Delay_ms(500); //Kechikish 500 ms) boshqa (GPIOb_ODR.b1 = 0; //Agar tugma qo‘yib yuborilsa, o‘chirib qo‘ying. LED) ) )

Bu 1-qismni yakunlaydi. Ikkinchi qismda men sizni PWM modulyatsiyasini amalga oshirish, taymerlar bilan ishlash va tugmachadagi kontaktlarning zanglashini bostirish funktsiyasi bilan tanishtirishga harakat qilaman.

Teglar: teglar qo'shish

Yaqinda kompaniya STMicroelectronics Atolic kompaniyasini sotib oldi, rivojlanayotgan edi TrueStudio integratsiyalashgan muhit. Biroz vaqt o'tgach, bu haqda e'lon qilindiyangi versiyalar TrueStudio qayta yo'naltiriladi eksklyuziv ravishda STM32 da va ular bo'ladi ozod. Ushbu maqola yangi muhitning asosiy xususiyatlarini qisqacha tavsiflaydi, shuningdek, STM32 mikrokontroller ekotizimini bir butun sifatida ko'rib chiqadi.

Taxminan o'n yil oldin STM32 mikrokontrollerlar oilasi sanoatda inqilob qildi. Ushbu tezkor, ishonchli va eng muhimi, arzon 32-bitli kontrollerlar ishlab chiquvchilar orasida juda mashhur bo'ldi. Shu bilan birga, STMicroelectronics bu bilan to'xtab qolmadi va mahsulot turlarini kengaytirishda davom etmoqda.

STM32 ga bo'lgan yuqori qiziqish, shuningdek, yaxshi tuzilgan ekotizim mavjudligi bilan izohlandi: mikrokontrollerlarning har bir yangi qatori STdan turli xil disk raskadrovka platalari, bepul kutubxonalar va turli mulkiy yordamchi dasturlarning chiqarilishi bilan birga bo'ldi.

Biroq, agar STM32 apparati, kutubxonalari va yordamchi dasturlari bilan hamma narsa tartibda bo'lsa, integratsiyalashgan rivojlanish muhitlari (IDE) bilan bog'liq vaziyat unchalik qizg'in bo'lib qoldi. Albatta, STM32-ni qo'llab-quvvatlash barcha asosiy IDE-larda mavjud edi: Keil, IAR, TrueStudio va hokazo, lekin ularning bitta umumiy kamchiligi bor edi - ularning barchasi to'langan. Ya'ni C/C++ da eng oddiy dasturlarni yozish uchun litsenziya kaliti uchun bir necha ming dollar to'lash kerak edi. Biroq, STMicroelectronics vaziyatni o'zgartirish uchun har tomonlama harakat qildi.

Bu yo'nalishdagi birinchi qadam STMicroelectronics kompaniyasi bilan hamkorlik bo'ldi Keil (ARM). Natijada, STM32F0 seriyali byudjetli mikrokontroller foydalanuvchilari kod miqdori cheklangan bo'lsa ham, atrof-muhitning to'liq versiyasidan bepul foydalanish imkoniyatiga ega bo'ldilar. Biroq, ilovalarning aksariyati uchun 32 KB etarli.

Keyinchalik, STMicroelectronics frantsuz loyihasini qo'llab-quvvatladi AC6. Bu STM32 foydalanuvchilarining nihoyat o'zlarining integratsiyalashgan ishlab chiqish muhitiga ega bo'lishiga olib keldi, AC6 System Workbench (SW4STM32). Mutaxassislarning fikriga ko'ra, ushbu vosita kuchliroq tijorat hamkasblaridan kam edi, ammo bu byudjet qurilmalarini minimal xarajatlar bilan yaratishga imkon berdi.

Yaqinda STMicroelectronics juda mashhur TrueStudio muhitini ishlab chiquvchi kichik shved kompaniyasi Atolicni sotib olganini e'lon qildi. TrueStudio-ni rivojlantirish bo'yicha keyingi yo'l xaritasining e'lon qilinishi STM32 muxlislari uchun haqiqiy bayram bo'ldi: atrof-muhitning yangi relizlari faqat STM32 bilan ishlaydi, foydalanuvchilar esa TrueStudio-ning barcha kuchiga ega bo'ladilar, bu esa ilgari faqat TrueStudio Pro litsenziyalangan versiyasi.

Maqolada STM32 mikrokontrollerlarining model diapazoni va ekotizimlari qisqacha ko'rib chiqiladi, Atolic TrueStudio ning asosiy imkoniyatlari va xususiyatlari tavsiflanadi va qo'shimcha videoda TrueStudio va STM32Cube o'rtasidagi o'zaro ta'sirning misoli keltirilgan.

STM32 mikrokontrollerlar oilalarining umumiy ko'rinishi

Hozirgi vaqtda STMicroelectronics 11 oilaga birlashtirilgan STM32 mikrokontrollerlarining 800 dan ortiq modellarini ishlab chiqaradi. Ishlash samaradorligi, iste'mol darajasi va ixtisoslashtirilgan tashqi qurilmalar mavjudligini hisobga olgan holda, barcha oilalarni to'rtta maqsadli bo'shliqqa bo'lish mumkin (1-rasm):

  • Mahsulot oilalari: STM32F2, STM32F4, STM32F7, STM32H7;
  • Umumiy maqsadli asosiy oilalar: STM32F0, STM32F1, STM32F3;
  • Kam quvvatli oilalar: STM32L0, STM32L1, STM32L4;
  • Simsiz mikrokontrollerlar oilasi

Guruch. 1. ST dan STM32 mikrokontrollerlari portfeli

Rivojlanish apparati

STM32 mikrokontrollerlarining boshlanishida ishlab chiqish platalari birinchi navbatda uchinchi tomon kompaniyalari tomonidan etkazib berildi (IAR, Olimex va hokazo), lekin keyinchalik STMicroelectronics tashabbusni o'z qo'liga oldi va mustaqil ravishda boshlang'ich va baholash to'plamlarini ishlab chiqarishni boshladi. Bu bizga bozorda yangi mikrokontrollerlarni ilgari surish jarayonini tezlashtirishga imkon berdi. Endi STM32 va STM8 uchun ishlab chiqarilgan markali disk raskadrovka to'plamlarining umumiy soni bir million nusxadan oshdi.

Hozirgi vaqtda STM32 uchun deyarli yuz turdagi xususiy ishlab chiqish platalari ishlab chiqarilmoqda, ular to'rtta funktsional guruhga bo'lingan: Discovery boards, Nucleo platalar, Nucleo uchun kengaytirish taxtalari va Baholash kengashlari.

Kashfiyotlarni baholash kengashlari. Ushbu baholash kengashlarida maqsadli mikrokontroller, o'rnatilgan ST-LINK v2 tuzatuvchisi va qo'shimcha tashqi tashqi qurilmalar: akselerometrlar, LCD displeylar, kodeklar va boshqalar mavjud. Qo'shimcha qurilmalarning tarkibi kengash nomiga bog'liq. Hozirda ishlab chiquvchilar deyarli barcha oilalarning mikrokontrollerlari uchun 25 xil Discovery platalariga ega (2-rasm).

Guruch. 2. Discovery to'plamlariga misollar

Nukleo platalar. Ushbu stack kameralari birinchi navbatda mustaqil ishlash uchun mo'ljallanmagan, balki mashhur steklarda turli kengaytirish kartalari bilan foydalanish uchun mo'ljallangan. Nucleo-32 platalari Arduino ™ nano stekiga mos keladi, Nucleo-64 va Nucleo-144 platalari Arduino ™ Uno V3 bilan ishlaydi. Barcha platalarda o'rnatilgan ST-LINK tuzatuvchisi mavjud (3-rasm).

Guruch. 3. Nukleo to'plamlar

Nucleo uchun kengaytirish platalari. Ushbu platalar STM32 mikrokontrollerlari bilan bevosita bog'liq emas, lekin ular Nucleo platalarining funksionalligini kengaytiradi. Misol tariqasida STM32 Nucleo-64 anakartlari (NUCLEO-F401RE yoki NUCLEO-L476RG), X-NUCLEO-IKS01A1 MEMS sensori kengaytirish platalari bilan ishlaydigan BLUEMICROSYSTEM1 dasturiy paketiga asoslangan apparat-dasturiy kompleksni qayd etishimiz mumkin. Bluetooth X platalari -NUCLEO-IDB04A1 yoki X-NUCLEO-IDB05A1 (4-rasm).

Guruch. 4. STM32 Nucleo-64 asosidagi stekni amalga oshirish misoli

Baholash kengashlari. Ushbu turdagi platalar STM32 mikrokontrollerlarining muayyan ilovalarda (motor boshqaruvi, multimedia tizimlari va boshqalar) ishlashi bilan maksimal darajada tanishish uchun mo'ljallangan. Baholash kengashlari har doim ixtisoslashtirilgan tashqi qurilmalarning boy to'plamiga ega: displeylar, qabul qiluvchilar, MEMS sensorlari, kodeklar, xotira, drayverlar va boshqalar. (5-rasm).

Guruch. 5. STMicroelectronics kompaniyasining ishlab chiqish platalari namunasi

STMicroelectronics kompaniyasining bepul dasturiy ta'minotini ko'rib chiqish

STM32 ekotizimi STMicroelectronics va uchinchi tomonlardan dasturiy ta'minot kutubxonalari va ishlab chiqish vositalarining keng tanlovini taqdim etadi. Shu bilan birga, ST kompaniyasining xususiy dasturiy ta'minoti katta afzalliklarga ega - bu bepul.

Hozirgi vaqtda STMicroelectronics va uning hamkorlari STM32 uchun o'rnatilgan dasturiy ta'minotni yaratishni sezilarli darajada osonlashtiradigan bir nechta bepul vositalarni taklif qilmoqdalar: past va o'rta darajadagi kutubxonalar, turli xil ixtisoslashtirilgan yordamchi dasturlar, STM32CubeMX grafik interfeysli kod generatori, AC6 System Workbench (SW4STM32) integratsiyalashgan muhitlari. va Atolic TrueStudio.

Quyi darajadagi kutubxonalar. STM32 mikrokontrollerlarining har bir oilasi uchun STMicroelectronics HAL drayverlari kutubxonasini chiqaradi. Ulardan foydalanganda ishlab chiquvchi alohida registrlar va ro'yxatga olish maydonlari bilan emas, balki to'liq funktsiyalar bilan bog'lanishi kerak. Shunday qilib, boshqaruvchi arxitekturasini chuqur o'rganishga hojat yo'q. Bu, bir tomondan, kod yozish uchun ketadigan vaqtni qisqartirsa, ikkinchi tomondan, uni yanada tushunarli qiladi.

O'rta kutubxonalar. Past darajadagi drayverlarga qo'shimcha ravishda, STMicroelectronics turli xil ixtisoslashtirilgan kutubxonalardan foydalanishni taklif qiladi, masalan, fayl tizimini yaratish, operatsion tizimlarni amalga oshirish, USB bilan ishlash va hokazo.

Ixtisoslashgan kommunal xizmatlar. STMicroelectronics STM32 bilan ishlash qulayligini oshiradigan kichik dasturlarni yaratadi. Masalan, ST MCU Finder yordam dasturi optimal boshqaruvchi yoki disk raskadrovka to'plamini tanlashni sezilarli darajada osonlashtiradi.

STM32CubeMX- STM32 mikrokontrollerlarini sozlashni iloji boricha soddalashtiradigan grafik interfeysga ega kod generatori. Ushbu vosita keng funksionallikka ega. STM32CubeMX imkon beradi (6-rasm):

Guruch. 6. STM32Cube dasturiy platformasining tuzilishi

  • STM32 mikrokontrollerlari uchun loyihalarni yaratish va tahrirlash, keyinchalik ma'lum IDElar uchun C-kod yaratish (IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO va AC6 System Workbench (SW4STM32));
  • Muayyan dasturning xarakteristikalari asosida optimal mikrokontroller yoki ishlab chiqish platasini tanlang. Filtrlash turli maydonlar (seriya, korpus, xotira hajmi va boshqalar) bo'yicha amalga oshiriladi;
  • Bosilgan elektron platalar izlagichlari uchun csv jadval faylini yaratish imkoniyati bilan Pin Wizard yordam dasturidan foydalanib mikrokontroller pinlarini sozlang;
  • Clock Wizard yordam dasturidan foydalanib, global soat signallarining chastotalarini va periferik qurilmalarning soat signallarini sozlang;
  • Perepherial va o'rta dastur ustasi yordam dasturidan (Konfiguratsiya yorlig'i) foydalanib, o'rta dastur (fayl tizimi, protokollar steklari, operatsion tizimlar va boshqalar) va periferik birliklar uchun sozlamalarni sozlang. Bu holda ST (HAL yoki LL) ning turli kutubxonalari C kodini yaratish uchun ishlatilishi mumkin;
  • Quvvat iste'moli ustasi yordam dasturidan foydalanib, berilgan mikrokontroller sozlamalari uchun iste'mol darajasi va batareyaning ishlash muddatini baholang.

AC6 System Workbench (SW4STM32) STM32 mikrokontrollerlari uchun o'rnatilgan dasturiy ta'minotni ishlab chiqish uchun foydalaniladigan bepul integratsiyalashgan muhit. U C/C++ da dasturlar yozish, ularni kompilyatsiya qilish, yuklash va disk raskadrovka qilish imkonini beradi. Ushbu muhitning asosiy afzalliklari:

  • STM32 mikrokontrollerlarining barcha oilalarini qo'llab-quvvatlaydi;
  • xususiy disk raskadrovka to'plamlarini qo'llab-quvvatlash (STM32 Nucleo, Discovery and Evaluation boards);
  • Dastur kodining miqdori bo'yicha cheklovlar yo'q;
  • Bepul GCC C/C++ kompilyatori;
  • Bepul GDB Debugger (GNU loyihasi);
  • STM32 kontrollerlari o'rtasida loyihalarni soddalashtirilgan ko'chirish imkoniyati;
  • SVN/GIT versiya boshqaruv tizimi bilan o'rnatilgan dasturiy ta'minotni guruh ishlab chiqishni qo'llab-quvvatlash.

SW4STM32 bilan ishlashda STM32CubeMX da yaratilgan dasturlarning "skeletlari" dan foydalanish qulay (7-rasm).

Guruch. 7. AC6 System Workbench Interfeys (SW4STM32)

STM32 uchun bepul dasturiy vositalar qatoriga yangi qo'shimcha Atolic TrueStudio integratsiyalashgan muhitidir. Nima uchun boshqa ishlab chiqish muhiti kerak, TrueStudio foydalanuvchilarini qanday o'zgarishlar kutmoqda va yangi IDE foydalanuvchilarga nimani taklif qilishi mumkin?

Atolic TrueStudio - STM32 uchun yangi bepul muhit

ST ilgari AC6 va uning bepul System Workbench muhitini keng qo'llab-quvvatlagan. Shundan so'ng ST xuddi shunday yo'nalishda harakat qilishni davom ettirdi va TrueStudio muhitini ishlab chiquvchi Atolic kompaniyasini sotib oldi.

Bir qarashda, bu mutlaqo mantiqiy ko'rinmaydi, ammo bu qadamni tushunish mumkin. Gap shundaki, AC6 System Workbench dastlab notijorat loyiha bo'lgan va uning funksionalligi, aftidan, STga to'liq mos kelmagan. Endi kompaniya jiddiy va ayni paytda "cho'ntak" loyihasiga ega, bu birinchi navbatda STM32 manfaatlarini hisobga oladi.

Yaqinda ST TrueStudio-ni rivojlantirish bo'yicha o'z rejalarini e'lon qildi. Foydalanuvchilar uchun eng muhim o'zgarishlar quyidagilar bo'ladi:

  • TrueStudio-ning yangi versiyalarida faqat STM32 bilan ishlash mumkin bo'ladi;
  • TrueStudioPro’ning eski litsenziyalangan versiyalarini qo‘llab-quvvatlash 1 yil davom etadi;
  • TrueStudio-ning yangi versiyalari bepul bo'ladi va cheksiz TrueStudioPro funksiyalariga ega bo'ladi.

Qayerdan yuklab olish va qanday o'rnatish kerak

TrueStudio-ning yangi bepul versiyasi allaqachon ishlab chiquvchining rasmiy veb-saytidan yuklab olish mumkin: https://atollic.com/. Yuklab olish bo'yicha ko'rsatmalar ushbu maqolaga ilova qilingan videoda keltirilgan.

TrueStudio-ni o'rnatish jarayoni iloji boricha sodda. Barcha kerakli bloklar va modullar o'rnatuvchiga kiritilgan. O'rnatish vaqtida foydalanuvchi minimal harakat talab qiladi. O'rnatishning qisqacha ko'rsatmalari ham videoda keltirilgan.

TrueStudio ning asosiy xususiyatlari

Dasturiy ta'minot platformasi. TrueStudio - bu STM32 mikrokontrollerlari uchun to'liq integratsiyalashgan dasturiy ta'minot ishlab chiqish muhiti (8-rasm). Tashqi tomondan, TrueStudio AC6 System Workbench dasturiga juda o'xshaydi. Buning ajablanarli joyi yo'q, chunki ikkala muhit ham Eclipse platformasidan foydalanadi. O'xshashliklar shu bilan tugamaydi. TrueStudio bir xil ochiq manbali GCC kompilyatori va GDB tuzatuvchisi loyihalariga asoslangan.

Guruch. 8. TrueStudio interfeysi

Qo'llab-quvvatlanadigan mikrokontrollerlar. TrueStudio faqat STM32 bilan ishlaydi va oilaning barcha mikrokontrolörlarini qo'llab-quvvatlaydi. Bundan tashqari, TrueStudio ko'pgina STMicroelectronics platalarini qo'llab-quvvatlaydi. Foydalanuvchi hech qanday qo'shimcha fayllarni yuklab olmasdan tayyor demo loyihalarni ochishi mumkin.

Loyihalar bilan ishlash. TrueStudio C/C++ da yozilgan loyihalarni yaratish va tahrirlash imkonini beradi. Bir nechta ilovalar bilan parallel ravishda ishlashda juda qulay bo'lgan loyiha daraxtini yaratish mumkin.

Fayllar bilan ishlash. TrueStudio foydalanuvchilarga C/C++ fayllari bilan ishlash uchun standart vositalar to‘plamini taklif etadi: qidiruv, interaktiv qidiruv, kontekstni ajratib ko‘rsatish, andozalar, funksiyalar daraxti va boshqalar.

Loyihani tuzish va tuzish. Yuqorida aytib o'tilganidek, TrueStudio loyihani kompilyatsiya qilish uchun GCC dan foydalanadi. Bunday holda, kompilyatsiya jarayonida kodni optimallashtirish mumkin.

TrueStudio foydalanuvchilarga kod va ma'lumotlarni mikrokontroller xotirasiga qo'lda joylashtirish imkoniyatini beradi.

Dastur turli formatlarda ijrochi kodni yaratishni ta'minlaydi, shuningdek, qayta kompilyatsiya qilish vaqtini sezilarli darajada tejaydigan statik kutubxonalarni yaratishga imkon beradi.

Nosozliklarni tuzatish. TrueStudio barcha mashhur tuzatuvchilar bilan ishlashni qo'llab-quvvatlaydi, shu jumladan ST-Link, SEGGER, P&E micro va boshqalar.

Ramka to'xtash nuqtalari va qadamlarni qo'llab-quvvatlaydi. Nosozliklarni tuzatish jarayonida dasturchi barcha registrlar va xotiraga kirish huquqiga ega. Bundan tashqari, foydalanuvchiga turli analizatorlar (xotira, stek, xatolar) ham taklif etiladi.

Shuni ta'kidlash kerakki, TrueStudio-da disk raskadrovka jarayoni boshqa shunga o'xshash muhitlar bilan ishlashdan unchalik farq qilmaydi.

Versiyalarni boshqarish tizimlarini qo'llab-quvvatlash. TrueStudio bir nechta foydalanuvchilarga versiyalarni boshqarish tizimlarini qo'llab-quvvatlash orqali bir vaqtning o'zida loyiha ustida ishlash imkonini beradi: CVS, SVN, Git.

STM32Cube bilan o'zaro ta'sir. Yuqorida aytib o'tilganidek, STM32Cube dan foydalanish mikrokontrollerlarni ishga tushirish bosqichida dasturchilarning ishini sezilarli darajada osonlashtiradi. Shuning uchun, STM32Cube bilan birgalikda ishlash qobiliyati TrueStudio uchun juda katta ortiqcha.

STM32Cube sizga loyiha tuzilmasini yaratish, manbalarni avtomatik yaratish va barcha kerakli ko'rsatmalarni o'z ichiga olgan holda tayyor TrueStudio loyihasini yaratishga imkon beradi.

STM32Cube va TrueStudio-ning o'zaro ta'sirini ko'rsatadigan kichik loyiha ushbu maqolaga ilova qilingan videoda keltirilgan. Ushbu loyihada chiqish kanallari PWM yordamida LED yorqinligini boshqaradigan TIM4 taymerini sozlash uchun STM32Cube ishlatiladi. Nosozliklarni tuzatish TrueStudio va STM32F4DISCOVERY platasi yordamida amalga oshiriladi.

Xulosa

2017 yil oxirida STMicroelectronics TrueStudio integratsiyalashgan muhitini ishlab chiqqan Atolic kompaniyasini sotib olganini e'lon qildi. Endi TrueStudio yordamida STM32 foydalanuvchilari har qanday murakkablikdagi ilovalarni mutlaqo bepul yaratishlari mumkin. TrueStudio-ning katta afzalligi uning STM32Cube-ni bevosita qo'llab-quvvatlashidir.

Mikrokontrollerlarning mashhurligi sabablaridan biri STM32 ishlab chiqarish STMikroelektronika– turli ishlab chiqish va disk raskadrovka vositalari. Bu apparat va dasturiy ta'minot uchun ham amal qiladi. Yaratish va disk raskadrovka qilish mumkin rezident dasturiy ta'minot to'plam yordamida moddiy xarajatlarsiz STM32 uchun bepul dasturlar. Maqolada eng muhim bepul dasturiy ta'minot ishlab chiqish vositalarining umumiy ko'rinishi keltirilgan: ST MCU Finder, STM32CubeMX, SW4STM32, STM32 Studio.

Kompaniya STMikroelektronika(ST) dunyodagi eng yirik mikrokontrollerlar ishlab chiqaruvchisi bo'lib, ularning aksariyati STM32 oilasidan keladi. STMicroelectronics yangi boshqaruv liniyalarini ishlab chiqishda bir nechta strategik maqsadlarni ko'zlaydi:

  • mahsuldorlikni oshirish;
  • integratsiya darajasini oshirish: xotira hajmini oshirish, tashqi qurilmalar ro'yxatini kengaytirish;
  • iste'molni kamaytirish;
  • xarajatlarni kamaytirish.

Bu maqsadlar ko'pincha bir-birini inkor etishi har qanday muhandisga ayon. Shu sababli, STMicroelectronics yuqoridagi xususiyatlarning biriga yoki boshqasiga urg'u bergan holda mikrokontrollerlar oilalari va qatorlarini ishlab chiqaradi. Hozirgi vaqtda assortiment o'nta oilani o'z ichiga oladi, ularning har biri o'z afzalliklariga ega va bozorda ma'lum bir joyni egallaydi (1-rasm).

ST dan STM32 mikrokontrollerlar oilalarining qisqacha tavsifini beraylik.

STM32L oilasining kam quvvatli mikrokontrollerlari. Bu guruh birinchi navbatda minimal iste'mol darajasiga erishishga qaratilgan oilalarni birlashtiradi. Buning uchun turli usullar qo'llaniladi: ta'minot kuchlanishini dinamik boshqarish, moslashuvchan soat tizimi, ixtisoslashtirilgan tashqi qurilmalar (LP-Timer, LP-UART), kam iste'mol rejimlarining ishlab chiqilgan tizimi va boshqalar.

STM32F0, STM32F1, STM32F3 asosiy oilalar. Bu guruhga muvozanatli xususiyatlarga ega va ishlash/iste'mol/narxda murosaga ega bo'lgan oilalar kiradi.

O'z navbatida, individual STMCube paketlariga quyidagilar kiradi:

  • mikrokontroller apparati bilan ishlash uchun apparatdan mustaqil HAL kutubxonalari;
  • o'rta darajadagi kutubxonalar. Masalan, eng ilg'or dasturiy ta'minot paketining bir qismi sifatida STM32CubeF7 quyidagi kutubxonalar va steklarni o'z ichiga oladi: FreeRTOS-ga asoslangan CMSIS-RTOS, LwIP-ga asoslangan TCP/IP stek, NAND Flash-ni qo'llab-quvvatlaydigan FatF-larga asoslangan FAT fayl tizimi, StemWin - SEGGER emWin-ga asoslangan grafik stek, to'liq USB stek (host va qurilma) . Sensorli ilovalar uchun Touch Library bir qator oilalar uchun mavjud;
  • turli muhitlar va disk raskadrovka to'plamlari uchun misollar va loyiha shablonlari (Discovery, Nucleo, Evaluation Boards).

STM32Cube dasturiy platformasi komponentlarining oʻzaro taʼsirini tushunish uchun 9-rasmda keltirilgan misolga qarang. Ushbu misolda foydalanuvchi STM32CubeMX yordamida mikrokontrollerni sozlaydi. Vizual sozlashni tugatgandan so'ng (chiqishlar, soatlar va boshqalar) STM32CubeMX buning uchun STM32CubeF4 dasturiy ta'minot to'plamidan C kodini yaratadi; Natijada, foydalanuvchi ma'lum bir integratsiyalashgan rivojlanish muhiti uchun yaratilgan to'liq C loyihasini oladi: IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va AC6 System Workbench (SW4STM32). Ushbu loyiha allaqachon barcha kerakli kutubxonalar va fayllarni o'z ichiga oladi.

STM32CubeMX dasturi dasturchilar ishini ancha osonlashtiradi, lekin uning imkoniyatlari cheksiz emas. Oldinga o'tishdan oldin, mavjud cheklovlarni ta'kidlash kerak:

  • yaratilgan C kodi faqat mikrokontroller bloklari va atrof-muhit birliklarining konfiguratsiyasini qamrab oladi. Bu shuni anglatadiki, dasturning algoritmik qismini avtomatik ravishda yaratib bo'lmaydi, uni qo'lda qo'shish kerak bo'ladi;
  • STM32CubeMX faqat boshlang'ich konfiguratsiyani yaratishga yordam beradi. Ba'zan ish paytida foydalanuvchi periferik blokning ish chastotasini o'zgartirishi yoki chiqish konfiguratsiyasini o'zgartirishi kerak. Bularning barchasini o'zingiz belgilashingiz kerak bo'ladi;
  • standart past darajali kutubxonalar (HAL va LL) va o'rta darajadagi kutubxonalar, masalan, StemWin yoki STM32_USB_Device_Library kod yaratish uchun ishlatiladi;
  • Generatsiya jarayonida C fayli shunday tuzilganki, foydalanuvchi o'z kodini joylashtirishi mumkin bo'lgan maxsus bo'limlar ajratiladi. Agar foydalanuvchi kodi ushbu ramkadan tashqarida bo'lsa, u keyingi avlodlarda qayta yoziladi;
  • STM32CubeMX qo'llanmasida batafsilroq muhokama qilinishi kerak bo'lgan boshqa bloklarga xos cheklovlar mavjud.

Endi STM32CubeMX ning tarkibi, ishlash printsipi va cheklovlari tasvirlangan bo'lsa, biz ushbu dastur bilan ishlashga misol keltirishimiz, oddiy loyihaning "skeletini" yaratishimiz va alohida yordamchi dasturlarning ishlashini namoyish qilishimiz mumkin.

STM32CubeMX yordamida oddiy dastur yaratish

Keling, STM32CubeMX muhitida loyiha skeletini yaratishni batafsil ko'rib chiqaylik. Avval siz STM32CubeMX muhitini yuklab olishingiz kerak. Buni ST veb-saytidan mutlaqo bepul qilish mumkin. O'rnatishdan so'ng, STM32CubeMX o'zi ham, STM32Cube kutubxonalari bo'lgan papkalar ham foydalanuvchi diskida joylashgan bo'ladi.

Loyiha skeletini yaratish jarayoni bosqichma-bosqich amalga oshiriladi.

Birinchi qadam. Maxsus yordamchi dastur yordamida kutubxonalarning joriy versiyalarini yuklab olish. Buning uchun siz avval tarmoq sozlamalarini sozlashingiz kerak (Yordam → Yangilash sozlamalari) va keyin avtomatik yangilanishlarni ishga tushirishingiz kerak (Yordam → Yangilanishlarni tekshirish). Agar kompyuter tarmoqqa ulanmagan bo'lsa, kutubxonalarni qo'lda yangilashingiz kerak bo'ladi.

Ikkinchi qadam. STM32CubeMX ni boshlang'ich ekranda yoki "Fayl" menyusida ishga tushirgandan so'ng, "Yangi loyiha" tugmasini bosish orqali yangi loyiha yaratishingiz kerak. Keyinchalik, STM32CubeMX sizga maqsadli platformani tanlashni taklif qiladi: ko'rsatilgan parametrlarga ega kontroller yoki disk raskadrovka taxtasi. Misol tariqasida, 10-rasmda o'rnatilgan qidiruv quyidagi parametrlar bo'yicha kontrollerlar ro'yxatini qanday tanlaganligi ko'rsatilgan: STM32F4 oilasi, TQFP100 to'plami, Flash hajmi kamida 592 KB, RAM 214 KB dan ortiq.

Uchinchi qadam. Uchinchi bosqichda ishlab chiquvchi Pin ustasi yordamida pinlarning maqsadini aniqlashi kerak (11-rasm). Ushbu yordamchi dastur kerakli konfiguratsiyani yaratishga va uni xatolar uchun tekshirishga yordam beradi. Qulay yoritish tizimini ta'kidlash kerak, masalan, tizim pinlari och sariq rangga bo'yalgan.

To'rtinchi qadam. Soat tizimi Soatni sozlash yorlig'i (Clock Wizard yordam dasturi) yordamida sozlangan. Bunday holda, foydalanuvchi vizuallashtirilgan soat daraxti bilan ishlaydi (12-rasm). Soat ustasi yordamida siz sichqonchani bir necha marta bosish orqali tizim soati signalining manbasini, determinantlar va multiplikatorlarning qiymatlarini, shuningdek, periferik bloklarning soat manbalarini tanlashingiz mumkin. Agar siz kodni qo'lda yozsangiz, bu juda ko'p kuch talab qiladi.

Beshinchi qadam. C kodini yaratish loyiha sozlamalarida maqsadli ramkani tanlash bilan boshlanadi (Loyiha → Sozlamalar). Hozirda foydalanuvchi uchun mavjud: IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va AC6 System Workbench (SW4STM32) (13-rasm). Keyinchalik, "Kod generatori" yorlig'ida siz loyiha katalogiga ko'chirilgan kutubxonalar tarkibi, regeneratsiya paytida foydalanuvchi kodini qayta ishlash sozlamalari (masalan, saqlash yoki o'chirish), HAL-dan foydalanish sozlamalari to'g'risida qaror qabul qilishingiz kerak (13-rasm).

Jeneratorning batafsil sozlamalari uchun Kengaytirilgan sozlamalar yorlig'iga o'ting (14-rasm). STM32CubeMX dagi C-generatorining asosiy xususiyati HAL va LL drayverlaridan foydalanish imkoniyatidir. Bu nuqta batafsilroq muhokama qilinishi kerak.

HAL - bu STM32 kontrollerlari orasida platformalararo maksimal muvofiqlikni ta'minlovchi mavhum drayverlar to'plami. Shu bilan birga, ba'zi drayverlar mutlaqo universaldir (barcha STM32 kontrollerlari uchun mos), ba'zilari esa faqat mos keladigan periferik bloklarga (masalan, shifrlash bloklari) ega bo'lgan alohida liniyalarga tegishli. HAL ning asosiy afzalliklari quyidagilardan iborat:

  • maksimal o'zaro faoliyat platforma;
  • funktsional yo'nalish. Ushbu drayverlar alohida boshqaruv bloklari bilan ishlash uchun emas, balki muayyan vazifalarni bajarish uchun mo'ljallangan. Bu registrlar bilan emas, balki mazmunli funktsiyalar bilan ishlash imkonini beradi;
  • mikrokontroller arxitekturasini chuqur bilish talab qilinmaydi.

Shu bilan birga, HALning kamchiliklari ham bor: kodning katta miqdori, topshiriqni bajarishning etarli darajada optimallashtirilmaganligi va nisbatan past ishlash. Agar bu kamchiliklar juda muhim bo'lsa, unda LL drayverlaridan foydalanish kerak.

Past qatlamli API'lar (LL) apparatga bog'liq bo'lgan drayverlar bo'lib, ular sizga boshqaruvchining tashqi qurilmalari bilan bevosita ishlash, jumladan, inline funktsiyalaridan foydalanish va registrlarga atomik kirishni amalga oshirish imkonini beradi. Ushbu yondashuv katta xotira sarfini talab qilmaydi, funktsiyalar imkon qadar qisqa va tezlikda samarali. LL drayverlarining aniq kamchiliklari bir kontrollerdan ikkinchisiga o'tishda kod mosligini kamaytirish va kontroller arxitekturasini chuqur bilish zarurati.

STM32CubeMX-da bir xil loyiha doirasida siz bir vaqtning o'zida HAL va LL dan foydalanishingiz mumkin, lekin turli periferik birliklar uchun. Masalan, 15-rasmda UART/TIM/RTC uchun LL drayverlari, qolgan bloklar uchun esa HAL qo'llaniladigan C-generator sozlamalari ko'rsatilgan.

Oltinchi qadam. Loyihani o'rnatganingizdan so'ng, loyiha → Kod yaratish menyusiga o'tish orqali kod yaratishingiz kerak. Natijada, ko'rsatilgan loyiha katalogida ko'rsatilgan rivojlanish muhiti uchun loyiha skeleti yaratiladi.

Ba'zan loyihani bir platformadan ikkinchisiga ko'chirish zarurati tug'iladi. STM32CubeMX yordamida buni minimal vaqt bilan amalga oshirish mumkin.

STM32CubeMX yordamida loyihalarni ko'chirish

Loyihani bir platformadan ikkinchisiga ko‘chirish uchun Fayl → Loyihani import qilish qo‘shimcha yordam dasturidan foydalaning (15-rasm). Bu sizdan yangi mikrokontroller turini va migratsiya rejimini belgilashingizni talab qiladi. Shundan so'ng, dastur avtomatik ravishda yangi kodni yaratadi yoki agar yadrolarning to'liq mos kelmasligi bo'lsa, yuzaga kelgan qiyinchiliklarni ko'rsatib, foydalanuvchini ularni yo'q qilishga undaydi.

Migratsiya paytida aniqlangan nomuvofiqliklar tuzatilishi mumkin yoki tuzatilishi mumkin emas. Nazoratchilarning periferik tarkibi sezilarli darajada farq qilganda halokatli holat yuzaga keladi. Masalan, ilgari yangi MKda yo'q bo'lgan chekilgan moduli ishlatilgan (15-rasm). Shubhasiz, bu holatda migratsiya mumkin emas.

Ammo ko'pincha nomuvofiqlik mahalliy xususiyatga ega, masalan, ish chastotalariga mos keladigan soat daraxti parametrlarini qayta sozlash yoki ADC yoki DMA kanal raqamini o'zgartirish va hokazo (16-rasm). Bunday hollarda, STM32CubeMX yuqorida muhokama qilingan yordamchi dasturlarda loyihani tahrirlash orqali yuzaga keladigan har qanday qiyinchiliklarni bartaraf etib, ko'chirishni qo'lda bajarishni taklif qiladi. Bunday holda, STM32CubeMX foydalanuvchiga muammolar mavjudligi haqida ular hal qilinmaguncha signal beradi.

Loyihaning yakuniy skeletini olgandan so'ng, kodning maxsus algoritmik qismini qo'shish, kompilyatsiya qilish va disk raskadrovka qilish qoladi. Buning uchun maxsus muhitlar qo'llaniladi. STM32 uchun AC6 ning SW4STM32 muhiti buni mutlaqo bepul qilish imkonini beradi.

AC6 System Workbench – STM32 uchun bepul IDE

Maxsus integratsiyalangan IDElar dasturlarni tahrirlash, kompilyatsiya qilish va disk raskadrovka qilish uchun mo'ljallangan. Ularning aksariyati tijorat mahsulotlari (IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va boshqalar), ammo AC6 System Workbench kabi bepul vositalar ham mavjud. STMicroelectronics nomlash tizimida ushbu IDE deyiladi SW4STM32.

SW4STM32 integratsiyalashgan muhiti STM32 mikrokontrollerlari bilan ishlash uchun mo'ljallangan. U Eclipse platformasiga asoslangan va bepul va o'zaro faoliyat platformalardir. Uning asosiy afzalliklari quyidagilardan iborat:

  • STM32 mikrokontrollerlari, apparat disk raskadrovka to'plamlari (STM32 Nucleo, Discovery and Evaluation boards), dasturiy ta'minot kutubxonalari (Standart Periferik kutubxona va STM32Cube HAL) bilan ishlashni qo'llab-quvvatlash;
  • dastur kodining miqdori bo'yicha cheklovlar yo'q;
  • bepul GCC C/C++ kompilyatori;
  • bepul GDB tuzatuvchisi (GNU loyihasi);
  • SVN/GIT versiyalarini boshqarish tizimi bilan o'rnatilgan dasturiy ta'minotni guruh ishlab chiqishni qo'llab-quvvatlaydigan ochiq platforma Eclipse IDE;
  • Eclipse plaginlari bilan muvofiqligi;
  • ST-LINK qo'llab-quvvatlash;
  • ko'p platformali va Windows®, Linux va OS X® bilan mos keladi.

SW4STM32 yordamida siz STM32 dasturlarini tahrirlashingiz, kompilyatsiya qilishingiz va disk raskadrovka qilishingiz mumkin. Buning uchun STM32CubeMX da yaratilgan dastur skeletlaridan foydalanish qulay. Ularni import qilish uchun siz eng oddiy amallarni bajarishingiz kerak: Fayl -> Import menyusini tanlang, “Ish maydoniga mavjud loyihalar” import turini belgilang, loyiha katalogini belgilang, loyihaning o‘zini tanlang va “Finish” tugmasini bosing.

STM32CubeMX-da yaratilgan loyihalar bilan ishlashda siz maxsus kodni maxsus bo'limlarga joylashtirishingiz kerak:

/*FOYDALANUVCHI KODI BOSHLADI…*/

/*FOYDALANUVCHI KODI TUGASI…*/

Buni STM32CubeMX-da kodni qayta yaratishda dasturning qo'lda yozilgan qismi qayta yozilmasligi uchun amalga oshirilishi kerak. Regeneratsiya ikki holatda zarur:

  • ishlatilgan MKni qayta sozlashda;
  • bir MK dan ikkinchisiga o'tishda.

Shunday qilib, STM32CubeMX + SW4STM32 bilan birgalikda ishlaganda, foydalanuvchi istalgan vaqtda kontrollerni qayta sozlashi va minimal vaqt bilan foydalanuvchi kodini saqlab qolgan holda migratsiya qilishi mumkin.

SW4STM32 da dasturlarni disk raskadrovka qilishda xotira, registrlar va o'zgaruvchilar holatini keng kuzatish imkoniyati mavjud. Atrof-muhit ham to'xtash nuqtalarini qo'llab-quvvatlaydi (17-rasm). Nosozliklarni tuzatish jarayonini boshlash uchun siz “Nosozliklarni tuzatish” belgisini (qo‘ng‘iz shaklida) bosishingiz, “Ac6 STM32 C/C++ ilovasi” loyiha turini tanlashingiz, tuzatuvchi turi va interfeysini belgilashingiz va “OK” tugmasini bosishingiz kerak. tugmasi.

SW4STM32 SVN/GIT versiya boshqaruv tizimlarini qo'llab-quvvatlaydi. Bu bir nechta ishlab chiquvchilar ustida ishlayotgan yirik loyihalar uchun muhimdir. Versiyalarni boshqarish tizimi quyidagilarga imkon beradi: loyihada kiritilgan barcha o'zgarishlarni ro'yxatdan o'tkazish; loyiha versiyalarini solishtirish; oldingi versiyalarni tiklash; bir fayl ustida bir nechta dasturchilar ishlaganda nizolarni hal qilish; parallel ravishda bir nechta versiyalarni saqlash va hokazo.

Ushbu maqola doirasida SVN va GIT o'rtasidagi nozikliklar va farqlarni o'rganishning ma'nosi yo'q. Aytaylik, GIT taqsimlangan tizim bo'lib, dasturchilarga ishchi mashinada to'liq loyiha omboriga ega bo'lgan holda mahalliy ishlash imkonini beradi. GIT shuningdek, o'zgarishlar metama'lumotlarini saqlaydi, bu versiyalarni birlashtirish va versiyalar o'rtasida almashishni osonlashtiradi. SVN ishlab chiquvchilar o'rtasida tarmoq ulanishini talab qiladi va butun fayllarni saqlaydi. SW4STM32 SVN va GIT-ni qo'llab-quvvatlaydi.

Loyihani SVN ga ulashda harakatlar ketma-ketligini ko'rib chiqamiz (18-rasm).

  • ochiq loyihada kataloglar panelida uning nomini sichqonchaning o‘ng tugmasi bilan bosing va Jamoa → Loyiha(lar)ni ulashing (18a-rasm) ga o‘ting;
  • SVN/GIT tizim turini tanlang va “Keyingi” tugmasini bosing (18b-rasm);
  • SVN uchun katalogni tanlang va "Keyingi" tugmasini bosing (18-rasm);
  • SVN-da loyihani saqlash katalogini tanlang va "Finish" tugmasini bosing (18d-rasm);
  • "Umumiy" yorlig'ida (18e-rasm) SVN URL manzilini, ombor yorlig'ini, foydalanuvchi nomini, parolni tanlang, "Keyingi" tugmasini bosing;
  • loyiha uchun sharhni kiriting, SVN nazorati ostida joylashtiriladigan faylni tanlang, "OK" tugmasini bosing (18e-rasm).

Kelajakda faylni yoki butun loyihani sinxronlashtirish uchun katalog panelidagi uning nomini sichqonchaning o‘ng tugmasi bilan bosishingiz va Jamoa → Tasdiqlash-ni tanlashingiz kerak. Ochilgan oynada o'zgarishlarning tushuntirishini yozing va "OK" tugmasini bosing.

SVN-ni o'chirish uchun siz Team → Disconnect buyrug'idan foydalanishingiz kerak.

SVN dan loyihani import qilish uchun Import → SVN → Project from SVN menyu buyrug'idan foydalaning. Keyinchalik, qalqib chiquvchi dialog oynalarida bir qator import sozlamalarini qilishingiz kerak.

SW4STM32 juda keng imkoniyatlarga ega, ammo atrof-muhit ham erkin muhitlar uchun odatiy bo'lgan kamchiliklarga ega:

  • o'rnatilgan simulyatorning yo'qligi;
  • GCC kompilyatori kod hajmi va ishlashi bo'yicha tijorat hamkasblaridan past;
  • SW4STM32 uchun ishlab chiquvchilarni qo'llab-quvvatlash pullik muhitdagi kabi tezkor bo'lmaydi.

Biroq, shuni ta'kidlash kerakki, bu kamchiliklar, ayniqsa, oddiy loyihalar uchun juda muhim bo'lmasligi mumkin.

Kodni tuzatish nafaqat SW4STM32 da, balki qo'shimcha vositalar yordamida ham amalga oshirilishi mumkin. Keling, ulardan ba'zilarini ko'rib chiqaylik.

STMStudio - STM32 da ilovalarni disk raskadrovka qilishning oson usuli

STM studiyasi- STMicroelectronics tomonidan ishlab chiqarilgan xususiy yordamchi dastur, bu dasturni tuzatishga yordam beradi va real vaqtda kodni bajarishda foydalanuvchi o'zgaruvchilari qiymatlarini kuzatishga imkon beradi. Ushbu dastur Windows OS ostida ishlaydi va mikrokontroller bilan aloqa qilish uchun ST-LINK tuzatuvchisidan foydalanadi.

STM Studio quyidagi xususiyatlarga ega:

  • foydalanuvchi dasturining ishlashiga ta'sir qilmasdan, operativ xotiradan o'zgaruvchilarni "tezda" o'qish;
  • o'zgaruvchilarni import qilish uchun .elf, .out, .axf bajariladigan fayllardan foydalanish;
  • o'zgaruvchan qiymatlarni jadval va grafik shaklda ko'rsatish;
  • grafik yoki diagramma ko'rinishidagi grafik chiqish;
  • o'zgaruvchilardan biri X o'qi bo'ylab, ikkinchisi esa Y o'qi bo'ylab chizilganda o'zgaruvchilarning bog'liqligini ko'rsatish imkoniyati;
  • Keyinchalik ko'rish uchun ma'lumotlarni faylga yozish.

STM Studio oynasi bir nechta panellardan iborat (19-rasm).

STM Studio bilan ishlash o'zgaruvchilarni import qilishdan boshlanadi. Buni amalga oshirish uchun siz mikrokontrollerning o'zida joylashgan dasturga bir xil ijrochi faylni yuklashingiz kerak. Buning uchun kompilyatsiya paytida hosil bo'ladigan quyidagi formatlar mos keladi: .elf, .out, .axf. Keyinchalik Fayl → O'zgaruvchilarni import qilish buyrug'ini bajarishingiz kerak. Muloqot oynasida "Jadval elementlarini kengaytirish" bandini tanlashda foydalanuvchi taklif qilingan jadvaldan istalgan global o'zgaruvchilarni qo'lda tanlashi mumkin bo'ladi. Nosozliklarni tuzatishni boshlash uchun siz "Ishga tushirish" buyrug'ini bajarishingiz kerak.

Yuqorida aytib o'tilganidek, STM Studio o'zgaruvchilarni uchta ko'rinishda ko'rsatish imkonini beradi: matn, diagramma va grafik (20-rasm). Displey turi sozlamalari istalgan vaqtda o'zgartirilishi mumkin. Bundan tashqari, barcha ma'lumotlar qo'shimcha tahlil qilish uchun jurnal faylida qo'shimcha ravishda qayd etiladi. STM Studio ning qiziqarli xususiyati ba'zi o'zgaruvchilarning boshqalarga bog'liqligini ko'rsatish, shuningdek, o'zgaruvchilardan ifodalarni qurish qobiliyatidir.

Nosozliklarni tuzatish ma'lumotlarini uzatishning mashhur usuli konsol va printf() chiqish funksiyasidan foydalanishdir.

USART orqali printf() terminal chiqishini amalga oshirish

Standart printf() funktsiyasidan foydalanish disk raskadrovka ma'lumotlarini chiqarishning eng mashhur usullaridan biridir. Ushbu chiqish funktsiyasidan foydalanib, foydalanuvchi har qanday ma'lumotlarni ishlab chiqish muhiti konsoliga yoki terminalga o'tkazishi mumkin. Ko'pgina integratsiyalashgan muhitlar bu xususiyatni qo'llab-quvvatlaydi. STM32 dan foydalanganda ushbu usulni amalga oshirishning ikki yo'li mavjud: an'anaviy, UART yordamida va qo'shimcha, ST-LINK tuzatuvchisi yordamida SWO interfeysi orqali. STM32CubeMX va SW4STM32 dan foydalanganda ularning har birini amalga oshirish imkon qadar soddalashtirilgan.

Keling, birinchi amalga oshirish variantini ko'rib chiqaylik - UART orqali. Buning uchun siz quyidagi harakatlar ketma-ketligini bajarishingiz kerak bo'ladi:

  • kompyuterga apparat ulanishini ta'minlash;
  • UARTni STM32CubeMX muhitida sozlash;
  • printf() funksiyasining o'zini SW4STM32 muhitida amalga oshiring.

Kompyuterga ulanish uchta usulda amalga oshirilishi mumkin: MAQOMOTI porti va RS-232 qabul qiluvchi chipi orqali; USB port va UART-USB konvertor chipi orqali (masalan, FT232); ST-LINK USB disk raskadrovka interfeysi yordamida. Qaysi usul tanlangan bo'lishidan qat'i nazar, UART apparati sozlanishi kerak.

STM32CubeMX yordamida UART konfiguratsiyasi bir necha marta bosish orqali amalga oshiriladi (21-rasm). Birinchidan, "Pin ustasi" yorlig'ida mos keladigan kontroller pinlari UART ish rejimiga o'tkaziladi. Keyinchalik, "Konfiguratsiya" yorlig'ida UART parametrlari sozlanadi: almashinuv turi, tezligi, to'xtash bitlarining mavjudligi va boshqalar. Shundan so'ng C kodi yaratiladi.

SW4STM32 muhitida siz standart kutubxonani qo'shishingiz va _io_putchar() va _write() funktsiyalarini belgilashingiz kerak, masalan:

/*FOYDALANUVCHI KODI BAGIN o‘z ichiga oladi*/

#o'z ichiga oladi

/*FOYDALANUVCHI KODI END o‘z ichiga oladi*/

/*FOYDALANUVCHI KODI 1-BOSHLADI*/

int __io_putchar(int ch)

c = ch & 0x00FF;

HAL_UART_Transmit(&huart2,&*c,1,10);

int _write (int fayl, char *ptr, int len)

uchun (DataIdx = 0; DataIdx< len; DataIdx++)

Nosozliklarni tuzatish ma'lumotlarini uzatishda ushbu yondashuvning afzalliklarini ko'rib chiqish mumkin:

  • istisnosiz barcha STM32 mikrokontrollerlarida mavjud bo'lgan UART interfeysidan foydalanish;
  • dasturchilar uchun sozlash va tanishlik qulayligi. Boshqa kontrollerlar bilan loyihalardagi eski ishlanmalardan foydalanishingiz mumkin;
  • murakkab uskunaning yo'qligi (UART-USB ko'prigi yoki RS-232 qabul qiluvchidan tashqari);
  • murakkab dasturiy ta'minotning etishmasligi. Barcha IDE yoki terminal dasturlari bilan ishlaydi.

Biroq, bu usulning ham kamchiliklari bor. Birinchidan, disk raskadrovka uchun UART kanalini qurbon qilishingiz kerak bo'ladi. Va ikkinchidan, bunday dastur boshqaruvchining ishlashiga ta'sir qiladi, chunki u printf() funktsiya kodini qayta ishlash uchun yadroni egallaydi. STM32 misolida, mikrokontroller resurslarini egallamaydigan yanada ixtisoslashgan va eng muhimi, oddiyroq usul mavjud - SWO va ST-LINK kombinatsiyasidan foydalanish.

SWO orqali printf() terminali chiqishini amalga oshirish

SWO va ST-LINK kombinatsiyasidan foydalanilganda, I/U terminalini yaratish yuqorida UART apparatida muhokama qilingan usuldan ko'ra osonroqdir. Bunday holda, shaxsiy kompyuter bilan aloqa SWO interfeysi va ST-LINK da ishlatiladigan USB interfeysi orqali amalga oshiriladi. Harakatlar ketma-ketligi avvalgi holatda bo'lgani kabi taxminan bir xil bo'lib qoladi.

Birinchidan, STM32CubeMX yordamida SWO interfeysi pinlari "Pin ustasi" va "Konfiguratsiya" yorliqlarida sozlangan (22-rasm). Shundan so'ng, rivojlanish muhiti uchun kod qayta tiklanadi.

Keyingi qadam __io_putchar(int ch) ishlov beruvchisi uchun kod yozishdir, masalan:

/*FOYDALANUVCHI KODI 1-BOSHLADI*/

int __io_putchar(int ch)

ITM_SendChar(ch);

/*FOYDALANUVCHI KOD 1*/

Nosozliklarni tuzatish uchun STLink Utility yordam dasturidan foydalanish qulay (23-rasm).

Usulning afzalliklari:

  • qo'shimcha resurslarni talab qilmaydi va aloqa interfeyslarini egallamaydi;
  • asosiy dastur bilan parallel ishlaydi va uni bajarish tezligiga ta'sir qilmaydi, chunki u yadrodan hisob-kitoblar uchun foydalanmaydi;
  • bortida ST-LINK bilan disk raskadrovka to'plamlari uchun ideal tanlov, chunki u tayyor yechimni ifodalaydi.

Ushbu amalga oshirish usulining kamchiliklari orasida apparatga bog'liqlikni ta'kidlash mumkin, chunki ST-LINK talab qilinadi.

Xulosa

STMicroelectronics kompaniyasi STM32 mikrokontrollerlarining yetti yuzdan ortiq modellarini ishlab chiqaradi, ular ishlash/iste’mol/narx/integratsiya darajasida farqlanadi. Har bir foydalanuvchi ma'lum bir ilova talablarini inobatga olgan holda optimal modelni tanlashi mumkin bo'ladi.

STM32 ning muhim afzalligi - bu disk raskadrovka vositalarining ishlab chiqilgan tizimining mavjudligi. Ishlab chiquvchilarga yuzdan ortiq disk raskadrovka taxtalari (Nucleo, Discovery, Evaluation Boards) taklif etiladi. Dastur kodini yaratish, kompilyatsiya qilish va disk raskadrovka qilish uchun bepul amaliy dasturlarning to'liq to'plami mavjudligi dasturchilar uchun yanada katta yordam bo'ladi:

ST MCU Finder - bu ma'lum bir ilova uchun eng maqbul MCU ni tanlashga yordam beruvchi smartfonlar uchun ilova;

STM32CubeMX - bu STM32 mikrokontrollerlarini sozlash va avtomatik ravishda kod ishlab chiqarish uchun platformalararo grafik muharrir. STM32CubeMX shuningdek, optimal mikrokontrollerni tanlashda, quvvat sarfini baholashda va turli MCUlar o'rtasida loyiha migratsiyasini soddalashtirishda yordam ko'rsatishga qodir.

SW4STM32 - bu STM32 mikrokontrollerlari uchun platformalararo integratsiyalashgan dasturiy ta'minotni ishlab chiqish muhiti.

STM32 Studio - real vaqt rejimida kodni bajarish paytida o'zgaruvchan qiymatlarni kuzatish va grafik vizualizatsiya qilish uchun yordamchi dastur.

ST-LINK Utility sizga ST-Link dasturchisi bilan birgalikda SWO interfeysi orqali disk raskadrovka ma'lumotlarini kiritish va chiqarish imkonini beradi.

Ushbu dasturiy ta'minot to'plami bir rubl sarflamasdan rezident dasturiy ta'minotni to'liq ishlab chiqish tsiklini yakunlash imkonini beradi.

Adabiyot

  1. Qisqacha ma'lumotlar. NUCLEO-XXXXXKX. STM32 Nucleo-32 platasi. Rev 3. ST Microelectronics, 2016 yil.
  2. Qisqacha ma'lumotlar. NUCLEO-XXXXXRX. STM32 Nucleo-64 platasi. Rev 8. ST Microelectronics, 2016 yil.
  3. Qisqacha ma'lumotlar. NUCLEO-XXXXXZX. STM32 Nucleo-144 platasi. Rev 5. ST Microelectronics, 2017.
  4. UM1718. Foydalanuvchi uchun qo'llanma. STM32 konfiguratsiyasi va ishga tushirish C kodini yaratish uchun STM32CubeMX. Rev 18. ST Microelectronics, 2017.
  5. UM1884. Foydalanuvchi uchun qo'llanma. STM32L4 HAL va past qatlamli drayverlarning tavsifi. Rev 5. ST Microelectronics, 2016 yil.
  6. UM1025. Foydalanuvchi uchun qo'llanma. STM-STUDIO bilan ishlashni boshlash. Rev6. ST Microelectronics, 2013 yil.
  7. UM0892.Foydalanuvchi qoʻllanmasi STM32 ST-LINK yordam dasturi taʼrifi. Rev 22. ST Microelectronics, 2016 yil.

Bizga quyidagi paketlar kerak bo'ladi, ulardan ba'zilari oldingi postda aytib o'tilgan:

yaourt -S arm-none-eabi-gcc arm-none-eabi-gdb \
arm-none-eabi-newlib stlink stm32cubemx openocd

Bular Arch Linux uchun paket nomlari, biroq men boshqa Linux distributivlarida bir xil nomlar yoki shunga o'xshash narsa borligiga ishonchim komil. Agar siz STM32CubeMX bilan tayyor paketni topa olmasangiz, dasturni shu yerdan yuklab olishingiz mumkin (roʻyxatdan oʻtish kerak). Ilova ishlash uchun Java virtual mashinasini talab qiladi. Dastur .exe kengaytmasiga ega bo'lsa ham, java orqali Linuxda mukammal ishlaydi -jar file.exe .

Majburiy emas, shuningdek, yuklab olish mumkin bo'lgan STLinkUpgrade dasturini yuklab olishingiz mumkin (ro'yxatdan o'tish ham talab qilinadi). Ushbu dastur STLink dasturchilarining dasturiy ta'minotini yangilash uchun mo'ljallangan, bu ko'pincha xatolarni tuzatishga yoki hech bo'lmaganda xato xabarlarini yaxshilashga olib keladi. STM32CubeMX singari, bu dastur Java tilida yozilgan.

Muhim temir

Professional dasturiy ta'minotga qo'shimcha ravishda, bizga professional apparat ham kerak bo'ladi. Oxirgi postda ko'rib chiqilgan Blue Pill kengashi odatda yomon emas, lekin uni ishlatish biroz noqulay. Xususan, tashqi dasturchini qo'shimcha simlari bilan ulashingiz kerak. Bundan tashqari, STM32CubeMX ushbu kengash haqida hech narsa bilmaydi, bu ham o'zining noqulayliklarini keltirib chiqaradi. Nihoyat, agar sizda bu kengash hali bo'lmasa, uni AliExpress'dan kelishini kutishingiz kerak bo'ladi.

STMicroelectronics o'zining Discovery va Nucleo seriyali ishlab chiqish platalarini ishlab chiqaradi. Ikkinchisi yangiroq, shuning uchun biz e'tiborimizni ularga qaratamiz. STM32 Nucleo platalarida o'rnatilgan STLink v2.1 tuzatuvchisi mavjud bo'lib, bu bizni keraksiz simlardan qutqaradi. Ular ma'lum darajada Arduino qalqonlari bilan mos keladi, bu foydali bo'lishi mumkin. Rossiyada Nucleo platalarining narxi Nucleo-F030R8 platasi uchun 19 dollardan boshlanadi va uni bugungi kunda istalgan Chip-and-Dip-da xarid qilishingiz mumkin.

Shaxsan men o'sish uchun yanada kuchli taxtani oldim - Nucleo-F411RE, aytganda:

Soat konfiguratsiyasi va konfiguratsiyasi deb nomlangan boshqa ikkita yorliqda bu safar biz hech narsani o'zgartirishimiz shart emas. Quvvat iste'moli kalkulyatori yorlig'ida siz tanlangan batareya va ish kuchlanishiga qarab mikrokontrollerning quvvat sarfini va uning ish vaqtini taxmin qilishingiz mumkin. Aytishim kerakki, juda qiziqarli va foydali imkoniyat.

Bu sozlashni yakunlaydi. Loyiha → Kod yaratish deb ayting. Loyiha ko'rinishida loyiha nomini kiriting (Loyiha nomi), tanlang ota-ona ushbu loyiha uchun katalog (Loyiha joylashuvi), Toolchain / IDE ochiladigan ro'yxatida "Makefile" opsiyasini tanlang. Kod ishlab chiqaruvchisi yorlig'ida "Asboblar zanjiri loyihasi konfiguratsiya fayliga mos yozuvlar sifatida kerakli kutubxona fayllarini qo'shish" variantini tanlang. Aks holda, barcha kutubxona fayllari 160 MB dan ortiq bo'lgan loyihangizga ko'chiriladi. Keyin OK tugmasini bosing. STM32CubeMX loyihasi avtomatik ravishda manba kodi katalogida (.ioc kengaytmali fayl) saqlanadi, shuning uchun uni alohida saqlash shart emas.

Olingan loyihadagi Makefile biroz sozlanishi kerak. Birinchidan, siz BINPATH va PREFIX o'zgaruvchilari qiymatini to'g'rilashingiz kerak:

BINPATH=/usr/bin
PREFIX =arm-none-eabi-

Aks holda, kompilyatorning bajariladigan fayllari topilmaydi.

Ikkinchidan, siz OPT o'zgaruvchisini topishingiz va unga -Wall bayrog'ini qo'shishingiz kerak:

OPT = -Og -devor

Aks holda, kompilyator xatolarni o'z ichiga olgan kod haqida shikoyat qilmaydi - masalan, ifoda agar (arr[ i] = 1 ), uning o'rnida deyarli albatta bo'lishi kerak agar (arr[ i] == 1 ) .

Uchinchidan, agar bu qadamdan keyin aytsak qilish, siz quyidagi kabi xatolar olishingiz mumkin:

Yozish vaqtida STM32CubeMX xatosi bor edi, unda u bir xil fayllarni C_SOURCES ro'yxatiga bir necha marta kiritgan. Ushbu ro'yxatni Makefile-da topishingiz va undan barcha takroriy narsalarni olib tashlashingiz kerak.

To'rtinchidan, Makefile loyihani kompilyatsiya qilishi mumkin, lekin platani miltillash, tozalash yoki UART orqali ulanish uchun maqsadlarni o'z ichiga olmaydi. Qo'shishga arziydi:

# bo'sh joy emas, chekinish uchun yorliqlardan foydalanganingizga ishonch hosil qiling!
flesh: hammasi
st-flash --reset write build/ $(TARGET).bin 0x8000000
o'chirish:
st-flash - o'chirishni tiklash
uart:
ekran /dev/ttyACM0

Va nihoyat, haqiqiy zaruratdan ko'ra mukammallik sabablariga ko'ra, men barcha mutlaq yo'llarni nisbiy yo'llar bilan almashtirgan bo'lardim, masalan:

FIRMWARE = ​​$(HOME) / STM32Cube/ Repository/ STM32Cube_FW_F4_V1.18.0

... va Makefile faylini dos2unix yordam dasturi orqali ham ishga tushiradi.

Bu vaqtda shablon/ramkaning tayyorlanishi tugallangan deb hisoblanishi mumkin! Har safar yangi loyiha yaratganingizda yuqorida tavsiflangan bosqichlarni bajarmaslik uchun shablonni xavfsiz joyda saqlashingiz kerak. Ushbu shablonni qayta ishlatishda loyiha nomini tahrirlashning oldini olish uchun siz TARGET o'zgaruvchisining qiymatini ham ba'zi mavhum main ga o'zgartirishingiz kerak.

Keling, kod yozamiz!

Agar siz Src/main.c faylini ochsangiz, unda quyidagi belgilarni topasiz:

/* FOYDALANUVCHI KODU BAŞLASH o‘z ichiga oladi */

/* FOYDALANUVCHI KODI END o‘z ichiga oladi */

Rejalashtirilganidek, STM32CubeMX-da loyihani yangilashda foydalanuvchi kodi qayta yozilmasligi uchun ushbu sharhlar orasiga kod kiritilishi kerak. Shaxsan men init protseduralariga qo'ng'iroqni qo'shdim () va halqa () asosiy dastur tsikli yaqinida:

/* Cheksiz tsikl */
/* FOYDALANUVCHI KODI BOSHLANADI */
init();
while(1)
{
loop();
/* FOYDALANUVCHI KODI TUGADI */

/* FOYDALANUVCHI KODI 3 dan boshlanadi */
}
/* FOYDALANUVCHI KODI 3*/

... va protseduralarning o'zi asosiy protseduradan oldin e'lon qilingan () :

/* FOYDALANUVCHI KODI 0 dan boshlanadi */

void init(void) (
/* hech narsa qilma, hali */
}

bekor halqa (bo'sh) (
/*
HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay (500);
HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay (500);
*/

agar (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET) (
HAL_GPIO_TogglePin (GPIOA, GPIO_PIN_5) ;
}

HAL_Delay (100) ;
}

/* FOYDALANUVCHI KODI 0 */

Mikrokontroller HAL, Hardware Abstraction Layer deb nomlangan kutubxona orqali boshqariladi. Ko'rib turganingizdek, tugmachalarni va miltillovchi LEDlarni odatiy o'qishga kelsak, bu erda hamma narsa bir xil Arduino-ga qaraganda ancha murakkab emas.

Biz taxtani bog'laymiz va gaplashamiz flesh yasang. Agar hamma narsa to'g'ri bajarilgan bo'lsa, taxtadagi ko'k tugmani bosish yashil LEDning o'zgarishiga olib keladi. Siz uni loop protsedurasida ham qoldirishingiz mumkin () faqat yuqoridagi parchada men izohlagan kod, keyin dastur oddiy Blinkga aylanadi.

Muhim! Ba'zida mikrokontroller qora Reset tugmasini bosmasdan yangi proshivka bilan boshlamaydi. Nazariy jihatdan, STLinkUpgrade yordam dasturi yordamida dasturchi proshivkasini yangilash va Makefile-dagi kabi --reset bayrog'i bilan st-flash yordam dasturidan foydalanish bu muammoni hal qiladi. Ammo u tartibsiz ko'payganligi sababli, to'liq ishonch yo'q.

Xulosa

Ko'rib turganingizdek, hamma narsa unchalik murakkab emas. Olingan bilimlar, masalan, LCD displeyda biror narsani ko'rsatadigan yoki Sega joystickidan signalni dekodlaydigan dastur yozish uchun allaqachon etarli. Siz hatto SPI yoki I2C orqali ba'zi uchinchi tomon modullari bilan bog'lanishingiz mumkin, garchi bu unchalik samarali bo'lmasa-da, agar mikrokontroller ushbu protokollar uchun apparat ta'minotiga ega ekanligini eslasangiz. Biroq, bu mavzular, xuddi PWM, analog signalni o'qish, uzilishlar yoki disk raskadrovka kodi bilan ishlash, afsuski, bu juda uzoq maqola doirasidan tashqarida.

Odatdagidek, GitHub-da ushbu postning to'liq manba kodini topasiz.

STM32 uchun qanday rivojlanasiz?

Qo'shimcha: Agar sizga ushbu post yoqqan bo'lsa, STM32 mikrokontrollerlari kontekstida UART, SPI, I2C va I2S aloqasi haqidagi maqolalar sizni qiziqtirishi mumkin. Shuningdek, postlarga e'tibor bering

Mikrokontrollerlarning mashhurligi sabablaridan biri STM32 ishlab chiqarish STMikroelektronika– turli ishlab chiqish va disk raskadrovka vositalari. Bu apparat va dasturiy ta'minot uchun ham amal qiladi. Yaratish va disk raskadrovka qilish mumkin rezident dasturiy ta'minot to'plam yordamida moddiy xarajatlarsiz STM32 uchun bepul dasturlar. Maqolada eng muhim bepul dasturiy ta'minot ishlab chiqish vositalarining umumiy ko'rinishi keltirilgan: ST MCU Finder, STM32CubeMX, SW4STM32, STM32 Studio.

Kompaniya STMikroelektronika(ST) dunyodagi eng yirik mikrokontrollerlar ishlab chiqaruvchisi bo'lib, ularning aksariyati STM32 oilasidan keladi. STMicroelectronics yangi boshqaruv liniyalarini ishlab chiqishda bir nechta strategik maqsadlarni ko'zlaydi:

  • mahsuldorlikni oshirish;
  • integratsiya darajasini oshirish: xotira hajmini oshirish, tashqi qurilmalar ro'yxatini kengaytirish;
  • iste'molni kamaytirish;
  • xarajatlarni kamaytirish.

Bu maqsadlar ko'pincha bir-birini inkor etishi har qanday muhandisga ayon. Shu sababli, STMicroelectronics yuqoridagi xususiyatlarning biriga yoki boshqasiga urg'u bergan holda mikrokontrollerlar oilalari va qatorlarini ishlab chiqaradi. Hozirgi vaqtda assortiment o'nta oilani o'z ichiga oladi, ularning har biri o'z afzalliklariga ega va bozorda ma'lum bir joyni egallaydi (1-rasm).

ST dan STM32 mikrokontrollerlar oilalarining qisqacha tavsifini beraylik.

STM32L oilasining kam quvvatli mikrokontrollerlari. Bu guruh birinchi navbatda minimal iste'mol darajasiga erishishga qaratilgan oilalarni birlashtiradi. Buning uchun turli usullar qo'llaniladi: ta'minot kuchlanishini dinamik boshqarish, moslashuvchan soat tizimi, ixtisoslashtirilgan tashqi qurilmalar (LP-Timer, LP-UART), kam iste'mol rejimlarining ishlab chiqilgan tizimi va boshqalar.

STM32F0, STM32F1, STM32F3 asosiy oilalar. Bu guruhga muvozanatli xususiyatlarga ega va ishlash/iste'mol/narxda murosaga ega bo'lgan oilalar kiradi.

O'z navbatida, individual STMCube paketlariga quyidagilar kiradi:

  • mikrokontroller apparati bilan ishlash uchun apparatdan mustaqil HAL kutubxonalari;
  • o'rta darajadagi kutubxonalar. Masalan, eng ilg'or dasturiy ta'minot paketining bir qismi sifatida STM32CubeF7 quyidagi kutubxonalar va steklarni o'z ichiga oladi: FreeRTOS-ga asoslangan CMSIS-RTOS, LwIP-ga asoslangan TCP/IP stek, NAND Flash-ni qo'llab-quvvatlaydigan FatF-larga asoslangan FAT fayl tizimi, StemWin - SEGGER emWin-ga asoslangan grafik stek, to'liq USB stek (host va qurilma) . Sensorli ilovalar uchun Touch Library bir qator oilalar uchun mavjud;
  • turli muhitlar va disk raskadrovka to'plamlari uchun misollar va loyiha shablonlari (Discovery, Nucleo, Evaluation Boards).

STM32Cube dasturiy platformasi komponentlarining oʻzaro taʼsirini tushunish uchun 9-rasmda keltirilgan misolga qarang. Ushbu misolda foydalanuvchi STM32CubeMX yordamida mikrokontrollerni sozlaydi. Vizual sozlashni tugatgandan so'ng (chiqishlar, soatlar va boshqalar) STM32CubeMX buning uchun STM32CubeF4 dasturiy ta'minot to'plamidan C kodini yaratadi; Natijada, foydalanuvchi ma'lum bir integratsiyalashgan rivojlanish muhiti uchun yaratilgan to'liq C loyihasini oladi: IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va AC6 System Workbench (SW4STM32). Ushbu loyiha allaqachon barcha kerakli kutubxonalar va fayllarni o'z ichiga oladi.

STM32CubeMX dasturi dasturchilar ishini ancha osonlashtiradi, lekin uning imkoniyatlari cheksiz emas. Oldinga o'tishdan oldin, mavjud cheklovlarni ta'kidlash kerak:

  • yaratilgan C kodi faqat mikrokontroller bloklari va atrof-muhit birliklarining konfiguratsiyasini qamrab oladi. Bu shuni anglatadiki, dasturning algoritmik qismini avtomatik ravishda yaratib bo'lmaydi, uni qo'lda qo'shish kerak bo'ladi;
  • STM32CubeMX faqat boshlang'ich konfiguratsiyani yaratishga yordam beradi. Ba'zan ish paytida foydalanuvchi periferik blokning ish chastotasini o'zgartirishi yoki chiqish konfiguratsiyasini o'zgartirishi kerak. Bularning barchasini o'zingiz belgilashingiz kerak bo'ladi;
  • standart past darajali kutubxonalar (HAL va LL) va o'rta darajadagi kutubxonalar, masalan, StemWin yoki STM32_USB_Device_Library kod yaratish uchun ishlatiladi;
  • Generatsiya jarayonida C fayli shunday tuzilganki, foydalanuvchi o'z kodini joylashtirishi mumkin bo'lgan maxsus bo'limlar ajratiladi. Agar foydalanuvchi kodi ushbu ramkadan tashqarida bo'lsa, u keyingi avlodlarda qayta yoziladi;
  • STM32CubeMX qo'llanmasida batafsilroq muhokama qilinishi kerak bo'lgan boshqa bloklarga xos cheklovlar mavjud.

Endi STM32CubeMX ning tarkibi, ishlash printsipi va cheklovlari tasvirlangan bo'lsa, biz ushbu dastur bilan ishlashga misol keltirishimiz, oddiy loyihaning "skeletini" yaratishimiz va alohida yordamchi dasturlarning ishlashini namoyish qilishimiz mumkin.

STM32CubeMX yordamida oddiy dastur yaratish

Keling, STM32CubeMX muhitida loyiha skeletini yaratishni batafsil ko'rib chiqaylik. Avval siz STM32CubeMX muhitini yuklab olishingiz kerak. Buni ST veb-saytidan mutlaqo bepul qilish mumkin. O'rnatishdan so'ng, STM32CubeMX o'zi ham, STM32Cube kutubxonalari bo'lgan papkalar ham foydalanuvchi diskida joylashgan bo'ladi.

Loyiha skeletini yaratish jarayoni bosqichma-bosqich amalga oshiriladi.

Birinchi qadam. Maxsus yordamchi dastur yordamida kutubxonalarning joriy versiyalarini yuklab olish. Buning uchun siz avval tarmoq sozlamalarini sozlashingiz kerak (Yordam → Yangilash sozlamalari) va keyin avtomatik yangilanishlarni ishga tushirishingiz kerak (Yordam → Yangilanishlarni tekshirish). Agar kompyuter tarmoqqa ulanmagan bo'lsa, kutubxonalarni qo'lda yangilashingiz kerak bo'ladi.

Ikkinchi qadam. STM32CubeMX ni boshlang'ich ekranda yoki "Fayl" menyusida ishga tushirgandan so'ng, "Yangi loyiha" tugmasini bosish orqali yangi loyiha yaratishingiz kerak. Keyinchalik, STM32CubeMX sizga maqsadli platformani tanlashni taklif qiladi: ko'rsatilgan parametrlarga ega kontroller yoki disk raskadrovka taxtasi. Misol tariqasida, 10-rasmda o'rnatilgan qidiruv quyidagi parametrlar bo'yicha kontrollerlar ro'yxatini qanday tanlaganligi ko'rsatilgan: STM32F4 oilasi, TQFP100 to'plami, Flash hajmi kamida 592 KB, RAM 214 KB dan ortiq.

Uchinchi qadam. Uchinchi bosqichda ishlab chiquvchi Pin ustasi yordamida pinlarning maqsadini aniqlashi kerak (11-rasm). Ushbu yordamchi dastur kerakli konfiguratsiyani yaratishga va uni xatolar uchun tekshirishga yordam beradi. Qulay yoritish tizimini ta'kidlash kerak, masalan, tizim pinlari och sariq rangga bo'yalgan.

To'rtinchi qadam. Soat tizimi Soatni sozlash yorlig'i (Clock Wizard yordam dasturi) yordamida sozlangan. Bunday holda, foydalanuvchi vizuallashtirilgan soat daraxti bilan ishlaydi (12-rasm). Soat ustasi yordamida siz sichqonchani bir necha marta bosish orqali tizim soati signalining manbasini, determinantlar va multiplikatorlarning qiymatlarini, shuningdek, periferik bloklarning soat manbalarini tanlashingiz mumkin. Agar siz kodni qo'lda yozsangiz, bu juda ko'p kuch talab qiladi.

Beshinchi qadam. C kodini yaratish loyiha sozlamalarida maqsadli ramkani tanlash bilan boshlanadi (Loyiha → Sozlamalar). Hozirda foydalanuvchi uchun mavjud: IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va AC6 System Workbench (SW4STM32) (13-rasm). Keyinchalik, "Kod generatori" yorlig'ida siz loyiha katalogiga ko'chirilgan kutubxonalar tarkibi, regeneratsiya paytida foydalanuvchi kodini qayta ishlash sozlamalari (masalan, saqlash yoki o'chirish), HAL-dan foydalanish sozlamalari to'g'risida qaror qabul qilishingiz kerak (13-rasm).

Jeneratorning batafsil sozlamalari uchun Kengaytirilgan sozlamalar yorlig'iga o'ting (14-rasm). STM32CubeMX dagi C-generatorining asosiy xususiyati HAL va LL drayverlaridan foydalanish imkoniyatidir. Bu nuqta batafsilroq muhokama qilinishi kerak.

HAL - bu STM32 kontrollerlari orasida platformalararo maksimal muvofiqlikni ta'minlovchi mavhum drayverlar to'plami. Shu bilan birga, ba'zi drayverlar mutlaqo universaldir (barcha STM32 kontrollerlari uchun mos), ba'zilari esa faqat mos keladigan periferik bloklarga (masalan, shifrlash bloklari) ega bo'lgan alohida liniyalarga tegishli. HAL ning asosiy afzalliklari quyidagilardan iborat:

  • maksimal o'zaro faoliyat platforma;
  • funktsional yo'nalish. Ushbu drayverlar alohida boshqaruv bloklari bilan ishlash uchun emas, balki muayyan vazifalarni bajarish uchun mo'ljallangan. Bu registrlar bilan emas, balki mazmunli funktsiyalar bilan ishlash imkonini beradi;
  • mikrokontroller arxitekturasini chuqur bilish talab qilinmaydi.

Shu bilan birga, HALning kamchiliklari ham bor: kodning katta miqdori, topshiriqni bajarishning etarli darajada optimallashtirilmaganligi va nisbatan past ishlash. Agar bu kamchiliklar juda muhim bo'lsa, unda LL drayverlaridan foydalanish kerak.

Past qatlamli API'lar (LL) apparatga bog'liq bo'lgan drayverlar bo'lib, ular sizga boshqaruvchining tashqi qurilmalari bilan bevosita ishlash, jumladan, inline funktsiyalaridan foydalanish va registrlarga atomik kirishni amalga oshirish imkonini beradi. Ushbu yondashuv katta xotira sarfini talab qilmaydi, funktsiyalar imkon qadar qisqa va tezlikda samarali. LL drayverlarining aniq kamchiliklari bir kontrollerdan ikkinchisiga o'tishda kod mosligini kamaytirish va kontroller arxitekturasini chuqur bilish zarurati.

STM32CubeMX-da bir xil loyiha doirasida siz bir vaqtning o'zida HAL va LL dan foydalanishingiz mumkin, lekin turli periferik birliklar uchun. Masalan, 15-rasmda UART/TIM/RTC uchun LL drayverlari, qolgan bloklar uchun esa HAL qo'llaniladigan C-generator sozlamalari ko'rsatilgan.

Oltinchi qadam. Loyihani o'rnatganingizdan so'ng, loyiha → Kod yaratish menyusiga o'tish orqali kod yaratishingiz kerak. Natijada, ko'rsatilgan loyiha katalogida ko'rsatilgan rivojlanish muhiti uchun loyiha skeleti yaratiladi.

Ba'zan loyihani bir platformadan ikkinchisiga ko'chirish zarurati tug'iladi. STM32CubeMX yordamida buni minimal vaqt bilan amalga oshirish mumkin.

STM32CubeMX yordamida loyihalarni ko'chirish

Loyihani bir platformadan ikkinchisiga ko‘chirish uchun Fayl → Loyihani import qilish qo‘shimcha yordam dasturidan foydalaning (15-rasm). Bu sizdan yangi mikrokontroller turini va migratsiya rejimini belgilashingizni talab qiladi. Shundan so'ng, dastur avtomatik ravishda yangi kodni yaratadi yoki agar yadrolarning to'liq mos kelmasligi bo'lsa, yuzaga kelgan qiyinchiliklarni ko'rsatib, foydalanuvchini ularni yo'q qilishga undaydi.

Migratsiya paytida aniqlangan nomuvofiqliklar tuzatilishi mumkin yoki tuzatilishi mumkin emas. Nazoratchilarning periferik tarkibi sezilarli darajada farq qilganda halokatli holat yuzaga keladi. Masalan, ilgari yangi MKda yo'q bo'lgan chekilgan moduli ishlatilgan (15-rasm). Shubhasiz, bu holatda migratsiya mumkin emas.

Ammo ko'pincha nomuvofiqlik mahalliy xususiyatga ega, masalan, ish chastotalariga mos keladigan soat daraxti parametrlarini qayta sozlash yoki ADC yoki DMA kanal raqamini o'zgartirish va hokazo (16-rasm). Bunday hollarda, STM32CubeMX yuqorida muhokama qilingan yordamchi dasturlarda loyihani tahrirlash orqali yuzaga keladigan har qanday qiyinchiliklarni bartaraf etib, ko'chirishni qo'lda bajarishni taklif qiladi. Bunday holda, STM32CubeMX foydalanuvchiga muammolar mavjudligi haqida ular hal qilinmaguncha signal beradi.

Loyihaning yakuniy skeletini olgandan so'ng, kodning maxsus algoritmik qismini qo'shish, kompilyatsiya qilish va disk raskadrovka qilish qoladi. Buning uchun maxsus muhitlar qo'llaniladi. STM32 uchun AC6 ning SW4STM32 muhiti buni mutlaqo bepul qilish imkonini beradi.

AC6 System Workbench – STM32 uchun bepul IDE

Maxsus integratsiyalangan IDElar dasturlarni tahrirlash, kompilyatsiya qilish va disk raskadrovka qilish uchun mo'ljallangan. Ularning aksariyati tijorat mahsulotlari (IAR™ EWARM, Keil™ MDK-ARM, Atollic® TrueSTUDIO va boshqalar), ammo AC6 System Workbench kabi bepul vositalar ham mavjud. STMicroelectronics nomlash tizimida ushbu IDE deyiladi SW4STM32.

SW4STM32 integratsiyalashgan muhiti STM32 mikrokontrollerlari bilan ishlash uchun mo'ljallangan. U Eclipse platformasiga asoslangan va bepul va o'zaro faoliyat platformalardir. Uning asosiy afzalliklari quyidagilardan iborat:

  • STM32 mikrokontrollerlari, apparat disk raskadrovka to'plamlari (STM32 Nucleo, Discovery and Evaluation boards), dasturiy ta'minot kutubxonalari (Standart Periferik kutubxona va STM32Cube HAL) bilan ishlashni qo'llab-quvvatlash;
  • dastur kodining miqdori bo'yicha cheklovlar yo'q;
  • bepul GCC C/C++ kompilyatori;
  • bepul GDB tuzatuvchisi (GNU loyihasi);
  • SVN/GIT versiyalarini boshqarish tizimi bilan o'rnatilgan dasturiy ta'minotni guruh ishlab chiqishni qo'llab-quvvatlaydigan ochiq platforma Eclipse IDE;
  • Eclipse plaginlari bilan muvofiqligi;
  • ST-LINK qo'llab-quvvatlash;
  • ko'p platformali va Windows®, Linux va OS X® bilan mos keladi.

SW4STM32 yordamida siz STM32 dasturlarini tahrirlashingiz, kompilyatsiya qilishingiz va disk raskadrovka qilishingiz mumkin. Buning uchun STM32CubeMX da yaratilgan dastur skeletlaridan foydalanish qulay. Ularni import qilish uchun siz eng oddiy amallarni bajarishingiz kerak: Fayl -> Import menyusini tanlang, “Ish maydoniga mavjud loyihalar” import turini belgilang, loyiha katalogini belgilang, loyihaning o‘zini tanlang va “Finish” tugmasini bosing.

STM32CubeMX-da yaratilgan loyihalar bilan ishlashda siz maxsus kodni maxsus bo'limlarga joylashtirishingiz kerak:

/*FOYDALANUVCHI KODI BOSHLADI…*/

/*FOYDALANUVCHI KODI TUGASI…*/

Buni STM32CubeMX-da kodni qayta yaratishda dasturning qo'lda yozilgan qismi qayta yozilmasligi uchun amalga oshirilishi kerak. Regeneratsiya ikki holatda zarur:

  • ishlatilgan MKni qayta sozlashda;
  • bir MK dan ikkinchisiga o'tishda.

Shunday qilib, STM32CubeMX + SW4STM32 bilan birgalikda ishlaganda, foydalanuvchi istalgan vaqtda kontrollerni qayta sozlashi va minimal vaqt bilan foydalanuvchi kodini saqlab qolgan holda migratsiya qilishi mumkin.

SW4STM32 da dasturlarni disk raskadrovka qilishda xotira, registrlar va o'zgaruvchilar holatini keng kuzatish imkoniyati mavjud. Atrof-muhit ham to'xtash nuqtalarini qo'llab-quvvatlaydi (17-rasm). Nosozliklarni tuzatish jarayonini boshlash uchun siz “Nosozliklarni tuzatish” belgisini (qo‘ng‘iz shaklida) bosishingiz, “Ac6 STM32 C/C++ ilovasi” loyiha turini tanlashingiz, tuzatuvchi turi va interfeysini belgilashingiz va “OK” tugmasini bosishingiz kerak. tugmasi.

SW4STM32 SVN/GIT versiya boshqaruv tizimlarini qo'llab-quvvatlaydi. Bu bir nechta ishlab chiquvchilar ustida ishlayotgan yirik loyihalar uchun muhimdir. Versiyalarni boshqarish tizimi quyidagilarga imkon beradi: loyihada kiritilgan barcha o'zgarishlarni ro'yxatdan o'tkazish; loyiha versiyalarini solishtirish; oldingi versiyalarni tiklash; bir fayl ustida bir nechta dasturchilar ishlaganda nizolarni hal qilish; parallel ravishda bir nechta versiyalarni saqlash va hokazo.

Ushbu maqola doirasida SVN va GIT o'rtasidagi nozikliklar va farqlarni o'rganishning ma'nosi yo'q. Aytaylik, GIT taqsimlangan tizim bo'lib, dasturchilarga ishchi mashinada to'liq loyiha omboriga ega bo'lgan holda mahalliy ishlash imkonini beradi. GIT shuningdek, o'zgarishlar metama'lumotlarini saqlaydi, bu versiyalarni birlashtirish va versiyalar o'rtasida almashishni osonlashtiradi. SVN ishlab chiquvchilar o'rtasida tarmoq ulanishini talab qiladi va butun fayllarni saqlaydi. SW4STM32 SVN va GIT-ni qo'llab-quvvatlaydi.

Loyihani SVN ga ulashda harakatlar ketma-ketligini ko'rib chiqamiz (18-rasm).

  • ochiq loyihada kataloglar panelida uning nomini sichqonchaning o‘ng tugmasi bilan bosing va Jamoa → Loyiha(lar)ni ulashing (18a-rasm) ga o‘ting;
  • SVN/GIT tizim turini tanlang va “Keyingi” tugmasini bosing (18b-rasm);
  • SVN uchun katalogni tanlang va "Keyingi" tugmasini bosing (18-rasm);
  • SVN-da loyihani saqlash katalogini tanlang va "Finish" tugmasini bosing (18d-rasm);
  • "Umumiy" yorlig'ida (18e-rasm) SVN URL manzilini, ombor yorlig'ini, foydalanuvchi nomini, parolni tanlang, "Keyingi" tugmasini bosing;
  • loyiha uchun sharhni kiriting, SVN nazorati ostida joylashtiriladigan faylni tanlang, "OK" tugmasini bosing (18e-rasm).

Kelajakda faylni yoki butun loyihani sinxronlashtirish uchun katalog panelidagi uning nomini sichqonchaning o‘ng tugmasi bilan bosishingiz va Jamoa → Tasdiqlash-ni tanlashingiz kerak. Ochilgan oynada o'zgarishlarning tushuntirishini yozing va "OK" tugmasini bosing.

SVN-ni o'chirish uchun siz Team → Disconnect buyrug'idan foydalanishingiz kerak.

SVN dan loyihani import qilish uchun Import → SVN → Project from SVN menyu buyrug'idan foydalaning. Keyinchalik, qalqib chiquvchi dialog oynalarida bir qator import sozlamalarini qilishingiz kerak.

SW4STM32 juda keng imkoniyatlarga ega, ammo atrof-muhit ham erkin muhitlar uchun odatiy bo'lgan kamchiliklarga ega:

  • o'rnatilgan simulyatorning yo'qligi;
  • GCC kompilyatori kod hajmi va ishlashi bo'yicha tijorat hamkasblaridan past;
  • SW4STM32 uchun ishlab chiquvchilarni qo'llab-quvvatlash pullik muhitdagi kabi tezkor bo'lmaydi.

Biroq, shuni ta'kidlash kerakki, bu kamchiliklar, ayniqsa, oddiy loyihalar uchun juda muhim bo'lmasligi mumkin.

Kodni tuzatish nafaqat SW4STM32 da, balki qo'shimcha vositalar yordamida ham amalga oshirilishi mumkin. Keling, ulardan ba'zilarini ko'rib chiqaylik.

STMStudio - STM32 da ilovalarni disk raskadrovka qilishning oson usuli

STM studiyasi- STMicroelectronics tomonidan ishlab chiqarilgan xususiy yordamchi dastur, bu dasturni tuzatishga yordam beradi va real vaqtda kodni bajarishda foydalanuvchi o'zgaruvchilari qiymatlarini kuzatishga imkon beradi. Ushbu dastur Windows OS ostida ishlaydi va mikrokontroller bilan aloqa qilish uchun ST-LINK tuzatuvchisidan foydalanadi.

STM Studio quyidagi xususiyatlarga ega:

  • foydalanuvchi dasturining ishlashiga ta'sir qilmasdan, operativ xotiradan o'zgaruvchilarni "tezda" o'qish;
  • o'zgaruvchilarni import qilish uchun .elf, .out, .axf bajariladigan fayllardan foydalanish;
  • o'zgaruvchan qiymatlarni jadval va grafik shaklda ko'rsatish;
  • grafik yoki diagramma ko'rinishidagi grafik chiqish;
  • o'zgaruvchilardan biri X o'qi bo'ylab, ikkinchisi esa Y o'qi bo'ylab chizilganda o'zgaruvchilarning bog'liqligini ko'rsatish imkoniyati;
  • Keyinchalik ko'rish uchun ma'lumotlarni faylga yozish.

STM Studio oynasi bir nechta panellardan iborat (19-rasm).

STM Studio bilan ishlash o'zgaruvchilarni import qilishdan boshlanadi. Buni amalga oshirish uchun siz mikrokontrollerning o'zida joylashgan dasturga bir xil ijrochi faylni yuklashingiz kerak. Buning uchun kompilyatsiya paytida hosil bo'ladigan quyidagi formatlar mos keladi: .elf, .out, .axf. Keyinchalik Fayl → O'zgaruvchilarni import qilish buyrug'ini bajarishingiz kerak. Muloqot oynasida "Jadval elementlarini kengaytirish" bandini tanlashda foydalanuvchi taklif qilingan jadvaldan istalgan global o'zgaruvchilarni qo'lda tanlashi mumkin bo'ladi. Nosozliklarni tuzatishni boshlash uchun siz "Ishga tushirish" buyrug'ini bajarishingiz kerak.

Yuqorida aytib o'tilganidek, STM Studio o'zgaruvchilarni uchta ko'rinishda ko'rsatish imkonini beradi: matn, diagramma va grafik (20-rasm). Displey turi sozlamalari istalgan vaqtda o'zgartirilishi mumkin. Bundan tashqari, barcha ma'lumotlar qo'shimcha tahlil qilish uchun jurnal faylida qo'shimcha ravishda qayd etiladi. STM Studio ning qiziqarli xususiyati ba'zi o'zgaruvchilarning boshqalarga bog'liqligini ko'rsatish, shuningdek, o'zgaruvchilardan ifodalarni qurish qobiliyatidir.

Nosozliklarni tuzatish ma'lumotlarini uzatishning mashhur usuli konsol va printf() chiqish funksiyasidan foydalanishdir.

USART orqali printf() terminal chiqishini amalga oshirish

Standart printf() funktsiyasidan foydalanish disk raskadrovka ma'lumotlarini chiqarishning eng mashhur usullaridan biridir. Ushbu chiqish funktsiyasidan foydalanib, foydalanuvchi har qanday ma'lumotlarni ishlab chiqish muhiti konsoliga yoki terminalga o'tkazishi mumkin. Ko'pgina integratsiyalashgan muhitlar bu xususiyatni qo'llab-quvvatlaydi. STM32 dan foydalanganda ushbu usulni amalga oshirishning ikki yo'li mavjud: an'anaviy, UART yordamida va qo'shimcha, ST-LINK tuzatuvchisi yordamida SWO interfeysi orqali. STM32CubeMX va SW4STM32 dan foydalanganda ularning har birini amalga oshirish imkon qadar soddalashtirilgan.

Keling, birinchi amalga oshirish variantini ko'rib chiqaylik - UART orqali. Buning uchun siz quyidagi harakatlar ketma-ketligini bajarishingiz kerak bo'ladi:

  • kompyuterga apparat ulanishini ta'minlash;
  • UARTni STM32CubeMX muhitida sozlash;
  • printf() funksiyasining o'zini SW4STM32 muhitida amalga oshiring.

Kompyuterga ulanish uchta usulda amalga oshirilishi mumkin: MAQOMOTI porti va RS-232 qabul qiluvchi chipi orqali; USB port va UART-USB konvertor chipi orqali (masalan, FT232); ST-LINK USB disk raskadrovka interfeysi yordamida. Qaysi usul tanlangan bo'lishidan qat'i nazar, UART apparati sozlanishi kerak.

STM32CubeMX yordamida UART konfiguratsiyasi bir necha marta bosish orqali amalga oshiriladi (21-rasm). Birinchidan, "Pin ustasi" yorlig'ida mos keladigan kontroller pinlari UART ish rejimiga o'tkaziladi. Keyinchalik, "Konfiguratsiya" yorlig'ida UART parametrlari sozlanadi: almashinuv turi, tezligi, to'xtash bitlarining mavjudligi va boshqalar. Shundan so'ng C kodi yaratiladi.

SW4STM32 muhitida siz standart kutubxonani qo'shishingiz va _io_putchar() va _write() funktsiyalarini belgilashingiz kerak, masalan:

/*FOYDALANUVCHI KODI BAGIN o‘z ichiga oladi*/

#o'z ichiga oladi

/*FOYDALANUVCHI KODI END o‘z ichiga oladi*/

/*FOYDALANUVCHI KODI 1-BOSHLADI*/

int __io_putchar(int ch)

c = ch & 0x00FF;

HAL_UART_Transmit(&huart2,&*c,1,10);

int _write (int fayl, char *ptr, int len)

uchun (DataIdx = 0; DataIdx< len; DataIdx++)

Nosozliklarni tuzatish ma'lumotlarini uzatishda ushbu yondashuvning afzalliklarini ko'rib chiqish mumkin:

  • istisnosiz barcha STM32 mikrokontrollerlarida mavjud bo'lgan UART interfeysidan foydalanish;
  • dasturchilar uchun sozlash va tanishlik qulayligi. Boshqa kontrollerlar bilan loyihalardagi eski ishlanmalardan foydalanishingiz mumkin;
  • murakkab uskunaning yo'qligi (UART-USB ko'prigi yoki RS-232 qabul qiluvchidan tashqari);
  • murakkab dasturiy ta'minotning etishmasligi. Barcha IDE yoki terminal dasturlari bilan ishlaydi.

Biroq, bu usulning ham kamchiliklari bor. Birinchidan, disk raskadrovka uchun UART kanalini qurbon qilishingiz kerak bo'ladi. Va ikkinchidan, bunday dastur boshqaruvchining ishlashiga ta'sir qiladi, chunki u printf() funktsiya kodini qayta ishlash uchun yadroni egallaydi. STM32 misolida, mikrokontroller resurslarini egallamaydigan yanada ixtisoslashgan va eng muhimi, oddiyroq usul mavjud - SWO va ST-LINK kombinatsiyasidan foydalanish.

SWO orqali printf() terminali chiqishini amalga oshirish

SWO va ST-LINK kombinatsiyasidan foydalanilganda, I/U terminalini yaratish yuqorida UART apparatida muhokama qilingan usuldan ko'ra osonroqdir. Bunday holda, shaxsiy kompyuter bilan aloqa SWO interfeysi va ST-LINK da ishlatiladigan USB interfeysi orqali amalga oshiriladi. Harakatlar ketma-ketligi avvalgi holatda bo'lgani kabi taxminan bir xil bo'lib qoladi.

Birinchidan, STM32CubeMX yordamida SWO interfeysi pinlari "Pin ustasi" va "Konfiguratsiya" yorliqlarida sozlangan (22-rasm). Shundan so'ng, rivojlanish muhiti uchun kod qayta tiklanadi.

Keyingi qadam __io_putchar(int ch) ishlov beruvchisi uchun kod yozishdir, masalan:

/*FOYDALANUVCHI KODI 1-BOSHLADI*/

int __io_putchar(int ch)

ITM_SendChar(ch);

/*FOYDALANUVCHI KOD 1*/

Nosozliklarni tuzatish uchun STLink Utility yordam dasturidan foydalanish qulay (23-rasm).

Usulning afzalliklari:

  • qo'shimcha resurslarni talab qilmaydi va aloqa interfeyslarini egallamaydi;
  • asosiy dastur bilan parallel ishlaydi va uni bajarish tezligiga ta'sir qilmaydi, chunki u yadrodan hisob-kitoblar uchun foydalanmaydi;
  • bortida ST-LINK bilan disk raskadrovka to'plamlari uchun ideal tanlov, chunki u tayyor yechimni ifodalaydi.

Ushbu amalga oshirish usulining kamchiliklari orasida apparatga bog'liqlikni ta'kidlash mumkin, chunki ST-LINK talab qilinadi.

Xulosa

STMicroelectronics kompaniyasi STM32 mikrokontrollerlarining yetti yuzdan ortiq modellarini ishlab chiqaradi, ular ishlash/iste’mol/narx/integratsiya darajasida farqlanadi. Har bir foydalanuvchi ma'lum bir ilova talablarini inobatga olgan holda optimal modelni tanlashi mumkin bo'ladi.

STM32 ning muhim afzalligi - bu disk raskadrovka vositalarining ishlab chiqilgan tizimining mavjudligi. Ishlab chiquvchilarga yuzdan ortiq disk raskadrovka taxtalari (Nucleo, Discovery, Evaluation Boards) taklif etiladi. Dastur kodini yaratish, kompilyatsiya qilish va disk raskadrovka qilish uchun bepul amaliy dasturlarning to'liq to'plami mavjudligi dasturchilar uchun yanada katta yordam bo'ladi:

ST MCU Finder - bu ma'lum bir ilova uchun eng maqbul MCU ni tanlashga yordam beruvchi smartfonlar uchun ilova;

STM32CubeMX - bu STM32 mikrokontrollerlarini sozlash va avtomatik ravishda kod ishlab chiqarish uchun platformalararo grafik muharrir. STM32CubeMX shuningdek, optimal mikrokontrollerni tanlashda, quvvat sarfini baholashda va turli MCUlar o'rtasida loyiha migratsiyasini soddalashtirishda yordam ko'rsatishga qodir.

SW4STM32 - bu STM32 mikrokontrollerlari uchun platformalararo integratsiyalashgan dasturiy ta'minotni ishlab chiqish muhiti.

STM32 Studio - real vaqt rejimida kodni bajarish paytida o'zgaruvchan qiymatlarni kuzatish va grafik vizualizatsiya qilish uchun yordamchi dastur.

ST-LINK Utility sizga ST-Link dasturchisi bilan birgalikda SWO interfeysi orqali disk raskadrovka ma'lumotlarini kiritish va chiqarish imkonini beradi.

Ushbu dasturiy ta'minot to'plami bir rubl sarflamasdan rezident dasturiy ta'minotni to'liq ishlab chiqish tsiklini yakunlash imkonini beradi.

Adabiyot

  1. Qisqacha ma'lumotlar. NUCLEO-XXXXXKX. STM32 Nucleo-32 platasi. Rev 3. ST Microelectronics, 2016 yil.
  2. Qisqacha ma'lumotlar. NUCLEO-XXXXXRX. STM32 Nucleo-64 platasi. Rev 8. ST Microelectronics, 2016 yil.
  3. Qisqacha ma'lumotlar. NUCLEO-XXXXXZX. STM32 Nucleo-144 platasi. Rev 5. ST Microelectronics, 2017.
  4. UM1718. Foydalanuvchi uchun qo'llanma. STM32 konfiguratsiyasi va ishga tushirish C kodini yaratish uchun STM32CubeMX. Rev 18. ST Microelectronics, 2017.
  5. UM1884. Foydalanuvchi uchun qo'llanma. STM32L4 HAL va past qatlamli drayverlarning tavsifi. Rev 5. ST Microelectronics, 2016 yil.
  6. UM1025. Foydalanuvchi uchun qo'llanma. STM-STUDIO bilan ishlashni boshlash. Rev6. ST Microelectronics, 2013 yil.
  7. UM0892.Foydalanuvchi qoʻllanmasi STM32 ST-LINK yordam dasturi taʼrifi. Rev 22. ST Microelectronics, 2016 yil.



gastroguru 2017