stm32 cube ide zonder HAL

trix

Golden Member

hallo,

simpele vraag eigenlijk: kan je met de cube ide ook zonder het HAL gebeuren programmeren ? en kan je dan ook rechtstreeks in de registers bits "setten" en "resetten"

eigenwijs = ook wijs
Lucky Luke

Golden Member

Ja, dat kan. Zowel hele registers ineens als per bit(groep).
Syntax was iets van ding.register.word = waarde; en ding.register.bitgroepjesnaam = waarde;

Er is dan dus wel een file waar al die registernamen en bitgroepnamen in staan en op welk adres die zitten, maar geen verdere hal met drivers en configuratiestructs etc.

Eluke.nl | De mens onderscheid zich van (andere) dieren door o.a. complexe gereedschappen en bouwwerken te maken. Mens zijn is nerd zijn. Blijf Maken. (Of wordt, bijvoorbeeld, cultuurhistoricus)
trix

Golden Member

ik wil eigenlijk ook zonder MX (dat grafische toekennen v/d pinnen en zo)

eigenwijs = ook wijs

ik heb voorheen de standard peripheral library gebruikt. Die wordt alleen niet onderhouden meer.
Die cube mx is even wennen, maar opzich ook wel weer makkelijk.
Het enige nadeel is dat je je eigen code goed tussen die user code tags moeten zetten, omdat het anders weer overschreven wordt

trix

Golden Member

voor dat even dat ik er mee gewerkt heb, vond ik het niet fijn werken.
door de tijd blijkt dat ik liever "kort" op de controller prorammeer.
met een eenvoudig IDE zonder te veel toeters en bellen.

eigenwijs = ook wijs

Je kunt in de CUBE ide gewoon zelf je pinnen instellen, ook als er niets (of iets anders) in die MX tool staat.

Zelf vind ik het wel fijn om dit soort wizzards een basisinstelling te laten generen, dan begin ik gewoon gelijk met een werkende controller.

Als ik daarna zelf dingen ga doen die te moeilijk zijn voor de tool, dan zoek ik uit welke registers ik nodig heb en zet ik die met de hand.

Alle boilerplate die de tool genereert is weliswaar niet mijn stijl, en bediscussieerbaar lelijk, maar het scheelt me teveel tijd om niet te gebruiken.

trix

Golden Member

al die comentaar regels die (ik denk) de MX genereert vind ik zwaar hinderlijk. die zou ik, als ik de MX niet gebruik dan gewoon kunnen weg goooien ?

eigenwijs = ook wijs

Ik vind die MX ook verschrikkelijk, maar je hoeft het niet te gebruiken, of doet dat één keer, en bewerkt die code tot iets waar je wel aanstaat natuurlijk. Ik doe dat meestal in een apart project en kopieer dat wat ik wil hebben naar mijn eigen minimalistische project.

Persoonlijk vond ik de peripheral library ook veel fijner dan de Hal, en voor de oudere controllers heb ik daar gelukkig nog wel een kopie van, maar voor de wat nieuwere controllers (F7/H7 en zo) bestaat niet zover ik weet helemaal niet.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

ik ben na heel lang alle AVR's van binnen en buiten te kennen overgestapt naar ARM en dan de STM32.
Bij de AVR's ben je echt met elk bitje bezig in elk register. Daar hebben ze nog geen eens een HAL of echte libraries.
Echter zijn de peripherals in de Arm processoren zoveel complexer met nog veel meer 32 bit registers.
Het was voor mij ook echt wel wennen om dat los te laten en niet meer elk bitje te willen zetten.
Als je er eenmaal aan gewend bent is het ook wel weet fijn dat er gewoon ene Hal is die dingen voor je oplost en initialiseerd. Het is het loslaten van controle. (IEJUW FREAAK NO WAY!) doe toch maar, want het laat je wel sneller ontwikkelen. Ga maar eens een usb vcp zelf initialiseren met alle bijbehorende callbacks.
Ik ben toch blij dat ik in cube mx met klik klik klik een usb compoort in mijn stm32 project heb inclusief de benodigde functie calls.

Als het niet werkt, dan is het wat anders, of als je net even wil dat het iets anders werkt is het wel lastig.
Ik vond de oudere peripheral lib een mooie gulle middenweg, maar daar zijn ze mee gestopt helaas.

trix

Golden Member

wat ik wil is niet zo complex: UART, I2C, timers dat soort dingen.

eigenwijs = ook wijs

ik zeg succes,
(btw hoe staat het met je geheimzinnige XY scan dinges project, waar je nu volgens mij al +3 jaar mee bezig bent? ;) je hebt een goede investeerder denk ik :) )

Mag ik een tip geven: Schakel over op de RP2040.

Schattig processortje wat met de goed mindset is ontworpen. De development bordjes kosten minder dan 4 euro.

Ten opzichte van de STM32F072 (mijn voorheen favoriete ARM) is ie 4-5x goedkoper (nu ze weer beschikbaar komen zijn ze ineens 2x duurder geworden).

