Hands-On Workshop Highlights ease of
developing with Cortex-M0 MCU
Objectives
Introduction to the ARM Cortex-M microcontroller
Learn how to build, program, and debug an
embedded system
Free STM32F0 Discovery Kit for each participant
Agenda
Presentation
Installation
Overview of the STM32 Portfolio
Introducing the STM32 F0 Series
The STM32 F0 Part 1: Cortex-M0
Hands-on Training Part I
The STM32 F0 Part 2: System and Peripherals
Hands-on Training Part II
STM32 Firmware and Development Tools
Questions and Answers
Speaker
Microcontroller Group
Americas Region
Tool Installation
Systems Check
Everyone should have
A Windows Laptop (XP, Vista or Windows 7)
USB Flash Drive
The following will be provided after software installation:
USB Cable
STM32F0DISCOVERY kit
Ready to begin?
Note: Please do not attempt to plug in the STM32 F0 Discovery Kit into your laptop until
instructed to do so.
Step #1 - File Installation
Insert the USB Flash Drive into your Laptop
Copy the folder d:\STM32F0-Discovery_Kit on
the USB flash drive to your root c:\ folder
C:\STM32F0-Discovery_Kit\
Enter this directory. You will find the following:
In the \ARM_Keil_MDK directory: Keil Vision set-up file
Documentation folder containing all relevant documentation for this
training
Discovery Kit Firmware folder
Keil Vision Version
For this workshop, we will be using the evaluation version
of the Microcontroller Development Kit from ARM. Some
restrictions apply:
Program and debug up to 32 Kbytes of code
No disassembly listing
Some restriction on linkage usage
Limited base address usage
Step #2 - Install Keil Vision
Double-click on the file mdkxxx.exe to begin installation
(xxx=version number). Please click-through the default
options and accept the license agreement
At the end of installation you will be asked if you want to
add example projects to the recently used project list.
Nothing specific is required for the hands-on exercises.
The final dialog box:
Dont select Launch Driver Installation: ULINK Pro Driver V1.0
We will be using the embedded ST-Link on the Discovery Kit
Optional Show Release Notes
Ask for assistance if you have an question or issue
Overview of the STM32 Portfolio
STM32 7 product series
10
STM32 applications
Industrial
Medical
PLC
Glucose meters
Inverters
Portable medical care
Printers, scanners
VPAP, CPAP
Industrial networking
Patient monitoring
Solar inverters
Meets Building and security
Appliances
Alarm systems
3-phase motor drive
Access control
Application control
HVAC
User interfaces
Power meters
Induction cooking
Consumer
Home audio
Gaming
PC peripherals
Digital cameras, GPS
11
Introducing STM32 F0 Series
STM32 F0 series: key features
13
Innovative peripheral mix
Analog
12-bit ADC with 1 MSPS
12-bit DAC
2x comparators
Separate supply for improved accuracy
HDMI consumer electronics
control (CEC)
Touch-sensing
Up to18 keys
Key, slider and wheel
Advanced timers
32-bit and 16-bit PWM timers with 17
capture/compare input/outputs mapped
on up to 28 pins
Motor control
Permanent magnet synchronous motors
(PMSM)
14
Maximum integration
Meets industry safety
specifications
Class B-ready for appliances
Hardware RAM parity check
Clock security system (CSS) to
switch to internal backup RC in case
of external clock failure
2x watchdogs capable of real-time
code execution monitoring and
ensuring the application integrity
independently from system clock
Cyclic redundancy check (CRC)
with DMA support for embedded
Flash-memory content-integrity
checking
15
STM32 F0 portfolio
now
16
Great Fit for Applications
Great fit for appliances
Easy communication between front panel and
power components with robust IC FM+ with 20 mA
sink capability and fast IO toggling capability
(25% faster than STM32 F1 at same frequency)
Advanced digital and analog IPs
- 3 timers suit induction cooking apps
- 1 timer for motor control (complete reference designs available)
- 1 s, 12-bit ADC with 12 channels for efficient sensors
Safety ready: optimized self-test routines for EN/IEC 60335-1 Class B
Advanced system and peripheral set
- Real-time hardware RAM parity check and 16-bit CRC for Flashmemory integrity checks
- Extended double watchdog system with autonomous clock,
windowing and clock security system
18
Great fit for consumer electronics
Optimized communication:
CEC with dual clock domain allows flexible
wake-up and synchronization
Infrared remote-control decoder/encoder
firmware libraries with optimum hardware
implementation
3.6 V
CEC
1.8 V
Easy interface with 1.8 V ICs
(i.e. application processors)
Separate power supply
domains allows for a wider
dynamic range for the ADC,
DAC and Comparator (up to
3.6 V) when Vdd is 1.8V.
APPLICATION
PROCESSOR
Capacitive touch sensing: Touch-controller IP
allows zero CPU load with charge transfer method
Supporting up to 18 keys and slider/wheel capability
19
Introducing the ARM Cortex-M0
Cortex-M0 processor architecture
ARMv6M Architecture
Thumb-2 Technology
Integrated configurable NVIC
Compatible with Cortex-M3/M4
Microarchitecture
3-stage pipeline
1x AHB-Lite Bus Interfaces
Configurable for ultra low power
Deep Sleep Mode, Opt. Wakeup Interrupt Controller
Flexible configurations for wider applicability
Configurable Interrupt Controller (1-32 Interrupts and Priorities)
No Memory Protection Unit
Optional Debug & Trace
21
Cortex-M processors binary compatible
22
Cortex-M feature set comparison
Cortex-M0
Architecture Version
Cortex-M3
Cortex-M4
V6M
v7M
v7ME
Thumb, Thumb-2 System Instructions
Thumb + Thumb-2
Thumb + Thumb-2,
DSP, SIMD, FP
0.9
1.25
1.25
Yes
Yes
Yes
Number interrupts available
1-32 + NMI
1-240 + NMI
1-240 + NMI
Interrupt priorities available
8-256
8-256
Breakpoints, Watch points
4/2/0, 2/1/0
8/4/0, 2/1/0
8/4/0, 2/1/0
Memory Protection Unit (MPU)
No
Yes (Option)
Yes (Option)
Integrated trace option (ETM)
No
Yes (Option)
Yes (Option)
Fault Robust Interface
No
Yes (Option)
No
Yes (Option)
Yes
Yes
No
Yes
Yes
Yes (Option)
Yes
Yes
Bit banding support
No
Yes
Yes
Single cycle DSP/SIMD
No
No
Yes
Floating point hardware
No
No
Yes (Option)
AHB Lite
AHB Lite, APB
AHB Lite, APB
Yes
Yes
Yes
Instruction set architecture
DMIPS/MHz
Bus interfaces
Integrated NVIC
Single Cycle Multiply
Hardware Divide
WIC Support
Bus protocol
CMSIS Support
23
Cortex-M firmware compatibility
Cortex M processors are FW and binary compatible
Re-compilation of the code is recommended between cores
When moving from M0/M3 to M4, some parts of the firmware may
be re-coded to take advantage of the advanced DSP/SIMD
instructions
When moving backwards (from M3/M4 -> M0), the code must be
recompiled to only use M0 instructions
For a given STM32 family, the compatibility between the full
peripheral set provides a simple migration path
Code density is equivalent on the different Cortex-M
implementations
Code sizes are within a few percent of each other in typical cases
when the same compiler optimizations are used
24
STM32F0-DISCOVERY
STM32F051R8T6
48 MHz Cortex-M0
64-pin LQFP
64 Kbytes Flash/8 Kbytes RAM
26
Embedded ST-Link
ST-Link programming and
debugging tool integrated onboard the kit (STM32F103C8T6)
Can be used two different ways
Program and debug the MCU on the
board
Program an MCU on another
application board
Features
USB Connector
ST-LINK MCU
5V to 3V Voltage regulator
CN2 MCU Program Jumper
CN3 Application SWD connector
27
LEDs/Push-Buttons/Extension
Connector
LEDS
28
P1
P2
LD1
LD2
LD1: Power indicator
LD2: ST-LINK Communication indicator
LD3: User LED (PC9)
LD4: User LED (PC8)
Push-Buttons
B1: User/Wake-up (PA0)
B2: Reset (NRST)
Extension Connector
B2
B1
P1 and P2
LD4
All GPIOs are available for prototype LD3
Includes 5V, 3V and GND pins
Jumpers/User Manual/Firmware Library
Jumpers
JP1: USART1 TX and RX (not fitted,
reserved function)
JP2: IDD for MCU current
measurement (fitted by default)
JP1
Documentation
UM1523 STM32F0DISCOVERY Kit
Firmware Library
Contains STM32F0 Standard
Firmware Library
Contains example code
AN4062 peripheral firmware
examples
JP2
29
Step #3 - Install ST-Link Driver
The STM32F0DISCOVERY board includes an ST-LINK/V2
embedded programming and debug tool
The driver for ST-Link is contained in the Keil uVision toolchain and
located in this directory:
C:\Keil\ARM\STLink\USBDriver
Double-click on the file: ST-Link_V2_USBDriver.exe to install
Click through the installation menu until the driver installation is
complete
30
Step #4: Connect the DiscoveryKit/
Enable ST-Link
Using the USB cable, connect the mini-B male connector into the
STM32F0DISCOVERY USB port and connect the A male connector into your
Laptop
Wait for Windows to recognize the
ST-Link device and follow any step
required to install the driver
Upon successful driver recognition,
the ST-Link device should be fully
enumerated in Windows Device
Manager as show:
31
Step #4
ST-Link Driver Trouble Shooting
1. Open Device Manager
2. Right-click on the STM32 ST-Link Driver icon
3. Select Update Driver Software
32
Step #4
ST-Link Driver Trouble Shooting
4. Select Browse my computer for
driver software
5. Select Let me pick from a list of
device drivers of my computer
6. Click Next
33
Step #4
ST-Link Driver Trouble Shooting
The STMicroelectronics ST-Link dongle should be listed
7. Click Next
34
Step #4
ST-Link Driver Trouble Shooting
A warning message may appear
8. Select Install this driver software anyway
35
Step #4
ST-Link Driver Trouble Shooting
You should receive a message:
Windows has successfully updated
your driver software
Re-check device manager to ensure
STMicroelectronics ST-Link dongle
is functioning normally
36
STM32 F0 Tools
Documentation overview
Documentation resources
Discovery Kit related documentation can be found @
www.st.com/stm32f0discovery under the Design support tab
In the directory:
C:\STM32F0-Discovery_Kit\Documentation\
You will find:
STM32F051x Datasheet
STM32F051x Errata (ES0202)
STM32F051x Reference Manual (RM0091)
STM32F0xxx Cortex-M0 programming manual (PM0215)
STM32F0DISCOVERY peripheral firmware examples (AN4062)
Getting started with software and firmware environments for the
STM32F0DISCOVERY kit (UM1523)
STM32F0DISCOVERY kit user manual (UM1525)
38
Documentation resources
Main website page for the STM32 F0 Series
www.st.com/stm32f0
You can find
Datasheets
Applications Notes
Errata
Technical Notes
Programming Manuals
Reference Manual
User Manuals
Firmware
For all STM32 related products: www.st.com/stm32
39
Support resources
Technically trained distributors
Distributors listed on CONTACTS page, www.st.com/contactus
ST Public Forums:
Located on main
www.st.com page under
Support tab ST e2e
Communities
Submit technical
questions to ST Online
Support:
Located on main
www.st.com page under the
Support tab Online
Support
40
Compile, Debug and Run
First, a process check
ST-Link is recognized by your system
LD1 and LD2 should be ON (indicating the board is
powered and the ST-Link is functional)
LD3 (Green) should be flashing
A brief test of the board
Press the USER Button
LD4 (Blue) should flash once
LD3 (Green) will blink rapidly
Press the USER Button again
LD4 (Blue) should flash once
LD3 (Green) will shut off
42
Step #5
Open FW demo project with Keil uVision
Using explorer, go to the directory:
C:\STM32F0-Discovery_Kit\STM32F0-Discovery_FW_V1.0.0\
Project\Demonstration\MDK-ARM
Double-click on the STM32F0-Discovery_Demo.uvproj file
43
Step #5 - Inside Keil uVision
Debug Button
Build Button
Files Window
Project Window
44
Step #6 - Compile
Click on the Build button or Menu::Project::Build Target
Build Button
The project should compile without errors
45
Step #7 - Debug
Click on the Start/Stop Debug Session button or Menu:
Start/Stop Debug Session
Debug Button
You should receive a warning
message. Click OK
46
Step #7
The MDK-ARM IDE Debugger
Disassembly Window
Files Window
Program counter position
Register Window
Command Window
Memory Windows
47
Step #8 - Run
Click on the Run button to start the program
Run Button
Your STM32F0DISCOVERY board LD3 should begin flashing
Note: LD2 (ST-Link Status) Should be flashing
48
Step #8 - Run
Mission Accomplished
Please click on the Stop
button.
You code will stop
anywhere within the
program flow
Stop Button
Click on the Debug button
to exit from the debugger
Debug Button
49
Lets make a change
Double-click to open the main.c file
Scroll down to line 100
Enter a number from 10 to 500 and place in the Delay(xxx) statement
Note: a larger number results in a slower blink rate after the first press of the button
Compile, Debug, and Run
Press the User button. Validate! Did it work?
Stop debug and exit the debugger
50
Firmware Project Overview
Project Files
User files
main.c (program entry point)
system_stm32f0xx.c (initial system configuration)
stm32f0xx_it.c (ISRs)
stm32f0-discovery.c
Board specific functions
STM32F0xx_StdPeriph_Driver
Contains peripheral library functions
startup_stm32f0xx.s
System initialization, vector table, reset and branch to
main()
52
startup_stm32f0xx.s
Main Characteristics
Initializes stack pointer
Contains the vector table for the part
Contains Reset handler - called on system reset
Calls SystemInit() function
Branches to main()
53
system_stm32f0xx.c
SystemInit()
This function is called at startup just after reset and before branch to main
program. This call is made inside the "startup_stm32f0xx.s" file.
Setups the system clock (System clock source, PLL Multiplier and Divider factors,
AHB/APBx prescalers and Flash settings)
Define PLL source
SystemInit()
.
.
.
Call SetSysClock()
Configure clock tree
54
main.c
Example main()
Standard C main() function entry
Start of application program
55
stm32f0xx_it.c
Contains Cortex-M0 Processor Exception Handlers (ISRs)
void NMI_Handler(void);
void HardFault_Handler(void);
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
Contains the STM32F0xx Peripherals Interrupt Handlers (default is
empty)
Add the Interrupt Handler for the used peripheral(s) (PPP), for the
available peripheral interrupt handler's name please refer to the
startup file: startup_stm32f0xx.s
void PPP_IRQHandler(void) {};
56
stm32f0-discovery.c
Contains board specific function and definition
Defines Push-button and LED GPIO definitions
Contains board specific funcitons
void STM_EVAL_LEDInit(Led_TypeDef Led);
void STM_EVAL_LEDOn(Led_TypeDef Led);
void STM_EVAL_LEDOff(Led_TypeDef Led);
void STM_EVAL_LEDToggle(Led_TypeDef Led);
void STM_EVAL_PBInit(Button_TypeDef Button, ButtonMode_TypeDef
Button_Mode);
uint32_t STM_EVAL_PBGetState(Button_TypeDef Button);
57
STM32F0xx_StdPeriph_Driver
Each file contains library functions that can be
used for each peripheral
Abstracts register manipulation and gives a
standard API for access to peripheral
functions
Example:
58
The STM32 F0 Series in Detail
STM32 F0 Series 64KB STM32F051
ARM 32-bit Cortex-M0 CPU
Operating Voltage:
VDD = 2.0 to 3.6 V
VBAT = 1.8 to 3.6 V
Safe Reset System (Integrated Power On
Reset (POR)/Power Down Reset (PDR) +
Programmable voltage detector (PVD))
Embedded Memories:
FLASH: up 64 Kbytes
SRAM: up 8 Kbytes
CRC calculation unit
5 DMA Channels
Power Supply with software configurable
internal regulator and low power modes.
Low Power Modes with Auto Wake-up
Low power calendar RTC with 20 bytes of
backup registers
Up to 48 MHz frequency managed &
monitored by the Clock Control w/ Clock
Security System
Rich set of peripherals & IOs
1 12-bit DAC with output buffer
2 low power comparators (Window
mode and wakeup)
Dual Watchdog Architecture
11 Timers w/ advanced control features
(including Cortex SysTick and WDGs)
7 communications Interfaces
Up to 55 fast I/Os all mapable on
external interrupts/event
1x12-bits 1Msps ADC w/ up to 16
external channels + Temperature
sensor/ voltage reference/VBAT
measurement
60
System Architecture
ARM 32-bit Cortex-M0 CPU
Nested Vector Interrupt
Controller (NVIC)
SWD
Bus Matrix
5 DMA Channels
61
System architecture/DMA
62
Cortex-M0 and DMA share the AHB bus matrix to allow parallel access
Multiple possibilities of bus access to SRAM, Flash, Peripheral, DMA
Von Neumann + Bus Matrix allows Flash execution in parallel with DMA transfer
Buses are not overloaded with data movement tasks
Increase peripheral speed for better performance
AHB
System
CORTEX-M0
Master 1
AHB
BusMatrix
DMA
Flash I/F
Slave 3
Advanced Peripheral Bus (APB) architecture up to 48 MHZ
FLASH
SRAM
Slave 1
AHB
AHB2GPIO
GP-DMA
Master 2
GPIO A, B ,C, D, F
Slave 4 Bridge
AHB
RCC, CRC, Touch
Sensing controller (TSC)
APB
AHB2APB
Arbiter
Slave 2 Bridges
SYSCFG, TIMs, WWD, IWWD, RTC,
I2Cs, USARTs, SPI/I2Ss, HDMI-CEC,
DBGMCU
62
Cortex-M NVIC
(Nested Vector Interrupt Controller)
Interrupts are Fast AND Deterministic
IRQ1
Cortex-M
Interrupt handling in HW
Push pc, regs on stack
Fetch ISR vector to PC
Pop stack to regs
Pop PC from stack
PUSH
POP
ISR 1
12
12
IRQ2
Cortex-M
Tail-Chaining back-to-back
interrupts
Tail-chaining
PUSH
12
ISR 1
ISR 2
6
6 CYCLES
POP
12
63
Cortex-M0 Exception Types
No.
Exception Type
Priority
Type of
Priority
Reset
-3 (Highest)
fixed
Reset
NMI
-2
fixed
Non-Maskable Interrupt
Hard Fault
-1
fixed
Default fault if other hander not implemented
4-10
Reserved
N.A.
N.A.
11
SVCall
Programmable
settable
12-13
Reserved
N.A.
N.A.
14
PendSV
Programmable
settable
Pendable request for System Device
15
SYSTICK
Programmable
settable
System Tick Timer
16
Interrupt #0
Programmable
settable
External Interrupt #0
..
..
settable
47
Interrupt#31
Programmable
settable
Descriptions
System Service call
..
External Interrupt #31
The NVIC supports up to 32 dynamically re-prioritizable interrupts each with 4 levels of priority
64
Memories:
Flash, SRAM, Back-up Data Registers
Embedded Memories:
FLASH: up 64 Kbytes
SRAM: up 8 Kbytes
20 bytes of backup
registers
65
System
66
System: power supply
Operating Voltage:
VDD = 2.0 to 3.6 V
Note: VDD must be <= VDDA
VDDA = 2.0 to 3.6 V (VDDA >= VDD)
VBAT = 1.8 to 3.6 V
Safe Reset System (Integrated Power On Reset
(POR)/Power Down Reset (PDR) + Programmable
voltage detector (PVD))
Power Supply with software configurable internal
regulator and low power modes.
Low Power Modes with Auto Wake-up
67
Low Power Modes
STM32F05x Low Power modes: uses Cortex-M0 Sleep modes
SLEEP, STOP and STANDBY
Feature
STM32F05x typ
IDD/IDDA (*)
RUN mode w/ execute from Flash on 48MHz
(HSE bypass 8MHz x 6 PLL = 48MHz) All peripherals clock ON
22 / 0.260 (mA)
RUN mode w/ execute from Flash on 24MHz
(HSE bypass 8MHz x 3 PLL = 24MHz) All peripherals clock ON
12.2 / 0.185 (mA)
RUN mode w/ execute from Flash on 8MHz
(HSI) All peripherals clock ON
4.4 / 0.210 (mA)
Sleep mode w/ execute from Flash at 48MHz
(HSI 8MHz / 2 x 12 PLL = 48MHz) All peripherals clock ON
14 / 0.340 (mA)
STOP w/ Voltage Regulator in low power
All oscillators OFF, PDR on VDDA is OFF
3.7 / 1.34 (A)
STANDBY w/ LSI and IWDG OFF
PDR on VDDA is OFF
1.3 / 1.21 (A)
Typical values are measured at TA = 25 C, VDD =3.6 V VDDA= 3.6 V.
68
On-chip oscillators
Up to 48 MHz frequency managed & monitored by the
Clock Control w/ Clock Security System
External Oscillators 32kHz (RTC) and 4-32MHz (System Clock)
Internal RC Oscillators 40kHz (IWDG) and 8MHz
PLL
Low power calendar RTC
Dual Watchdog Architecture
Up to 55 fast I/Os all mapable on external
interrupts/event
Touch Sensing Controller with up to 18 touch sensing
electrodes
CRC calculation unit
69
Connectivity
7 communications Interfaces
70
Analog
1 12-bit DAC with output
buffer
1x12-bits 1Msps ADC w/ up to
16 external channels +
Temperature sensor/ voltage
reference/VBAT measurement
2 low power comparators
(Window mode and wakeup)
71
Hands-on #2 NVIC_WFI_Mode
NVIC_WFI_Mode Example
NVIC (Nested Vector Interrupt Controller) using EXTI
interrupt event
WFI (Wait For Interrupt) places CPU to sleep (reduces
power)
Action Steps
Exit Debugger
Close Keil uVision
73
Open NVIC_WFI_Mode Project
Go to the directory:
C:\STM32F0-Discovery_Kit\STM32F0-Discovery_FW_V1.0.0\
Project\Peripheral_Examples\NVIC_WFI_Mode\MDK-ARM
Double-click on NVIC_WFI_Mode.uvproj to open the project
74
Run Example
Action Steps
Compile
Debug
Run
Validate!
What happens when you press the USER button? Why?
Continue
Stop; Reset
Place Breakpoint @ stm32f0xx_it.c line 117 (EXTI0_1_IRQHandler)
Run
Press USER pushbutton
75
main.c
1. Configure board specific functionality
Init LED
Init pushbutton
76
stm32f0_discovery.c: GPIO &
SYSCFG
Enable PCLKs for GPIO and SYSCFG
Configure GPIO pin
77
stm32f0_discovery.c: EXTI &
NVIC config
Configure EXTI
Configure NVIC
78
stm32f0xx_it.c: set EXTI0 IRQ handler
Place logic to handle EXTI exception
1. Check interrupt status. Determine which interrupt triggered the exception
2. Clear EXTI pending interrupt bit
3. Perform action. (Set LowPowerMode = 1)
79
main.c: WFI
The main control loop
EXTI interrupt controls the state variable LowPowerMode
Either flash LED or
Turn LED off and sleep using the Cortex M command Wait For Interrupt (WFI)
80
NVIC Linkage
1. PB triggers Event
2. EXTI Generates Interrupt
3. NVIC pushes 8 regs to
stack
Interrupt
4. NVIC loads PC with EXTI
vector
5. EXTI ISR Executes
Interrupt
Interrupt
PB Event
Presentation Title
15/10/2012
81
Tips and Tricks:
Using the Firmware Library
Tips and Tricks
Start with the firmware library examples
Basic peripheral configuration
Configure your clock tree (typically done with SystemInit() in system_stm32f0xx.c)
For each peripheral you plan on using:
Enable the PCLK to that peripheral (RCC_APB1PeriphClockCmd())
Determine GPIO usage
Enable GPIO PCLK(s); Alternate Function PCLK (if used)
Configure Alternate Function(s) as needed
Configure GPIO(s) pins
Configure the peripheral
Enable the peripheral (if needed)
Interrupt usage and mapping
Add ISR in stm32f0xx_it.c (copy name from startup_stm32f0xx.s)
Enable interrupt in NVIC
Enable interrupt source in the peripheral
83
STM32 tools
Starter and promotion kits
numerous boards
Motor Control kit
Evaluation boards:
STM32 W evaluation kit
STM320518-EVAL, STM3240G-EVAL
STM32W-SK
STM32 promotion kits
EvoPrimer
STM32-ComStick
4 Discovery kits
and STM32L152D-EVAL
More than 15 different
development IDE solutions
More than 25 different RTOS
and stack solution providers
84
ST standard peripheral lib
Hardware abstraction layer fully covering the microcontroller,
STM32 or STM8
Compliant with standards
ANSI-C source code
Misra and ST coding rules
ARM-CMSIS compliant for STM32
As real help for developers
Comes with a multitude of examples demonstrating
usage
85
STM32 firmware solutions
Audio codecs
Motor control
Cryptographic algorithms
RTOS/Kernel
HAL - Middleware and Application
Customer application
Bluetooth stack
-FTP
-
Std library LCD
File systems (FAT, )
Ethernet
USB
Specific
Graphical protocols SD/SDIO classes
-TCP/IP
protocol - Mass storage
protocols library
-HTTP
Ethernet SD/SDIO
We provide more than just silicon
Touch
sensing
library
-Audio
-
USB
DSP library
Free (ST or open source)
3rd parties
Both
86
MicroXplorer: STM32 configuration tool
Product Selection
Pinout configuration
Peripherals configuration
Conflicts resolution
www.st.com/microxplorer
87
Clock Configuration Utility
Helps configure the microcontroller
clocks
Generates the system_stm32f0xx.c
file
88
STM32 portfolio overview
89
Questions and Answers
Thank you
www.st.com/stm32f0discovery