Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2019/2020
Tipo incarico Dottorato
Docente Villa Federica Alberta
Cfu 5.00 Tipo insegnamento Monodisciplinare

Corso di Dottorato Da (compreso) A (escluso) Insegnamento

Programma dettagliato e risultati di apprendimento attesi


The course MICROCONTROLLERS FOR EMBEDDED SYSTEMS provides the hardware and firmware skills to develop embedded systems based on high-end 32-bit microcontrollers (ARM-Cortex M4), with hands-on laboratories employing a development system based on the Nucleo board by STMicroelectronics and a custom POLIMI expansion board.

The course provides all the concepts required to design an embedded system based on 32-bit microcontroller of the ARM-Cortex M family, through practical hands-on lessons.


The course is organized as follow:

  1. Introduction on ARM-Cortex M cores and basics on STM32F4 family by STMicroelectronics, NUCLEO development board and its peripherals.
  2. Theoretical basics of all the main microcontrollers peripherals such as General Purpose Input/Outputs (GPIOs), Timers (Pulse-Width-Modulator - PWM), Analog-to-Digital Converter (ADC), communication (I2C, SPI, UART), Direct Memory Access (DMA); Interrupts management and Real Time Operating Systems.
  3. Hands-on practical activities on NUCLEO development board and on a POLIMI custom-designed expansion board, employing ST-CUBE interface and MDK eclipse environment.


The NUCLEO board and POLIMI expansion board will help students to become acquainted with the ARM-Cortex microcontrollers and their programming tools. In fact, during the hands-on labs, each students will practice with his own board and microcontroller, for developing both the firmware and the proper hardware configuration, to test the conceived embedded system.


The expected learning outcome is that the students become able to autonomously develop new projects, using the different microcontrollers peripherals. Students should become familiar with programming tool‑chain, microcontrollers manuals and components data-sheets.

Students will also learn how to present a project and how to work in small teams.


Basic knowledge of C-programming are considered prerequisites of the course. Students that deem it necessary to strengthen their C-programming knowledge, are strongly encouraged to contact the professor to receive indications before the beginning of the course.

Basics of electrical engineering are also required (fundamental analog and digital components, Kirkoff and Ohm laws, voltage dividers…).

Note Sulla Modalità di valutazione

Students will be asked to develop a microcontroller project in small teams (2 or 3 people) and to implement it on the real evaluation board provided. The project topic will be chosen by the students.

The students will present their project to the professor and the other students during the last class of the course. They should demonstrate familiarity with the programming environment and the microcontrollers peripherals.  Furthermore, students should also demonstrate the ability to explain their project to the rest of the class in a clear way and with an appropriate terminology. All the members of the team must participate to the presentation pointing out their contribution.  


Different skills will be evaluated, and in particular:

- knowledge and understanding of the theoretical basics of microcontrollers programming,

- ability to apply knowledge and understanding in practical examples

- communication skills

Intervallo di svolgimento dell'attività didattica
Data inizio
Data termine

Calendario testuale dell'attività didattica

Jan. 14th 2020 (4 hours):  Introduction to ARM-Cortex M cores, STM32F4 microcontroller by STMicroelectronics,
                                       NUCLEO development board and POLIMI expansion board.

Jan. 16th 2020 (4 hours):  Programming tool-chain and microcontroller environment.
                                       Real-Time Operating-Systems.

Jan. 21st 2020 (4 hours):  Interrupts and Timers.
                                       Project 1: Pushbutton and blinking LEDs
                                       Project 2: Rotary encoder

Jan. 23rd 2020 (4 hours):  UART and Liquid Chrystal Display (LCD)
                                       Project 3: The Read and Write test

Feb. 6th  2020 (4 hours):   Analog-to-Digital Converter
                                       Project 4: Potentiometer and Light Dependent Resistor (LDR)

Feb. 12th 2020 (4 hours):  Communication protocols: I2C and SPI
                                       Project 5: Temperature sensor
                                       Project 6: Snake LEDs

Feb. 14th 2020 (4 hours):  Project presentations (final exam)


All the classes will be held in the morning from 9:00 to 13:00 in Leonardo site. The room will be communicated by e-mail before the beginning of the course.

Risorsa bibliografica facoltativaFranco Zappa, Microcontrollers, Editore: Esculapio

Mix Forme Didattiche
Tipo Forma Didattica Ore didattiche
laboratorio informatico
laboratorio sperimentale
laboratorio di progetto

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Inglese
Disponibilità di materiale didattico/slides in lingua inglese
Disponibilità di libri di testo/bibliografia in lingua inglese
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese

Note Docente
schedaincarico v. 1.6.1 / 1.6.1
Area Servizi ICT