Jak zacit s STM32?

Jan Waclawek konfera na efton.sk
Neděle Listopad 22 18:59:13 CET 2015


No, to neviem, ale este mozete zahodit vsetky tie sr*cky a zacat
programovat ako chlap... ;-)

'L4 nemam, ale mam tu 'L053 DISCO, a na http://www.efton.sk/tmp/blinky.zip
je projekt na blikanie, ktory nepotrebuje nic len prekladac a tu DISCO
dosku.

Prekladac mate niekde v tom atollicu, ale kebyze sa Vam ho nepodari
vyoperovat (malo by ho stacit najst a zaznamenat si cestu k nemu), tak si
ho stiahnite z https://launchpad.net/gcc-arm-embedded .

Dalej potrebujete linker skript (pripona .ld), v podstate by ten "moj"
fungoval pre prve pokusy tiez, ale ukradnite si svoj, nakoniec aj ja ho
mam z prikladov ST pre atollic (ktory aj nie je nic ine ako eclipse a gcc,
zeano), Vy ho najdete niekde v Cube (v tej kniznici - to co Vas miatlo
cely cas je, ze vtipne sa ten konfiguracny program vola CubeMX a kniznica
Cube (resp. este k tomu pismenka a ciselka podla rodiny), a su to dve
rozne veci ktore treba hladat na dvoch roznych miestach).

Potrebujete aj startup code startup_xxxx.s, znova, ukradnite si z tych
prikladov v Cube svoj (niekde vo
volaco/CMSIS/Device/volaco.../Templates/gcc). Otvorte ho a vykomentujte bl
SystemInit pripadne cokolvek ine co je medzi sluckou FillZerobss a bl
main. Usetrite si zbytocne problemy s linkovanim suboru naviac; na
nejakych hodinach to vzdy po resete bezi a prestavit si ich mozete
hocikedy aj neskor, v maine.

Budete potrebovat zakladny header stm32l4xx.h - ten najdete niekde v Cube v
podadresari volaco/CMSIS/Device/volaco.../. 

Kedze nemate jadro m0plus ale m4, ten header bude chciet includnut
core_cm4.h, a ten este dalej mozno core_cmSimd.h, toto vsetko najdete vo
volaco/CMSIS/Include. Mozete si stade zobrat vsetko, ale inteligentnejsie
je zobrat si len vzdy to na co prekladac frfle ze to nevie najst.

Teraz si otvorte UM k tomu STM32L4. Ano, tym ste mali zacat. A otvorte si
ten zdrojak.

Ako prve vymente header stm32l0xx.h za stm32l4xx.h.

Tie konstanty GPIO_Mode_XXX mozete nechat, su rovnake pre vsetky STM32 snad
s vynimkou F1xx, to je taka prvotna rodina kde je GPIO inak, a ja ani
neviem ako a ani nechcem vediet.

Asi budete musiet zmenit (zvacsit) casovaciu konstantu, aby Vam to
neblikalo prilis rychlo (mne to blika tak akurat prijemne, cca za sekundu
sa vystrieda aj cervena aj zelena). Som lenivy si pozriet rozdiel medzi
defaultnymi hodinami a odhadnut rozdiel medzi poctom instrukcii na m0+ a
m4.

Na zaciatku main() musite zapnut hodiny GPIO. Vy nemate v RCC register
RCC_IOPENR (to je specialita M0+ ktory ma GPIO na dedicated zbernici
trciacej priamo z jadra, to je akoze vychytavka); hladajte to v
RCC_AHBniecoENR.

Potom musite pozriet, kde mate tie LED, to je v UM k Vasej DISCO doske, CO,
TO TIEZ ESTE NEMATE NASTUDOVANE? Podla toho nastavte GPIOx_MODER; detto
GPIOx_BSRR v hlavnej slucke.

Potom v c.bat zmente cestu k prekladacu tam kde ho mate Vy, zmente meno
linker scriptu .ld, zmente meno startup kodu .s, prepiste cortex-m0plus na
cortex-m4. V prikazovom riadku spustite c.bat blinky. Ak nevytvori
blinky.elf a blinky.bat, napiste sem co napisal.

No a kedze na Vasom DISCO rovnako ako na mojom je ST-LINK/V2-1, tak ten
.bin jednoducho nasypte na ten virtualny disk co vznikne po pripojeni USB,
a LED by sa mala rozblikat... ak nie, znova napiste.

Ano, je to vela krokov a toto vsetko urobi ten klikoid za Vas... alebo aj
nie, ako sa to stalo...

wek





----- Original Message ---------------
>Tak jsem tomu nakonec vìnoval odpoledne a dosáhl jsem stavu, ¾e mám
>vygenerovaný soubor main.c pro tu moji desku , otevøený v editoru
>TrueStudia,
>ale kdy¾ chci dát Build v menu "Project" , tak jsou v¹echny polo¾ky
>¹edivé.  Nevíte co dál ?



Další informace o konferenci Hw-list