This is a guide for newbies to bare metal programming using nucleo-STM32F767zi board. Bare metal code i.e. configuring registers directly to achieve desired behaviour without using various abstraction layers. One can use any board of there choice because in bare-metal programming we are interacting on a hardware level, main thing to learn here is how to go through a datasheet and configure various registers hence making one adaptable to different microcontrollers. The only thing that differs from one manufacturer to another is the architecture, which should be kept in mind while programming a partucular microcontroller.
Mainly 2 documents are required to program a particular microcontroller.
Datasheet | View block diagram, bus connections etc. |
---|---|
Reference Manual | To configure specific register bits. |
- Hello World of Embedded - Blink an LED
- General Purpose Input Output
- System Tick Timer Basic
- Delay using System Tick Timer
- Universal Synchronous/Asynchronous Receiver Transmitter Driver
- General Purpose Timer Module Basic
- General Purpose Timer Module Compare
- General Purpose Timer Module Input Capture
- Input Capture Frequency Period Measurement
- Pulse Width Modulation Using Timer
- General Purpose I/O Interrupt
- Multiple General Purpose I/O Interrupt
- Universal Asynchronous Receiver-Transmitter Interrupt
- System Tick Timer Interrupt
- General Purpose Timer Module Interrupt
- Analog To Digital Converter Basic
- Analog to Digial Converter + Timer Basic
- Liquid Crystal Display 8-bit Mode Basic
- Liquid Crystal Display 8-bit Mode String
- Serial Peripheral Interface Basic
- Serial Peripheral Interface + Liquid Crystal Display
- CAN Loopback Mode