{"id":4317,"date":"2019-06-12T20:00:57","date_gmt":"2019-06-12T18:00:57","guid":{"rendered":"https:\/\/msalamon.pl\/?p=4317"},"modified":"2025-12-27T19:30:30","modified_gmt":"2025-12-27T18:30:30","slug":"arduino-users-hate-him-he-discovered-a-simple-way-to-get-started-with-stm32","status":"publish","type":"post","link":"https:\/\/msalamon.pl\/en\/arduino-users-hate-him-he-discovered-a-simple-way-to-get-started-with-stm32\/","title":{"rendered":"Arduino users hate him\u2026 He discovered a simple way to get started with STM32."},"content":{"rendered":"\n<p>Everyone was once a beginner. In the past, to acquire knowledge, you searched through libraries. Today, you search through Google. Since you found your way here, you\u2019ve probably typed the phrase \u201cHow to start with STM32?\u201d or something similar into a search engine at least once in your life. There is no <\/p>\n\n\n\n<!--more-->\n\n\n\n<p> single, correct recipe. Let me share my point of view on how to start learning STM32 programming.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Language<\/h1>\n\n\n\n<p>The first language you should master at a basic level is English. Yes, English. If you don\u2019t know it yet, get to work as soon as possible. Whether at school or in courses. Even some online courses. Believe me, this is the most important language you should know, and not only for programming.<\/p>\n\n\n\n<p>Unfortunately, schools don\u2019t teach us in a way that lets us communicate around the world without problems. I know that from my own experience. Only when I started working with international teams did I learn how poorly I read, write, and speak English. Fortunately, when you have to, you learn very quickly \ud83d\ude42 Now I have no problem communicating daily with both Chinese teams (so-called Chinglish) and Americans.<\/p>\n\n\n\n<p>The next language you should master is a programming language: C. You can write in something else like MicroPython, but in our industry these are niche languages. If you\u2019re serious about embedded programming and later working in this field, C is a must.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<p>You won\u2019t program a microcontroller without having it physically. You can try working with simulators, but in my opinion, at the beginning they\u2019re not worth the attention. You need to feel the hardware, see something blink or move. When you make a short circuit you\u2019ll smell burnt semiconductor, and then you know you broke something. Simulations are good at an advanced level, when systems grow and the cost of bringing them up in the early phases of a project on physical components can be high. Besides, testing in simulation is faster, which can be very important initially.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Base and evaluation boards<\/h3>\n\n\n\n<p>If you want to program STM32, I recommend ready-made boards straight from ST. In my opinion it\u2019s best to buy a <a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/dev-boardy\/stm32-nucleo\/stm-nucleo-64\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">Nucleo with a 64\u2011pin package.<\/a> They cost about 60\u201390 z\u0142 and have an on-board programmer. All microcontroller pins are brought out to goldpin headers. In addition to its own goldpin header proudly called <em>Morpho,<\/em> the <a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/dev-boardy\/stm32-nucleo\/stm-nucleo-64\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">Nucleo<\/a> boards also feature headers known from Arduino Uno, so you can also use numerous shields.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/dev-boardy\/stm32-nucleo\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=nucleo\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"400\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner.jpg\" alt=\"\" class=\"wp-image-1593\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner.jpg 1200w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-300x100.jpg 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-1024x341.jpg 1024w, https:\/\/msalamon.pl\/wp-content\/uploads\/2020\/07\/Nucleo-64-baner-768x256.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Discovery boards are also available. They\u2019re a bit richer in external components, such as accelerometers, microphones, or displays. They also generally have larger and more powerful microcontrollers. You can also consider such a board as a beginner.<\/p>\n\n\n\n<p>The last group of boards I can recommend is the <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/stm32f103c8t6-dev-board-2\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">Chinese BluePill<\/a>. It\u2019s a really small <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/stm32f103c8t6-dev-board-2\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">board with a powerful STM32F103 microcontroller<\/a>. Its biggest drawback is the lack of a programmer. You have to buy it separately or, if you have one, use the one from an ST kit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Peripheral components<\/h3>\n\n\n\n<p>You need to connect something to this microcontroller. In kits there\u2019s usually only one LED and sometimes a button. You won\u2019t do great things with that. The only exception is the aforementioned Discovery.<\/p>\n\n\n\n<p>In my opinion you\u2019ll need, for example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Some breadboard \u2014 it\u2019s more convenient to make connections on a board than to have everything hanging in the air<\/li>\n\n\n\n<li>LEDs, relays \u2014 turning devices on and off, lighting effects.<\/li>\n\n\n\n<li>Displays \u2014 <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/lcd-2x16-znakow\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">16\u00d72 LCD<\/a> is already old, but it can do. Besides that, I recommend <a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/wyswietlacze\/oled\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">OLED<\/a> and some <a href=\"https:\/\/sklep.msalamon.pl\/kategoria-produktu\/wyswietlacze\/tft\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">TFT<\/a>.<\/li>\n\n\n\n<li>Sensors \u2014 they bring the most joy. <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/mpu6050-modul\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">Accelerometers<\/a>, <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/bmp180-czujnik-cisnienia\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">temperature<\/a>, <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/bmp280-czujnik-cisnienia\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">pressure<\/a>, <a href=\"https:\/\/sklep.msalamon.pl\/produkt\/bme280-czujnik-cisnienia-srodowiskowy\/?utm_source=blog&amp;utm_medium=article&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\">humidity<\/a>, light intensity, smog. There\u2019s a ton of them.<\/li>\n<\/ul>\n\n\n\n<p>Basically, you can try connecting anything you want. With STM32 you have so much power that you won\u2019t run out for a long time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<p>You have to write these programs in something. Fortunately, ST supports its microcontrollers very vigorously. They have quite a substantial set of software to assist in creating projects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ST MCUFinder<\/h3>\n\n\n\n<p>The first of such small programs is ST MCUFinder. A very useful tool for finding the right MCU for our project. ST has released so many chips that it\u2019s hard to remember them all.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">STM32CubeMX<\/h3>\n\n\n\n<p>A tool used to generate the initial code. A pleasant graphical interface lets you configure all the microcontroller peripherals in a convenient way. You don\u2019t need immense knowledge to perform the basic settings. At the end, from what you click through, an entire project will be generated, tailored to the previously selected IDE. In this project you\u2019ll find all the necessary drivers and peripherals configured just the way you wanted. Sweet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">STM32 ST-LINK Utility<\/h3>\n\n\n\n<p>A program for operating the ST-Link programmer. It contains the necessary drivers for the programmer. From it you can erase or flash your code. Besides that, it gives, for example, the ability to lock the flash memory to protect the program from unauthorized copying.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">IDE<\/h3>\n\n\n\n<p>Here the choice is large. Recently ST released its own IDE called STM32CubeIDE. I\u2019ve been using it for some time and I think I\u2019ll soon publish my review of it.<\/p>\n\n\n\n<p>I described the other environments or editors recently on the blog in the post: <a href=\"http:\/\/msalamon.pl\/ide-albo-nie-ide-8-najlepszych-ide-dla-stm32\/\">IDE or not IDE \u2014 the 8 best IDEs for STM32<\/a>. Worth checking out.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Where to get knowledge?<\/h2>\n\n\n\n<p>There are plenty of good sources of knowledge. I can\u2019t help much with English, but I recommend lots of practice. For the C language at the very beginning, the absolute basics are enough. A C course doesn\u2019t have to be strictly for microcontrollers. It can be programming on a PC. <a href=\"https:\/\/www.youtube.com\/watch?v=o9zn6XQKjgU&amp;list=PL6aekdNhY7DBvSnK0HUUBb-OH4y41HoZw\" target=\"_blank\" rel=\"noopener\">This one, for example<\/a>. C is such an old language that there\u2019s no reason to go only for the newest courses \ud83d\ude42<\/p>\n\n\n\n<p>As for STM32, the first thing that comes to mind is books. Not long ago I <a href=\"http:\/\/msalamon.pl\/przeswietlam-ksiazke-mikrokontrolery-stm32-dla-poczatkujacych\/\">reviewed one<\/a>. It\u2019s a good approach, but unfortunately it becomes outdated very quickly. Technologies advance so fast that paper sometimes can\u2019t keep up. Of course, the foundational knowledge rarely changes, but starting your journey from scratch you won\u2019t be eager to wonder whether the libraries are still supported and whether the IDE is still usable. As for the language of books, in Poland you can find relatively few titles. I recommend catching the bug in Polish and deepening it in English.<\/p>\n\n\n\n<p>You can read blogs such as mine. Unfortunately, such a solution is bad for one reason \u2014 the knowledge is not systematized or laid out step by step. Each post is most often devoted to one topic and doesn\u2019t really connect with the others. It\u2019s an ideal way to complement your knowledge.<\/p>\n\n\n\n<p>Of course, series of blog posts appear that are combined into courses. Even in Poland a few quite good ones have appeared, but not as good as we\u2019d like. I have one reservation about a written course. It\u2019s hard to sense the author\u2019s emotions and what they meant in certain moments. It\u2019s good when such a course has lots of screenshots with schematics, charts, etc.<\/p>\n\n\n\n<p>Besides reading, I strongly recommend tutorials in video form. Nothing replaces the student\u2013teacher contact, even if it\u2019s virtual. There are tons of YouTube channels with short tutorials and descriptions. Unfortunately, similar to blogs, the knowledge may be unsystematized and it will be hard for a beginner to figure out what to do first. Additionally, the vast majority of good materials about STM32 are outside our country and \u2014 along with that \u2014 in English.<\/p>\n\n\n\n<p>There\u2019s also such a thing as <strong>online video courses<\/strong>. Lately this form of passing on knowledge has become very popular. I myself have taken several courses on various topics and I believe a well-made course teaches best. Unfortunately, I haven\u2019t seen a solid STM32 course in Polish. On Udemy in English, these courses don\u2019t inspire my confidence either. That\u2019s why, <strong>especially for my readers,<\/strong> I decided to create <strong>such a course in Polish<\/strong> (this online course is conducted in Polish). Before the course is finished, I\u2019ve prepared a document in which I\u2019ll help you create your first project on STM32. You can download it by clicking the banner.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><a href=\"http:\/\/kursstm32.pl\/?utm_source=blog&amp;utm_medium=banner&amp;utm_campaign=jak-zaczac-z-stm32&amp;utm_content=Text\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"820\" height=\"312\" src=\"http:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy.png\" alt=\"STM32 course (in Polish)\" class=\"wp-image-1022\" srcset=\"https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy.png 820w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy-300x114.png 300w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy-768x292.png 768w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy-24x9.png 24w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy-36x14.png 36w, https:\/\/msalamon.pl\/wp-content\/uploads\/2019\/06\/Kurs-STM32-zapisy-160x61.png 160w\" sizes=\"auto, (max-width: 820px) 100vw, 820px\" \/><\/a><\/figure>\n<\/div>\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;4317&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;0&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Arduino users hate him\u2026 He discovered a simple way to get started with STM32.&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 0px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Everyone was once a beginner. In the past, to acquire knowledge, you searched through libraries. Today, you search through Google. Since you found your way here, you\u2019ve probably typed the phrase \u201cHow to start with STM32?\u201d or something similar into a search engine at least once in your life. There [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3220,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[160],"tags":[175,178,176,174,177],"class_list":["post-4317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-stm32","tag-electronics","tag-kursstm32","tag-programming","tag-stm32","tag-stm32cubemx"],"_links":{"self":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/comments?post=4317"}],"version-history":[{"count":3,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4317\/revisions"}],"predecessor-version":[{"id":4421,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/posts\/4317\/revisions\/4421"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media\/3220"}],"wp:attachment":[{"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/media?parent=4317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/categories?post=4317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msalamon.pl\/en\/wp-json\/wp\/v2\/tags?post=4317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}