Este livro aborda fundamentos de microprocessadores, como CPU, ULA, registradores, instruções, assembly, etc., tanto para leitores iniciantes que precisam de conceitos básicos de microcontroladores (MCUs) quanto para desenvolvedores experientes, porque o foco está nos MCUs ARM Cortex-M. Mesmo conceitos fundamentais são explicados com base na arquitetura dos processadores ARM. Usamos ambiente integrado de desenvolvimento (IDE), com as ferramentas STM32CubeMX e STM32CubeIDE, que são gratuitas e têm recursos avançados de depuração, simulação, edição, suporte às bibliotecas. Trabalhamos os conceitos mais importantes de Programação de Software Embarcado, superloop, non- blocking code, foreground-background, interrupt service routine (ISR) etc. Microcontroladores são caracterizados por possuírem vários periféricos. Apresentamos os mais importantes, e para cada periférico fizemos uma prática que demonstra como são programados. O livro tem descrições de GPIO, Timers, PWM, ADC, NVIC, DMA, e um capítulo dedicado aos periféricos de comunicação. No capítulo de comunicação vemos como funcionam UART, SPI, I2C, LIN, CAN, USB, com códigos e tutoriais sobe suas configurações. Há um capítulo com dez práticas, com código inicial fornecido e alguns desafios para o leitor.