Dan gaat ie 2.5x sneller, heeft ie 2x meer cores, 12x meer RAM en 16x meer flash.

Nadelen: De ADC is wat minder en er zit geen DAC op. (die ook op de STM32 forse nadelen heeft).

Maar de ontwikkelomgeving is ook veel beter. Gewoon precies de dingen die je nodig hebt op een manier dat je ze ook wil gebruiken. Dus niet een functie waar je per pin moet opgeven welke GPIO pins er pullup worden, maar gewoon gpio_pull_up (pinnr);.

Op 22 februari 2023 15:09:34 schreef trix:
wat ik wil is niet zo complex: UART, I2C, timers dat soort dingen.

Maar je kan het complex maken door alles helemaal zelf te willen doen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
trix

Golden Member

reactie op stijnos z'n bericht (rew fietst er tussen door en moet ik nog lezen :) )

ben ik dus nog mee bezig :) ,ik heb nog 2 andere grote projecten lopen.
als ik het ene even zat ben (en dat soort momenten heb je altijd met een groot project) dan werk ik aan een ander project.
ik wou dit "geheimzinnige XY scan dinges project" weer oppakken en ik ergerde me meteen weer aan dat HAL en MX gebeuren (o ja......daarom had ik het op zij gelegd).
eerst zorgen dat ik een IDE vind die me "past" en ik ben er ondertussen al wel achter dat ik graag zo veel mogelijk "bare metal" (is dat de juiste term ?) programmeer.

ik kwam er b.v. achter dat je met de arduino IDE ook STM32 kan programmeren, dus die gedownload en bekeken, wat simpele code geschreven en het werkt.
ook met .h en .cpp files (al gaat het bij de arduino een stuk simpeler, en dat vind ik "verdacht"), nog een vraag uit staan op het nederlandse arduino forum, maar daar word slecht gereageerd:
https://www.arduinoforum.nl/viewtopic.php?f=9&t=5811
die heb ik dus nog niet af geschreven.

vervolgens zag ik gisteren op you-tube een turtorial over "bare metal" programmeren van een STM32:
https://www.youtube.com/watch?v=GJ_LFAlOlSk&list=PLfIJKC1ud8ghc4eFhI84…
dit gaat met de keil IDE, deze gedownload en beginnen met proberen.
in dit filmpje werkt men met de stm21f446re.
bij "pack installer" -> stm21f446re -> device specific
zie je dan 2 packs, 1 daar van is iets met nucleo.
echter zie je die bij de stm32f411re niet, en ik gebruik een nucleo bord.
dus dat was verwarrend.

vervolgens dacht ik, kan ik met de cube IDE van STM ook niet gewoon "bare metal" programmeren ?
dus vandaar dit topic.

lang verhaal kort, ik zoek een: voor mij geschikte IDE :+

eigenwijs = ook wijs
trix

Golden Member

die RP2040 ziet er op het 1e oog veel belovend uit, ik zal dan wel met I/O expanders moeten gaan werken, maar dat geeft niet.

ook hier weer: welke IDE ?
zijn er ook devolpment borden van ?
of is het,....zit al op een bord :)

eigenwijs = ook wijs

Je kunt ook visual studio code gebruiken. Is een wat simpelere versie van de complete visual studio suite van M$.

Maar draait zowel op windows als linux. Onder linux start je het ding met "code" op.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.
trix

Golden Member

ga ik eens bekijken, bedankt.

eigenwijs = ook wijs

Visual Studio Code is eigenlijk alleen maar de text editor van de IDE, je moet er nog een compiler en alles bij installeren.

En die compiler enzo is weer afhankelijk van de gebruikte CPU.

Waar ik laatst tegenaanliep, is PlatformIO. Werkt samen met Visual Studio Code (maar kan ook met Notepad, VI, emaxs, eclipse of edlin). Ondersteund een gruwelijke lijst aan CPU's.

In feite is PaltformIO niet veel meer dan een stel python-scripts dat alle basics van build chain en support-libs al voor je uitgezocht heeft, download en installeert.

Klopt, maar de compiler kun je gewoon van de cubemx spullen gebruiken. Die heeft trix toch al. Je hebt met code wel het voordeel van snel kunnen jumpen naar alle definities etc.

PlatformIO, nooit van gehoord. Een feit dat het in python gemaakt is voorspeld niet veel goeds.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Wat ik daarvan weet is dat ik probeerde om "Marlin" de firmware voor 3D printers te compileren. Dat ging steeds maar fout.

Blijkt dat ik dat in "Arduino" omgeving probeerde te doen. Dat schijnt suboptimaal te werken. Maar Platformio ging wel in 1x goed.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 23 februari 2023 23:50:42 schreef henri62:
PlatformIO, nooit van gehoord. Een feit dat het in python gemaakt is voorspeld niet veel goeds.

wat een klets

trix

Golden Member

die raspberry pico die rew aanhaalde (RP2040.) ziet er wel veel belovend uit.
deze word vaak geprogrammeerd met MicroPython IDE had ik begrepen, is dat wat ?

eigenwijs = ook wijs