Course detail

Microcontrollers and Embedded Systems

FEKT-MPC-MKSAcad. year: 2023/2024

Students learn the advanced features of the C language, its use in microcontrollers programming, and the details of ARM Cortex-M architecture and peripherals of STMicroelectronics STM32 MCUs. They learn to design and program drivers for the most common peripherals such as button inputs, multiplex displays, graphic displays, shift registers, temperature sensors, etc. The course shows the procedures necessary for the design of complex applications with STM32 microcontrollers, including the topics of source code management and documentation.

Language of instruction


Number of ECTS credits


Mode of study

Not applicable.

Entry knowledge

Attendant should be able to:
- describe main microcontroller blocks and their function
- design simple C program
- design program for setup of basic peripherals, interrupt control and separate functions and function calls
- analyze simple electronics circuits with passive parts and transistors and choose corresponding way of connecting to the microprocessor.
The subject knowledge on the Bachelor's degree level is requested.

Rules for evaluation and completion of the course

Students are evaluated continuously during the semester for active work in computer exercises and a midterm test. Credit is awarded after completion of lessons with compulsory attendance. The compulsory final exam consists of a written, practical and oral part. 
The content and forms of  instruction in the evaluated course are specified by a regulation issued by the lecturer responsible for the course and updated for every academic year. 


The aim of the course is to deepen students' knowledge of microprocessor technology and programming in C, to familiarize them with ARM Cortex-M core, with STMicroelectronics STM32 MCUs, and learn to design the hardware and firmware for the most common peripherals.
The graduate is able: (a) describe the structure of ARM Cortex-M core; (b) describe basic blocks of STMicroelectronics STM32; (c) create firmware in C language including GCC specialties; (d) design and use connection of selected microcontroller peripherals; (e) design and assemble own device with microcontroller including firmware.

Study aids

Not applicable.

Prerequisites and corequisites

Not applicable.

Basic literature

HEROUT, P. Učebnice jazyka C. České Budějovice: KOPP, 1994. (CS)
MARTIN, T. The Insider's Guide To The STM32 ARM Based Microcontroller. Hitex Ltd., UK, 2008. (EN)

Recommended reading

Not applicable.


Classification of course in study plans

  • Programme MPC-AUD Master's

    specialization AUDM-TECH , 1. year of study, winter semester, compulsory-optional
    specialization AUDM-ZVUK , 1. year of study, winter semester, compulsory-optional

  • Programme MPC-EKT Master's, 1. year of study, winter semester, compulsory

Type of course unit



26 hours, optionally

Teacher / Lecturer


C language: constants and operators, control structures, preprocessor, functions, memory classes, pointers
C language: arrays, strings, struct, union, enum, bit operations, inline, volatile, naked, state machines
C language: introduction to libc libraries, arm-none-eabi-gcc compiler, printf and stdout
C language: specialties in libc and gcc, combination with ASM, basic libraries
source code: Doxygen, Subversion; coding style
ARM Cortex-M core: architecture, features, NVIC, GPIO
high-level firmware development, middlewares, STM32CubeMX tool
STM32 peripherials: counter/timer (SysTick, tone generator, PWM etc.), RTC, ADC, DAC
STM32 communication: UART (RS232/485), SPI, I2C, 1-wire, DMA
peripherals: buttons, normal LED, multiplexed LED, rotary encoder, text display, beeper, shift registers
peripherals: graphic display (drivers, vector graphics, TV screen); motors (DC motor, bridges, stepper motor, servo, BLDC)
embedded systems design principles, introduction to RTOS, cooperative RTOS
preemptive operating system FreeRTOS, application debugging over SWD 

Laboratory exercise

39 hours, compulsory

Teacher / Lecturer


F030: STM32CubeIDE, Git, basic functions
F030: ISR, buttons debouncing, SysTick timer
F030: LED display on shift register
F030: A/D converter and bargraph
F030: UART communication with DMA, EEPROM on I2C
F030: DS18B20 and NTC temperature sensors
F030: FreeRTOS and accelerometer
LPC55: NXP external
LPC55: NXP external
F429: Matrix keypad and code lock
F429: USB HID mouse
F429: Ethernet, TCP client and server