O'quvchilar tanlovi
Mashhur maqolalar
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
MSU soat chastotasi SYSCLOCK chastotasini tanlang - 72 MGts (72.000000)
GPIO port chiqishlarini microC-da chiqishga o'rnatish uchun funktsiya mavjud
u GPIOx blokining soatini yoqadi va qiymatlarni konfiguratsiya registriga yozadi. Biz portga yozgan ma'lumotlar registrga kiritiladi GPIOx_ODR.
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
Kechikishlarni yaratish uchun biz o'rnatilgan funksiyadan foydalanamiz Delay_ms()(yoki Delay_us()) kompilyator. Mana bizning birinchi dasturimiz:
Bir ishga tushirish buyrug'i bir vaqtning o'zida bir nechta port oyoqlariga qo'llanilishi uchun biz yozamiz _GPIO_PINMASKn"yoki" operatori orqali, masalan:
Endi PB15 portining chiqish holatini 5 ms oraliq bilan almashtirib, MK pinlaridan biriga meanderni chiqarishga harakat qilaylik. :
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.
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.
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):
Guruch. 1. ST dan STM32 mikrokontrollerlari portfeli
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
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
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:
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?
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 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.
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.
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:
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:
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:
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.
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:
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.
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.
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:
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:
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).
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:
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.
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:
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.
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 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:
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 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:
Ushbu amalga oshirish usulining kamchiliklari orasida apparatga bog'liqlikni ta'kidlash mumkin, chunki ST-LINK talab qilinadi.
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.
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.
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.
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.
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:
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:
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:
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.
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:
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.
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.
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:
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:
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).
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:
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.
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:
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.
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 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:
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 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:
Ushbu amalga oshirish usulining kamchiliklari orasida apparatga bog'liqlikni ta'kidlash mumkin, chunki ST-LINK talab qilinadi.
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.
Tegishli maqolalar: | |
Windows-da ma'lum turdagi faylni ochish uchun standart dasturni qanday sozlash kerak!
Men turli xil ma'lumotlar formatlari bilan ishlayman, lekin ko'pincha men ... Asus RT-N12 Wi-Fi routeri: kompyuterga ulanishni o'rnatish
Asus routerlari uzoq vaqtdan beri uyning kundalik hayotida mustahkam o'rnatilgan va... Noma'lum tizim konfiguratsiyasi nima qilish kerakligini o'zgartiradi
Salom, aziz o'quvchi! Bu ikki hafta oldin sodir bo'ldi ... |