logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Linux + Code::Blocks + STM32 - Tutorial STM32 + Code::Blocks w Linuxie

przemof-s 20 Maj 2016 23:32 5634 38
REKLAMA
  • #1 15688738
    przemof-s
    Poziom 10  
    Posty: 19
    Ocena: 10
    Przedstawiony tutorial dotyczy głównie konfiguracji Code::Blocks, umożliwiającej pisanie i debugowanie kodu w języku C/C++, m.in. dla mikrokontrolerów z rodziny STM32. Opis zrealizowany został na przykładzie płytki STM32F4DISCOVERY. Jednak przedstawioną metodę można wykorzystać do konfiguracji innych układów z tej rodziny. Prezentowany opis zawiera informacje dotyczące konfiguracji: Code::Blocks + GCC ARM Embedded Toolchain + OpenOCD + STM32CubeMX + STM32F4Discovery + Linux.

    Dla układów STM32 jest już dostępne gotowe, zintegrowane środowisko programistyczne: System Workbench for STM32 (SW4STM32), który bazuje na środowisku Eclipse. Jaki jest więc sens samodzielnego składania środowiska? Autor nie lubi środowiska Eclipse, nie odpowiada mu jego rozmieszczenie okien, obsługa, po prostu źle mu się w tym środowisku pracuje. Jest to wystarczający powód.

    Ze względu na dużą objętość tutoriala, został umieszczony w załączniku, w postaci pliku pdf. Dodatkowo umieszczono dwa pliki *.zip. Jeden zawierający przykładowy projekt utworzony na podstawie tutoriala. Drugi zawierający strony www, do których odnosi się tutorial (na wypadek ich "zniknięcia" z sieci internet).
    Załączniki:
    • stm32f4_discovery.zip (5.91 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tutorial Code::Blocks.zip (2.42 MB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tutorial Code::Blocks, Rev. 0.4.pdf (1.51 MB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 15688818
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Bardzo fajna alternatywa dla Eclipse. Jeszcze nie przeczytałem całego ale chciałbym zadać pytania. Czy jest możliwa konfiguracja projektu typu makefile? Chodzi mi o podobną funkcjonalność co w Eclipse. Chciałbym mieć zakładkę z targetami z makefile. Czy dobrze działa indekser? Czy jest jakaś możliwość podglądania rejestrów periferiali?
  • REKLAMA
  • #3 15689724
    przemof-s
    Poziom 10  
    Posty: 19
    Ocena: 10
    ad. 1: Jest możliwa współpracy z plikami makefile, jednak sam Code::Blocks ich nie generuje.
    ad. 2: Z tego co mi wiadomo indeksery są składnią języka C#, którego nigdy nie używałem, więc nie znam odpowiedzi na to pytanie.
    ad. 3: Bez dodatkowych plugin-ów możliwe jest odczytywanie zawartości rejestrów w najprostrzej postaci, czyli jako odczyt zawartości poszczególnych komórek pamięci.
  • REKLAMA
  • #5 16196533
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Witam
    Próbuję ustawić i skompilować w Code::Blocks najprostszy program.
    Ale w najprostszej postaci. (przy użyciu tylko codeblocks toolchaina i bibliotek z CMSIS)
    Code blocks 16.1 gcc-arm-none-eabi-6_2-2016q4
    obecne chce tylko skompilować program bez debugowania itp na razie interesuje mnie poprawne kompilowanie.
    No i podstawowe biblioteki wyciągnięte z CMSIS
    Co dziwne code blocks nie pamięta mi ustawienia własnego kompilatora (po ponownym uruchomianiu muszę ustawiać go od nowa)
    Ale jak już go ustawię i próbuję skompilować to mam error.

    arm-none-eabi-gcc -Wall  -c /home/damian/Szablony/Codestm/main.c -o obj/Debug/Szablony/Codestm/main.o
    arm-none-eabi-g++  -o bin/Debug/Codestm obj/Debug/Szablony/Codestm/main.o   
    /home/damian/Eclipse/gcc-arm-none-eabi-6_2-2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
    exit.c:(.text.exit+0x2c): undefined reference to `_exit'
    collect2: error: ld returned 1 exit status
    Process terminated with status 1 (0 minute(s), 0 second(s))
    2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
     


    Kod programu to
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Jakieś sugestie czy problem jest w toolchainie czy gdzie indziej.
  • #6 16196545
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    80% flag kompilacji brak...
  • #7 16196567
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Witam nie bardzo rozumiem.
    Cytat:
    80% flag kompilacji brak...

    To co podałem to wszystko co wypluł codeblocks w Build Log
    plus linia nagłówkowa
    
    -------------- Build: Debug in Codestm (compiler: STM32)---------------
    
    arm-none-eabi-gcc -Wall  -c /home/damian/Szablony/Codestm/main.c -o obj/Debug/Szablony/Codestm/main.o
    arm-none-eabi-g++  -o bin/Debug/Codestm obj/Debug/Szablony/Codestm/main.o   
    /home/damian/Eclipse/gcc-arm-none-eabi-6_2-2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
    exit.c:(.text.exit+0x2c): undefined reference to `_exit'
    collect2: error: ld returned 1 exit status
    Process terminated with status 1 (0 minute(s), 0 second(s))
    2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
      

    Nie ma nawet lini więcej więc nie wiem czy o to chodzi.
  • #8 16196610
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    O to, że ich brak a nie ze czegoś nie wypluło na konsolę.
    Czyli brak jakichkolwiek ustawień kompilacji.
  • #9 16199487
    przemof-s
    Poziom 10  
    Posty: 19
    Ocena: 10
    To, że Code::Blocks nie pamięta ustawień konfiguracji jest prawdopodobnie spowodowane brakiem uprawnień do modyfikacji plików konfiguracyjnych. Spróbuj uruchomić Code::Blocks z konsoli, poleceniem sudo codeblocks i wtedy go skonfigurować. Choć możliwe, że właśnie takie uruchomienie Code::Blocks powoduje późniejsze problemy. Sprawdź też jakie masz prawa do katalogu (oraz kto jest jego właścicielem) /home/USER/.config/codeblocks oraz plików w nim zawartych i w razie potrzeby zmień je za pomocą poleceń chown oraz chmod.

    Możliwe, że błąd kompilacji wynika z niepoprawnej konfiguracji flag dla kompilatora lub linkera. Napisz jakie masz ustawienia dla kompilatora i linkera oraz jaki mikrokontroler chcesz zaprogramować.
  • #10 16203172
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Witam dziękuję za odpowiedź.

    A więc tak po następnym uruchomieniu code blocksa już pamiętał ustawienia, więc nie wiem czym mogło być to spowodowane. (między czasie mógł być restart więc może to pomogło)

    Co do Ustawienia kompilatora i flag to kolega wcześniej miał rację nie mam ustawionych ani flag ani linkiera.
    Chcę programować procesor STM32F767ZI korzystając tylko z podstawowych bibliotek nazw rejestrów. stm32f767xx.h
    (tam jeszcze jest kilka zainkludowanych)
    Ale głownie chodzi mi o te podstawowe.
    I tu mam problem jak ustawić flagi kompilatora i linkiera nie korzystając z dodatkowych narzędzi jak STM32CubeMX .
    Nie interesują mnie biblioteki "wysokiego poziomu" dopóki nie ogarnę rejestrów .
    Czy jest gdzieś jakiś opis rozpiska flag co one oznaczają i jak powinno się je ustawiać.?
    znalazłem coś takiego Flagi ale nie wiem czy flagi są uniwersalne dla wszystkich kompilatorów czy toolchainów.
    proszę o odesłanie mnie do podstaw abym mógł ogarnąć to zagadnienie.

    Kolegów obeznanych w temacie proszę o pomoc. Gdyż naprawdę mało jest źródeł programowania STM32 pod linuxem ( w porównaniu do win) a po Polsku nie opartych na Eclipse to już w ogóle ze świeczką szukać.

    Jeżeli gdzieś brakuje mi wiedzy czy zrozumienia tego co piszę to proszę o wskazanie moich braków błędów i odesłanie mnie do konkretnej literatury.
    lub po prostu ich wytłumaczenia.
    Post tadzik85 oraz przemof-s okazały się pomocne.
    Za co dziękuję.

    Pozdrawiam
  • #11 16203183
    Konto nie istnieje
    Konto nie istnieje  
  • #12 16204865
    przemof-s
    Poziom 10  
    Posty: 19
    Ocena: 10
    Nie wiem czy dla rodziny STM32F7 są dostępne biblioteki w wersji SPL. Zarówno w programie System Workbench for STM32 podczas tworzenia nowego projektu, jak i na stronie ST: http://www.st.com/en/embedded-software/stm32-...d-software.html?querycriteria=productId=SC961 po wybraniu z tabeli opcji: STM32 Standard Peripheral Libraries, nie ma możliwości wybrania bibliotek SPL dla rodziny F7. Wygląda to tak jakby STM chciało "zmusić" użytkowników do przejścia na biblioteki HAL.

    Co do samego gcc i plików makefile, w książce Kurt Wall - Linux programowanie w przykładach dwa pierwsze rozdziały dotyczą właśnie gcc i makefile. Jednak sama książka jest z 2000 roku i aktualnie jest trudno dostępna oraz ze względu na swój wiek, częściowo nieaktualna. Ponadto nie traktuje o mikrokontrolerach.

    Co do samego STM32, to na pewno książka Krzysztof Paprocki - Mikrokontrolery STM32 w praktyce traktuje o STM32 i bibliotekach SPL. Warto spojrzeć też na stronę www Elektroniki Praktycznej oraz Elektroniki dla Wszysktich. Pierwszy tytuł udostępnia archiwum wszystkich numerów (oprócz ostatnich 12 wydań) i tam można znaleźć dużo przykładów na temat programowania STM32. W drugim tytule szczególnie w maju 2011 roku rozpoczął się kurs STM32 na bibliotekach SPL. Jednak co do samego ustawiania flag, w w.w. czasopismach, raczej szczegółowych informacji na ten temat nie znajdziesz. Jakiś kurs na SPL był również przeprowadzony tutaj: http://forbot.pl/blog/artykuly/programowanie/stm32-praktyce-1-platforma-srodowisko-id2733

    Jeżeli chcesz zapoznać się z biblioteką SPL od podstaw, rozwiązaniem może być przesiadka na np. STM32F4. Wtedy będziesz mógł skorzystać z gotowej konfiguracji flag, wygenerowanej w System Workbench for STM32 i wykorzystać ją, np. w Code::Blocks.
  • #13 16205104
    Konto nie istnieje
    Konto nie istnieje  
  • #14 16205411
    przemof-s
    Poziom 10  
    Posty: 19
    Ocena: 10
    Wiking18 napisał:
    Nie interesują mnie biblioteki "wysokiego poziomu" dopóki nie ogarnę rejestrów .

    Po co? Kolega pyta o SPL-a, więc odpowiadam. Nie narzucam.

    Wiking18 napisał:
    Gdyż naprawdę mało jest źródeł programowania STM32 pod linuxem ( w porównaniu do win) a po Polsku nie opartych na Eclipse to już w ogóle ze świeczką szukać.

    Jeżeli na początek nie jest w stanie sam wskazać odpowiednich flag, a nie ma ochoty pracować w Eclipse, to niech się wspomoże. Niech każdy wybierze sobie takie narzędzia, jakie najbardziej mu odpowiadają. Jeżeli ktoś pyta o rozwiązania nie oparte na Eclipse, to widocznie ma ku temu jakieś powody, które niekoniecznie musimy rozumieć, a tym bardziej nie powinniśmy negować.
  • #15 16205437
    Konto nie istnieje
    Konto nie istnieje  
  • #16 16205458
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Piotrus_999 napisał:
    To moze kolega sam napiszę dlaczego nie chce sprawdzonego środowiska, a wybiera coś powiedzmy niszowego. Rozumiem, stary wyjadac, nawyki itp ale w tym przypadku jakoś sobie trudno wyobrazic


    Przeczytaj nazwę tematu i po prostu sie nie wypowiadaj o rzeczach o których nie masz zielonego pojęcia. Świat nie kończy się na eclipse czy na IDE od ST. Ktoś kto tutaj pisze, chce korzystać z Code::Blocks i nie musi co chwile słuchać o eclipse.
  • #17 16205691
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wiking18 napisał:
    I tu mam problem jak ustawić flagi kompilatora i linkiera nie korzystając z dodatkowych narzędzi jak STM32CubeMX .

    Ściągnij sobie z mojej strony przykład o nazwie stm32f4_blink_led (jest w dziale Download). Skompiluj go z wiersza poleceń (make all) i będziesz widział jakie flagi są potrzebne. Dla układu STM32F7 jedyne co musisz zmienić to "-mcpu=cortex-m4" na "-mcpu=cortex-m7".
  • #18 16205816
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Witam

    Freddie Chopin napisał:
    Dla układu STM32F7 jedyne co musisz zmienić to "-mcpu=cortex-m4" na "-mcpu=cortex-m7".


    Tutaj się domyśliłem ale resztę nie wiedziałem.
    Spróbuję tak jak mówisz. Poćwiczę na gotowym organizmie.

    Jeżeli chodzi o Eclipce to traktuje to jako ostateczność mimo że dużo tam jest to jakoś ciężko tam "Mi" się cokolwiek robi nie wiem może mam takie wrażenie ale środowisko jakoś mi nie odpowiada. (jako żę robię to dla przyjemności i w ogóle nie wiem czemu chyba z pasji to poco tą radość zabijać lub przyćmiewać z czegoś co mi nie odpowiada).
    Nie wiem może do Eclipse muszę dojrzeć.
    Jako że znajomość z uc odświeżam i przy okazji przesiadam się na STM32 a stare wspomnienia są z keila, środowiska AVR to Code Blocks przypadł mi do gustu jakoś podprogowo.
    Dlatego chcę przy nim zostać.
    Wiem że dla kogoś może to głupie ale człowiek (czytaj Ja) ma jakiś sentyment.

    Co do bibliotek to chętnie zostanę na razie przy samych rejestrach.
    Chodzi mi tutaj o sam plik nagłówkowy danego procesora.
    Jak je ogarnę na poziomie dobrze to będę zaglądał do bardziej skomplikowanych bibliotek.
    Do tego długa droga.
    Pozdrawiam i Dziękuję wszystkim za odpowiedzi.
    Jak nie uda mi się tego ustawić to pozwolę sobie jeszcze tutaj poprosić o pomoc.
  • REKLAMA
  • #19 16205834
    Konto nie istnieje
    Konto nie istnieje  
  • #20 16205947
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Wiking18 napisał:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Witam ponownie
    Nie z nagłówkami mam problem pliki mam wyłuskane :) Wspominam o nich tylko dlatego żeby ktoś wiedział o co mi mniej więcej chodzi.
    Co do przykładu Freddie-go To kompilator wypluł mi że nie ma plików.
    rm-none-eabi-gcc main.c
    In file included from inc/stm32f4xx.h:240:0,
                     from main.c:42:
    inc/core_cm4.h:144:97: fatal error: core_cmInstr.h: No such file or directory
    
    ale zmieniał adresy bibliotek bo były w <> na "" i zobaczymy co wyjdzie Ale dziękuję za szybkie odpowiedzi i konkretne info.
    Pozdrawiam

    Po zmianie adresów mam coś takiego w konsoli
    damian@damian-Lenovo-G40-30:~/Projekty/led/stm32f4_blink_led-1.2.2-120323$ arm-none-eabi-gcc main.c
    /usr/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-exit.o): In function `exit':
    exit.c:(.text.exit+0x2c): undefined reference to `_exit'
    /tmp/cc5Dl7VS.o: In function `main':
    main.c:(.text+0x34): undefined reference to `gpio_pin_cfg'
    /tmp/cc5Dl7VS.o: In function `system_init':
    main.c:(.text+0x3ac): undefined reference to `gpio_init'
    collect2: error: ld returned 1 exit status

    aa tak w code blocks
    
    -------------- Build: Debug in tescik (compiler: STM32)---------------
    
    arm-none-eabi-gcc -Wall -g  -c /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/main.c -o obj/Debug/Projekty/led/stm32f4_blink_led-1.2.2-120323/main.o
    arm-none-eabi-g++ -Wall -g  -c /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S -o obj/Debug/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.o
    /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S: Assembler messages:
    /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S:44: Error: selected processor does not support requested special purpose register -- `msr PSP,r0'
    /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S:53: Error: selected processor does not support requested special purpose register -- `msr CONTROL,r0'
    /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S:77: IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8
    /home/damian/Projekty/led/stm32f4_blink_led-1.2.2-120323/startup.S:93: IT blocks containing 32-bit Thumb instructions are deprecated in ARMv8
    Process terminated with status 1 (0 minute(s), 0 second(s))
    4 error(s), 0 warning(s) (0 minute(s), 0 second(s))
     
    

    i się zwiesiłem;/
  • #21 16205959
    Konto nie istnieje
    Konto nie istnieje  
  • #22 16206021
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Piotrus_999 napisał:

    Naprawdę proponuje na początek coś bardziej przyjaznego początkującym (bo po pytaniach sądząc do nich się zaliczasz). Oczywiście zaraz grko stwierdzi że dla początkujących nie ma nic lepszego niż pisanie makefile-ów i skryptów linkera "z palca", ale jednak lepiej mieć przyjemność z programowania, niż nieprzyjemność z konfigurowania czegoś czego się na początku zupełnie nie czuje i nie rozumie.


    Czy możesz polecić coś co nie wrzuci mi tony zbędnych (dla mnie biliotek) i obsłuży wspomniany uc f767.
    W Eclipse mogę wybrać maks 756 a kod który nic nie robi po skompilowaniu waży 12,8k (hex)
    Być może na STM tak to wygląda ale w tej pamięci na AVR i Xmega można było zmieścić spory program.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Przepraszam autora tematu za odbieganie od niego.
  • #23 16206197
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wiking18 napisał:
    Co do przykładu Freddie-go To kompilator wypluł mi że nie ma plików.

    Skoro ich nie ma, to musisz je dodać. Nie ma innego wyjścia - sam plik stm32f7cokolwiek.h nie jest wystarczający.

    Wiking18 napisał:
    Po zmianie adresów mam coś takiego w konsoli

    Jakich adresów?

    Wiking18 napisał:
    kod który nic nie robi po skompilowaniu waży 12,8k (hex)

    I nie mieści się w układzie?
  • #24 16206330
    Konto nie istnieje
    Konto nie istnieje  
  • #26 16206404
    Wiking18
    Poziom 14  
    Posty: 127
    Pomógł: 6
    Ocena: 9
    Freddie Chopin napisał:
    Wiking18 napisał:
    Co do przykładu Freddie-go To kompilator wypluł mi że nie ma plików.

    Skoro ich nie ma, to musisz je dodać. Nie ma innego wyjścia - sam plik stm32f7cokolwiek.h nie jest wystarczający.

    No tak ale prubowałem skompilować twoj przklad bez ingerencji w przykładzie są wszystkie potrzebne pliki. Nie poszło. Pozmianie includowania zaczeło iść i efekty pokazałem wcześniej
    ja zmieniłem includowanie. na
    #include <stdint.h>
    #include "core_cmInstr.h"
    #include "core_cmFunc.h"
    #include "core_cm4_simd.h"

    bo inaczej kompilator nie znajdował plików.


    Freddie Chopin napisał:
    Wiking18 napisał:
    kod który nic nie robi po skompilowaniu waży 12,8k (hex)

    I nie mieści się w układzie?

    No pewnie się zmieści ale trochę mnie to przeraziło zważywszy na to że kod nic nie robi.
    Czy to po prostu tyle zajmuje konfiguracja rejestrów plus to że są 32 bitowe i taki rozmiar to normalka.
  • #27 16206415
    Konto nie istnieje
    Konto nie istnieje  
  • #28 16206453
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    Wiking18 napisał:
    No pewnie się zmieści ale trochę mnie to przeraziło zważywszy na to że kod nic nie robi.
    Czy to po prostu tyle zajmuje konfiguracja rejestrów plus to że są 32 bitowe i taki rozmiar to normalka.

    Ale wiesz że rozmiar pliku .hex nie jest równy rozmiarowi skompilowanego programu? Czy na tym etapie (zupełne początki) naprawdę musisz sobie dokładać problemów z tym czy program zajmuje 1, 10 czy 100kB? Jeśli się mieści to doskonale. Jak zadziała to będziesz kombinował jak zmniejszyć. Jak będziesz chciał kombinować z setką rzeczy na raz, to nie dojdziesz do niczego.

    Wiking18 napisał:
    No tak ale prubowałem skompilować twoj przklad bez ingerencji w przykładzie są wszystkie potrzebne pliki. Nie poszło.

    Na prawdę nie wiem co i jak zrobiłeś oraz nie wiem jaki masz toolchain/kompilator, jednak tutaj (na Linuxie) wszystko działa jak trzeba:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Jak widzisz - i tym razem liczby są wiarygodne - program który już coś robi (ustawia PLL i GPIO, miga diodką), zajmuje 1.4kB.
  • #29 16206470
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ W dyskusji poruszono temat konfiguracji środowiska Code::Blocks na systemie Linux do programowania mikrokontrolerów STM32, w szczególności na przykładzie płytki STM32F4DISCOVERY oraz STM32F767ZI. Użytkownicy dzielili się doświadczeniami związanymi z kompilacją projektów, problemami z ustawieniami kompilatora oraz linkera, a także z brakiem pamięci na ustawienia w Code::Blocks. Wskazano na możliwość użycia plików makefile oraz na problemy z bibliotekami CMSIS. Uczestnicy dyskusji podkreślali, że Code::Blocks jest preferowane przez niektórych użytkowników ze względu na osobiste preferencje, mimo dostępności zintegrowanego środowiska System Workbench for STM32 opartego na Eclipse. Wskazano również na konieczność dostosowania flag kompilacji oraz linkera do specyfikacji mikrokontrolera.
Wygenerowane przez model językowy.
REKLAMA