I’ve just finished producing all the planned materials for my STM32 Course for Beginners (the course content is conducted in Polish). This is the perfect time to summarize what I’ve accomplished so far. I also learned a lot while creating this course. Here’s my little summary.

The second edition of the course starts in February. Sign up at KURSSTM32.PL (the course content is conducted in Polish) so you don’t miss the launch!

The idea for the course

I came up with the idea of creating the course in spring 2019. The course launched in October 2020, so quite a lot of time passed from the idea to execution. Now – in January 2021 – I’ve completed the basic scope of the course that I had planned. So you could say that I worked on the course for about two years.

I selected the course topics based on my experience, and by talking with interested people. I had tons of private conversations. I sent out several surveys with questions about what people actually need.

While creating the course, the thought that guided me was that I’m creating a course for you, not for myself. I already know how to program 🙂

Course topics

Across the whole curriculum we go through the basic interfaces of the STM32F411RE microcontroller. Of course, we used the NUCLEO-F411RE board for this. ST’s eval boards make learning incredibly easier.

In the course we covered only the basic interfaces. These are:

  • GPIO
  • UART
  • ADC
  • I2C
  • SPI
  • USB
  • SDIO

Some of them in combination with DMA, like ADC, which in my opinion is made for that kind of work.

We also got to know Low Power modes, which allow us to build battery-powered devices.

Code blocking

The biggest pain for beginners is code blocking. Usually it happens through excessive use of Delays in our programs.

In the course I showed two simple methods to avoid blocking.

These are a software timer and a state machine.

We wrote a simple “scheduler” based on software timers, which triggered the required actions accordingly. For example, taking a measurement from the BMP280, or refreshing the OLED.

For button handling I used a state machine. Thanks to it, debouncing is unnoticeable both for us and for the microcontroller.

UART + DMA = <3

Internet forums are bursting with questions on how to do it! Some time ago I wrote two articles about it:

In the course, I explained in more detail how to handle it. Together with decoding messages that arrive on UART.

Other peripherals

With the other peripherals, I also show other important aspects of embedded programming.

How to write a library from scratch based on documentation?

How to port a ready-made library from Arduino?

Do I need a level shifter for I2C?

Why is displaying on a TFT so slow? How to speed it up?

Using an SD card in your project.

USB communication: VCOM, mass storage, HID

…and many others.

FreeRTOS

Many times, interested people asked me to cover FreeRTOS in the course. I decided to do it. Contrary to some opinions, writing under RTOS control is not easy, which I also showed in the course.

The module dedicated to FreeRTOS turned out to be the longest module and at this moment it contains 8 hours of materials.

I didn’t just show how individual FreeRTOS components work. We built a project that uses it. Many courses show FreeRTOS from the perspective of blinking LEDs and printing to UART…

But our projects always do more! It turns out that adding two devices on one I2C, and an ADC measurement heavily complicates – for us as beginners – the use of FreeRTOS. I showed in the course how to deal with these problems.

What did I, as the creator, take away from the course?

Even though in the course I teach STM32 programming, I also took a lot from it.

  • It taught me to organize my thoughts. Organizing such a huge project required many hours of planning and sorting out topics. My future materials on the blog or in other new places on the Internet will certainly be better structured.
  • Working with the camera. My students can see firsthand how experience affects on-camera results. With each module my work in front of the lens gets better and better. I speak more and more freely. I’m also quite relaxed already when talking to the lens. Working with the camera was an important learning point for me.
  • You can always teach someone something. People who are afraid to start sharing publicly always have the same thoughts… “what if I know too little” or “someone more experienced will eat me alive with their knowledge”. I had these thoughts when starting the blog. I had these thoughts when starting the store. I had these thoughts when coming up with the idea for the course! I will have these thoughts before every next project. The truth is one.If you know even 1% more than others in some topic, you can teach them exactly that 1%. That blockage is only in your head. If there’s someone who knows more – they simply won’t read/watch you. But a lot of other people will benefit from your knowledge!
  • Plans and execution are two different things. We know this, for example, from all our own projects or from work. After all, sales or marketing will always promise something “in two weeks”, when the engineering team knows perfectly well it will take a month. It’s an eternal battle :)I remember that I planned to release the course in half a year. It took 2 years. It was supposed to fit into a maximum of 20 hours. It turned into 40. It was supposed to last, or rather I was supposed to release it over 12 weeks. In the end there was so much material that I released it over 16 weeks.I think most people tend to underestimate. I’m the same 🙂
  • Hardware is your enemy. I program hardware and I like hardware. However, when you have to use it, problems appear. Both hardware-related and user-related. A few of my mishaps like that:You forget to charge all the camera batteries. Or you didn’t anticipate that when recording with a phone – it will start overheating after an hour.Or a microphone connected to a laptop records differently than when connected to a PC. Or sometimes you won’t start recording on the camera or on the microphone and you talk for half an hour “for nothing”, or you try to filter the audio recorded by the camera so you don’t lose a few hours of material (Can the students tell in which module this happened to me? 😛 ).Or the laptop starts dropping audio samples and you have chunks of silence in the recording.Or on the last possible day of the week to record you break two light bulbs for lighting :)Or you didn’t record your microphone on a LIVE Call. Or the next time you recorded only yourself, but not the other participants ;)There’s quite a lot of that, and as I expand my course-making workshop, this list of mishaps unfortunately grows. Checklists or procedures help, but unfortunately not with everything.
  • I met a lot of great people! As part of the course we have a closed discussion group. We also organize recurring LIVE Calls, where we talk not only about the basics of STM32 programming.Among my students there are amazing people with knowledge from different fields. After all, it’s not only embedded programmers who want to learn STM32! I met people who are familiar with various topics such as: electronics design, web programming, IoT. There are also versatile people who can answer any question by citing the right book that explains it :)This is an invaluable “Bonus” of the course and I’m very proud of it!

Summary

I think the course turned out great! This was only the first edition, so there’s still a huge field for improvement.

In the first edition, all the way to the end, a total of AS MANY AS 205 people participated! I say “to the end” because with me you can always count on a full refund if you don’t like the course (within the first 30 days).

I’m also planning bonus recordings of new things. Some lessons I want to record again, expanding the topic a bit.

In February I’m launching the second edition! You’ll have a chance to join us. Don’t miss registration and join the waiting list.

You can join here: KURSSTM32.PL (the course content is conducted in Polish)

The course will start exactly on February 15, and we’ll begin with a free webinar titled “How to get started with STM32 in 2021?” Come and see what I’ve prepared for you!

Podobne artykuły

.

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *