[ Log In ]
Newbie Hack Shirt Back
The STM32 ultra basic kit showing all of the components

STM32 Ultra Basic Kit Special Introductory Price!

$34.95
Qty:
The ARM STM32F030 Advanced kit with the book ARM Microcontrollers Programming and Circuit Building Volume 1

ARM Advanced Kit with Book Vol 1

$158.00
Qty:
ST Link v2 for STM32 and STM8 microcontrollers top view of all components

ST-Link v2 STM32 and STM8 Programmer

$9.95
Qty:
STM32F0 microcontroller and interface board top view

STM32 M0 MCU and Interface to Breadboard

$14.95
Qty:
Top view of the bluetooth module

Bluetooth Module

$17.50
Qty:
The ARM microcontroller beginners kit

ARM Microcontroller Beginners Kit (STM32F0)

$39.95
Qty:

ARM Microcontroller Intermediate Kit (STM32F0)

$89.95
Qty:

ARM Microcontroller Advanced Kit (STM32F0)

$119.95
Qty:
USB 2.0 Cable 10 Foot Type A Male to Type B Male

USB 2.0 Cable Type A Male to Type B Male - 10 FT

$4.80
Qty:

01. Arduino for Production!! Introduction to ARM Microcontrollers

Introduce yourself to the world of microcontrollers in general and what they do. I show you the ARM STM32 microcontroller and the general features of the processor.

This is the first in an ongoing series on the ARM microcontroller, how to program the microcontroller and the circuit building associated with this controller. This will be a series very similar to the AVR series that you can find on newbiehack.com. I will be demonstrating many different types of circuits, control, communication and sensing using the ARM M0 through the Latest M series that is available at the time of the video creation.

For those of you that may not know what a microcontroller is, or what is does: a microcontroller can do what its name implies: control. But it can also sense, receive input, respond to events, and communicate with other devices and peripherals such as external computers, other microcontrollers, or other devices that have integrated circuitry that enables it to communicate.

The ways that microcontrollers can sense is that they can receive analog input from a sensor and have that input converted into a digital format enabling the microcontroller to sense things such as temperature, light, sound, pressure, angular momentum, gravity, movement, etc.

Microcontrollers can communicate to other devices and computers using serial communication such as I2C, UART, SPI, and all of these can enable wireless communication like Wi-Fi, Bluetooth, radio frequency, etc. Microcontrollers can also receive digital input not related to serial communication, such as button presses, encoder pulses, PWM signal, and other types of on/off signals coming in.

The style of instruction I like to give is based on the lowest level fundamentals with circuit building, which means using the single processor and building off of that, not using a platform like the Arduino, discovery board, or Raspberry P (RPi). Learning in this more fundamental way will engender better foundational knowledge on how to design efficiently and prototype for large production. If you start with a platform that already has a large buildup of circuitry, once you embark on making a real design for production, you need to take steps backward to get to an efficient prototype. Keep Arduinos and other interface platforms to one off projects, and learn the fundamentals if you want to get into design that is efficient and cost effective.

The programming language used will be c++ and in most cases, I will create the libraries rather than using existing libraries. This will allow you to understand the code fundamentals on how the peripherals and external devices really work and you will be able to code more efficiently. There will be cases that I use libraries where the creation of a library would be far too complex and that the library in question has already gone through quite a bit of scrutiny. One library that comes to mind is accessing a file system on an SD card where the library has functions to read, write and manipulate a FAT File allocation system.

Since the microcontroller is a surface mount device, we can't just plug this into a breadboard. We need a way to get the pins into a breadboard and we will be using this card and interface. The card simply contains the ARM microcontroller and a way to get the legs of the microcontroller into the tie strips of the breadboard.

The card was design to specifically use three breadboards, one for each of three sides of the card. The configuration works well since there are many tie strip connections for each pin and there is a break between the breadboard to add a resistor or other component to another tie strip. For instance, a resistor can be placed here and the LED placed here which is more visually coherent than placing the components in a zigzag on neighboring tie strips. We will delve into the reference manual for this microcontroller from time to time. The STM32F030 reference manual is complete with all the information you will need to access all of the features of the STM32F030 microcontroller. If you need technical or electrical specifications for this microcontroller, click on this link: STM32F030 Datasheet


01. Arduino for Production!! Introduction to ARM Microcontrollers
02. Arduino for Production!! How to Instal and Set up the Arduino IDE (Integrated Development Environment) for the ARM Microcontroller
03. Arduino for Production!! How to Connect the ST-Link v2 ARM Programmer to your Computer
04. Arduino for Production!! How to Use the CoIDE (Adruino IDE) for ARM Microcontroller Development
05. Arduino for Production!! How to Connect the ST-Link v2 to the ARM STM32 Microcontroller
06. Arduino for Production!! How to Output to a Pin to Blink an LED on the ARM Microcontroller Part 1
07. Arduino for Production!! How to Output to a Pin to Blink an LED on the ARM Microcontroller Part 2
08. Arduino for Production!! How to Output to a Pin to Blink an LED on an ARM Microcontroller Part 3
09. Arduino for Production!! Can Not Connect to Target! How to Establish a Connection Again.
10. Arduino for Production!! How to Receive Input from a Pin for Push Button Input (GPIO) on the ARM Microcontroller
11. Arduino for Production!! How to Receive Push Button Input on the ARM Microcontroller Part 2
12. Arduino for Production!! How to Receive Stable GPIO Push Button Input on the ARM Microcontroller - Software Debouncing Part 1
13. Arduino for Production!! How to Receive Stable GPIO PUSH Button Input onthe ARM Microcontroller - Software Debouncing Part 2
14. Arduino for Production - How to Establish Software Debouncing on the ARM Microcontroller Exclusive
15. Arduino for Production!! How to Interface an LCD on the ARM Microcontroller Part 1
16. Arduino for Production!! How to Interface an LCD on the ARM Microcontroller Part 2
17. Arduino for Production!! How to Interface an LCD to an ARM Microcontroller Part 3
18. Arduino for Production!! How to Interface an LCD to the ARM Microcontroller Part 4

STM32 PCB Breakout Diagram and Pinout

Use the scroll bars to pan the diagram to see the pins on the right and at the bottom.
Pin 1:VDD Digital Power Supply
Pin 2: PC13 - RTC_TAMP1, RTC_TS, RTC_OUT, WKUP2
Pin 3: PC14 - OSC32_IN
Pin 4: PC15 - OSC32_OUT
Pin 5: PF0 - OSC_IN
Pin 6: PF1 - OSC_OUT
Pin 7: NRST RESET INPUT OR INTERNAL RESET OUTPUT
Pin 8: PC0 - EVENTOUT - ACD_IN10
Pin 9: PC1 - EVENTOUT - ADC_IN11
Pin 10: PC2 - EVENTOUT - ADC_IN12
Pin 11: PC3 - EVENTOUT - ADC_IN13
Pin 12: VSSA ANALOG GROUND
Pin 13: VDDA ANALOG POWER SUPPLY
Pin 14: PA0 - USART2_CTS - ADC_IN0, RTC_TAMP2, WKUP1
Pin 15: PA1 - USART2_RTS, EVENTOUT - ADC_IN1
Pin 16: PA2 - USART2_TX, TIM15_CH1 - ADC_IN2
Pin 17: PA3 - USART2_RX, TIM15_CH2 - ADC_IN3
Pin 18: PF4 - EVENTOUT
Pin 19: PF5 - EVENTOUT
Pin 20: PA4 - SPI1_NSS, USART2_CK, TIM14_CH1 - ADC_IN4
Pin 21: PA5 - SPI1_SCK - ADC_IN5
Pin 22: PA6 - SPI1_MISO, TIM3_CH1, TIM1_BKIN, TIM16_CH1, EVENTOUT - ADC_IN6
Pin 23: PA7 - SPI1_MOSI, TIM3_CH2, TIM14_CH1, TIM1_CH1N, TIM17_CH1, EVENTOUT - ADC_IN7
Pin 24: PC4 - EVENTOUT - ADC_IN14
Pin 25: PC5 - ADC_IN15
Pin 26: PB0 - TIM3_CH3, TIM1_CH2N, EVENOUTOUT - ADC_IN8
Pin 27: PB1 - TIM3_CH4, TIM14_CH1, TIM1_CH3N - ADC_IN9
Pin 28: PB2
Pin 29: PB10 - SPI2_SCK, I2C1_SCL, I2C2_SCL
Pin 30: PB11 - I2C1_SDA, I2C2_SDA, EVENTOUT
Pin 31: VSS GROUND
Pin 32: VDD DIGITAL POWER SUPPLY
Pin 33: PB12 - SPI2_NSS, TIM1_BKIN, EVENTOUT
Pin 34: PB13 - SPI2_SCK, I2C2_SDA, TIM1_CH1N
Pin 35: PB14 - SPI2_MISO, TIM1_CH2N, TIM15_CH1
Pin 36: PB15 - SPI2_MOSI, TIM1_CH3N, TIM15_CH1N, TIM15_CH2
Pin 37: PC6 - TIM3_CH1
Pin 38: PC7 - TIM3_CH2
Pin 39: PC8 - TIM3_CH3
Pin 40: PC9 - TIM3_CH4
Pin 41: PA8 - USART1_CK, TIM1_CH1, EVENTOUT, MCO
Pin 42: PA9 - USART1_TX, TIM1_CH2, TIM15_BKIN
Pin 43: PA10 - USART1_RX, TIM1_CH3, TIM17_BKIN
Pin 44: PA11 - USART1_CTS, TIM1_CH4, EVENOUT
Pin 45: PA12 - USART1_RTS, TIM1_ETRM EVENTOUT
Pin 46: PA13 - IR_OUT, SWDIO
Pin 47: PF6 - I2C2_SCL
Pin 48: PF7 - I2C2_SDA
Pin 49: PA14 - USART2_TX, SWCLK
Pin 50: PA15 - SPI1_NSS, USART2_RX, EVENTOUT
Pin 51: PC10
Pin 52: PC11
Pin 53: PC12
Pin 54: PD2 - TIM3_ETR
Pin 55: PB3 - SPI1_SCK, EVENTOUT
Pin 56: PB4 - SPI1_MISO, TIM3_CH1, EVENTOUT
Pin 57: PB5 - SPI1_MOSI, I2C1_SMBA, TIM16_BKIN, TIM3_CH2
Pin 58: PB6 - I2C1_SCL, USART1_TX, TIM16_CH1N
Pin 59: PB7 - I2C1_SDA, USART1_RX, TIM17_CH1N
Pin 60: BOOT0 BOOT MEMORY SELECTION
Pin 61: PB8 - I2C1_SCL, TIM16_CH1
Pin 62: PB9 - I2C1_SDA, IR_OUT, TIM17_CH1, EVENTOUT
Pin 63: VSS GROUND
Pin 64: VDD DIGITAL POWER SUPPLY