SlideShare a Scribd company logo
1 of 64
Download to read offline
Learn How to Develop
embedded system for ARM
GPIO of STM32F4-Discovery for example
StarNight @ 2014.12.22 JuluOSDev
Who am I?
潘建宏 / Jian-Hong Pan (StarNight)
About Me : http://about.me/StarNight
出沒在~
GitHub : starnight
PTT : zack2004
plurk : StarNight
Facebook : Jian-Hong Pan
目前繼續在種花店當個打雜園丁 ~
Outline
1. History
2. Before we start ...
3. Reference previous code
4. Makefile
5. Start tracing
6. Header files
7. Source file
8. GPIO of STM32F4
9. Do the porting with original STM32F4 library
History
1. I am a newer who want to program and flash
ARM chip.
2. I have attended some groups that share
ARM embedded system related. However,
ones should have some basic knowledge or
technique (including APIs) to follow
speakers.
3. For advanced usage, I spent time to enrich
related basic knowledge.
4. To reduce the gap, I want to share the
processes / courses that I have taken.
Before we start ...
1. The toolchain: GNU Tools for ARM
Embedded Processors
2. STLink: https://github.com/texane/stlink
You may use the pre-compiled packages mentioned
above for your OS.
3. A development board, STM32F4-Discovery
for example.
Reference:
F9 Microkernel code reading - part 1 P.23 ~
STM32F4+F9 新手無痛開發入門指南
Reference previous code
Hellow world of embeded system:
Blinking LED
https://github.
com/Malkavian/tuts/tree/master/stm/blinky
Libraries
1. STM32F4-Discovery Library:
a. http://www.st.
com/web/catalog/tools/FM116/SC959/SS1532/
PF252419
2. STM32F4 DSP and standard peripherals
library:
a. http://www.st.
com/web/catalog/tools/FM147/CL1794/SC961/
SS1743/PF257901
Readme file of blinky
https://github.com/Malkavian/tuts/tree/
master/stm/blinky
1. Files:
a. https://github.com/Malkavian/tuts/tree/master/
stm/blinky#files
2. Missing files
a. https://github.com/Malkavian/tuts/tree/master/
stm/blinky#missing-files
What does blinky do?
Start
Setup LEDs
Turn LEDs
on/off in order
Flash all LEDs
Initial the GPIO of the
output pins connected
to LEDs.
main
function
Make LEDs on
STM32F4-Discovery
blink and flash.
Makefile of blinky
1. PROJ_NAME:
a. This project's name which will be the binary file's
name.
2. STM_DIR:
a. The STM firmware library package directoy in this
computer.
3. STM_SRC:
a. The STM firmware library package sources directoy
in this computer.
Makefile of blinky (Cont.)
4. vpath:
a. The virtual path of other source files, except the
current directory.
5. SRCS:
a. The source files in current directory, the source files
in vpath and the source files with user defined path.
Also, they are the files going to be compiled.
6. INC_DIRS:
a. The located pathes of STM header files.
7. TOOLS_DIR:
a. The path of GNU ARM toolchain.
Questions:
Where is the definition of GPIO API?
Does the main function is the start
point of the MCU after be powered
on?
Where is the definition of
GPIO API?
Referenced from: STM32F405xx/STM32F407xx Datasheet,
Figure 5. STM32F40x block diagram, P.18
GPIO of STM32F40x block diagram
Included header in main.c
/* stm32f4_discovery.h is located in
* Utilities/STM32F4-Discovery
* and defines the GPIO Pins where the leds are
connected.
* Including this header also includes stm32f4xx.h and
* stm32f4xx_conf.h, which includes stm32f4xx_gpio.h
*/
#include "stm32f4_discovery.h"
…
int main(void) {
...
stm32f4_discovery.h
1. Included in main.c
2. Located at $(STM_DIR)/Utilities/STM32F4-
Discovery/stm32f4_discovery.h
3. Includes stm32f4xx.h
4. Defines the devices, terminals and actions
belong to STM32F4-Discovery board.
stm32f4xx.h
1. Included in ./stm32f4_discovery.h
2. Located at $(STM_DIR)
/Libraries/CMSIS/ST/STM32F4xx/Include/stm32f4xx.h
3. Also located at STM32F4xx_DSP_StdPeriph_Lib_V1.
3.0
/Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f
4xx.h
4. Includes stm32f4xx_conf.h if defined
USE_STDPERIPH_DRIVER, core_cm4.h and
system_stm32f4xx.h
5. Defines the STM32F4xx general APIs
CMSIS
The ARM® Cortex® Microcontroller Software Interface
Standard (CMSIS) is a vendor-independent hardware
abstraction layer for the Cortex-M processor series and
specifies debugger interfaces.
Creation of software is a major cost factor in the embedded
industry. By standardizing the software interfaces across all
Cortex-M silicon vendor products, especially when creating
new projects or migrating existing software to a new device,
means significant cost reductions.
Reference: http://www.arm.
com/products/processors/cortex-m/cortex-microcontroller-
software-interface-standard.php
CMSIS consists
1. CMSIS-CORE
2. CMSIS-Driver
3. CMSIS-DSP
4. CMSIS-RTOS API
5. CMSIS-Pack
6. CMSIS-SVD
7. CMSIS-DAP
Reference: http://www.arm.
com/products/processors/cortex-m/cortex-microcontroller-
software-interface-standard.php
stm32f4xx_conf.h
1. Included in stm32f4xx.h
2. Located at ./stm32f4xx_conf.h
3. Includes the stm32f4xx related peripheral
headers
4. Enable and choose the peripheral headers
which going to be used
core_cm4.h
1. Included in stm32f4xx.h
2. Located at $(STM_DIR)
/Libraries/CMSIS/Include/core_cm4.h
3. Defines the CMSIS Cortex-M4 Core
Peripheral Access Layer
system_stm32fxx.h
1. Included in stm32f4xx.h
2. Located at $(STM_DIR)
/Libraries/CMSIS/ST/STM32F4xx/Include/sy
stem_stm32f4xx.h
3. Also located at
STM32F4xx_DSP_StdPeriph_Lib_V1.3.0
/Libraries/CMSIS/Device/ST/STM32F4xx/Incl
ude/system_stm32f4xx.h
4. Defines the CMSIS Cortex-M4 Device
System APIs
stm32f4xx_gpio.h
1. Include in stm32f4xx_conf.h
2. Located at $(STM_DIR)
/Libraries/STM32F4xx_StdPeriph_Driver/inc/
stm32f4xx_gpio.h
3. Includes stm32f4xx.h
4. Defines the STM32F4xx APIs of gerneral
purpose input/output peripheral
stm32f4xx_rcc.h
1. Include in stm32f4xx_conf.h
2. Located at $(STM_DIR)
/Libraries/CMSIS/ST/STM32F4xx/Include/st
m32f4xx_rcc.h
3. Includes stm32f4xx.h
4. Defines the STM32F4xx APIs of reset and
clock control peripheral
main.c
1. Located at ./main.c
2. The main source file of the project.
system_stm32f4xx.c
1. Located at ./system_stm32f4xx.c
2. Also located at $(STM_DIR)
/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/sy
stem_stm32f4xx.c
3. Also located at STM32F4xx_DSP_StdPeriph_Lib_V1.
3.0
/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templ
ates/system_stm32f4xx.c
4. Initialization code writen by ST which contains the
system clock configuration for STM32F4xx devices.
stm32f4xx_rcc.c, stm32f4xx_gpio.c
1. Located at $(STM_DIR)
/Libraries/STM32F4xx_StdPeriph_Driver/src/
…
2. Implement the peripheral functions
Is the main function the
start point of the MCU
after it is powered on?
Linker file: stm32_flash.ld
1. ENTRY(Reset_Handler)
2. Reset_Handler is defined in
startup_stm32f4xx.s
3. Branch to the main function when call the
application's entry point.
/* Call the application's entry point.*/
bl main
startup_stm32f4xx.s
1. Located at $(STM_DIR)
/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/Tr
ueSTUDIO/startup_stm32f4xx.s
2. Also loacted a STM32F4xx_DSP_StdPeriph_Lib_V1.3.0
/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templ
ates/TrueSTUDIO/startup_stm32f40_41xxx.s
3. The assembly code in this file is the first one to be
executed
After Reset, the MCU does
1. Copy the data segment
initializers from flash to
SRAM
2. Zero fill the bss segment
3. Call the clock system
intitialization function
4. Call static constructors
5. Call the application's
entry point (main
function)
Reset
Flash to SRAM
Zero bss segment
Initial clock system
Static constructor
Application’s entry point
Example of GPIO in main.c
1. int main(void) (The application's entry point.)
1. Call setup_leds function to intial GPIO
pins.
2. A forever while loop to have fancy lighting.
a. Call led_round function.
b. Call flash_all_leds function.
Example of GPIO in main.c (Cont.)
1. static void setup_leds(void)
a. Initial the GPIO of output pins for controlling the
LEDs.
2. static void led_round(void)
a. On-Off the output pins to make the LEDs be turned
on and off in order.
3. static void flash_all_leds(void)
a. On-Off the output pins to make all LEDs flashing.
4. static void delay(__IO unit32_t nCount)
a. hard code delay
b. __IO defined in $(STM_DIR)
/Libraries/CMSIS/Include/core_cm4.h
GPIO of STM32F4
1. GPIO function diagram
2. Input configuration
3. Output configuration
Referenced from:
RM0090 Reference manual STM32F405xx/07xx,
STM32F415xx/17xx, STM32F42xxx and STM32F43xxx
advanced ARM ® -based 32-bit MCUs, P. 266, 273 ~ 275
1
2 3
4
5 AHB1 clock
GPIO Input configuration
1. The output buffer is disabled.
2. The Schmitt trigger input is activated.
3. The pull-up and pull-down resistors are
activated depending on the value in the
GPIOx_PUPDR register.
4. The data present on the I/O pin are sampled
into the input data register every AHB1 clock
cycle.
5. A read access to the input data register
provides the I/O State.
1
2
3
4
AHB1 clock5
6
1.a/b
GPIO Output configuration
1. The output buffer is enabled:
a. Open drain mode: A “0” in the Output register
activates the N-MOS whereas a “1” in the Output
register leaves the port in Hi-Z (the P-MOS is never
activated)
b. Push-pull mode: A “0” in the Output register
activates the N-MOS whereas a “1” in the Output
register activates the P-MOS
2. The Schmitt trigger input is activated.
GPIO Output configuration (Cont.)
3. The weak pull-up and pull-down resistors are
activated or not depending on the value in
the GPIOx_PUPDR register.
4. The data present on the I/O pin are sampled
into the input data register every AHB1 clock
cycle.
5. A read access to the input data register gets
the I/O state.
6. A read access to the output data register
gets the last written value.
Data registers
● GPIOx_IDR
● GPIOx_ODR
● GPIOx_BSRR
(x = A..I/J/K)
GPIO registers
Configuration registers
● GPIOx_MODER
● GPIOx_OTYPER
● GPIOx_OSPEEDR
● GPIOx_PUPDR
● GPIOx_LCKR
● GPIOx_AFRL/AFRH
Referenced from:
RM0090 Reference manual STM32F405xx/07xx,
STM32F415xx/17xx, STM32F42xxx and STM32F43xxx
advanced ARM ® -based 32-bit MCUs, P. 278 ~ 283
成大資工Wiki GPIO 暫存器 Overview
GPIO port mode register
(GPIOx_MODER) (x = A..I/J/K)
Bits 2y:2y+1 MODERy[1:0]:
Port x configuration bits (y = 0..15)
These bits are written by software to configure the I/O
direction mode.
00: Input (reset state)
01: General purpose output mode
10: Alternate function mode
11: Analog mode
GPIO port output type register
(GPIOx_OTYPER) (x = A..I/J/K)
Bits 31:16 Reserved, must be kept at reset value.
Bits 15:0 OTy:
Port x configuration bits (y = 0..15)
These bits are written by software to configure the
output type of the I/O port.
0: Output push-pull (reset state)
1: Output open-drain
GPIO port output speed register
(GPIOx_OSPEEDR) (x = A..I/J/K)
Bits 2y:2y+1 OSPEEDRy[1:0]:
Port x configuration bits (y = 0..15)
These bits are written by software to configure the I/O
output speed.
00: Low speed
01: Medium speed
10: Fast speed
11: High speed
GPIO port pull-up/pull-down register
(GPIOx_PUPDR) (x = A..I/J/K)
Bits 2y:2y+1 PUPDRy[1:0]:
Port x configuration bits (y = 0..15)
These bits are written by software to configure the I/O
pull-up or pull-down
00: No pull-up, pull-down
01: Pull-up
10: Pull-down
11: Reserved
GPIO port input data register
(GPIOx_IDR) (x = A..I/J/K)
Bits 31:16 Reserved, must be kept at reset value.
Bits 15:0 IDRy:
Port input data (y = 0..15)
These bits are read-only and can be accessed in word
mode only. They contain the input value of the
corresponding I/O port.
GPIO port output data register
(GPIOx_ODR) (x = A..I/J/K)
Bits 31:16 Reserved, must be kept at reset value.
Bits 15:0 ODRy:
Port output data (y = 0..15)
These bits can be read and written by software.
Note: For atomic bit set/reset, the ODR bits can be
individually set and reset by writing to the GPIOx_BSRR
register (x = A..I/J/K).
GPIO port bit set/reset register
(GPIOx_BSRR) (x = A..I/J/K)
Bits 31:16 BRy: Port x reset bit y (y = 0..15)
These bits are write-only and can be accessed in word, half-word or byte
mode. A read to these bits returns the value 0x0000.
0: No action on the corresponding ODRx bit
1: Resets the corresponding ODRx bit
Note: If both BSx and BRx are set, BSx has priority.
Bits 15:0 BSy: Port x set bit y (y= 0..15)
These bits are write-only and can be accessed in word, half-word or byte
mode. A read to these bits returns the value 0x0000.
0: No action on the corresponding ODRx bit
1: Sets the corresponding ODRx bit
GPIO port configuration lock register
(GPIOx_LCKR) (x = A..I/J/K)
Bits 31:17 Reserved, must be kept at reset value.
Bit 16 LCKK[16]: Lock key
This bit can be read any time. It can only be modified using the lock key
write sequence.
0: Port configuration lock key not active
1: Port configuration lock key active. The GPIOx_LCKR register is locked
until an MCU reset occurs.
Bits 15:0 LCKy: Port x lock bit y (y= 0..15)
These bits are read/write but can only be written when the LCKK bit is 0.
0: Port configuration not locked
1: Port configuration locked
GPIO alternate function low register
(GPIOx_AFRL) (x = A..I/J/K)
Bits 31:0 AFRLy:
Alternate function selection for port x bit y (y = 0..7) →
for low 8 pins of the port.
These bits are written by software to configure alternate
function I/Os
AFRLy selection: 0000 ~ 1111 → AF0 ~ AF15
GPIO alternate function high register
(GPIOx_AFRH) (x = A..I/J/K)
Bits 31:0 AFRHy:
Alternate function selection for port x bit y (y = 8..15) →
for high 8 pins of the port.
These bits are written by software to configure alternate
function I/Os
AFRHy selection: 0000 ~ 1111 → AF0 ~ AF15
For pins 8 to 15, the GPIOx_AFRH
[31:0] register selects the dedicated
alternate function
Alternate function on STM32F407xx
For pins 0 to 7, the GPIOx_AFRL
[31:0] register selects the dedicated
alternate function
Referenced from: RM0090 Reference manual STM32F405xx/07xx,
STM32F415xx/17xx, STM32F42xxx and STM32F43xxx advanced ARM ® -
based 32-bit MCUs, Figure 26. Selecting an alternate function on
STM32F405xx/07xx and STM32F415xx/17xx, P. 270
Let’s Trace main.c Deeply
Defined macroes
Initial GPIO as Output
Set / Reset Output
https://github.
com/Malkavian/tuts/blob/master/stm/blinky/main.c
Practice:
Do the porting with
original STM32F4 library
I want to practice.
The library is for STM32F4-Dicovery
board only. However, there will be a
lot of differece between STM32F4-
Discovery and the board designed by
oneself.
Why do port with original
standard STM43F4 library
Referenced from: STM32F4DISCOVERY Peripherals, Rev: B.2(PCB.SCH),
1/9/2012, Sheet 6 of 6
Output LEDs on Schematic of STM32F4-Discovery
Referenced from: STM32F4DISCOVERY Peripherals, Rev: B.2(PCB.SCH),
1/9/2012, Sheet 6 of 6
User Button on Schematic of STM32F4-Discovery
Clicked
What does practice do?
Start
Setup LEDs &
User Button
Flash all LEDs
Turn on/off
LEDs in order
Check
User
Button
Not
Clicked
1. Codes:
a. https://github.
com/starnight/STM32F4/tree/master/GPIO
2. Reference:
a. STM32F4-Discovery schematics:
http://www.st.
com/web/catalog/tools/FM116/SC959/SS1532/PF25
2419
b. devthrash/STM32F4-examples:
https://github.com/devthrash/STM32F4-
examples/blob/master/GPIO/main.c
Programming and Using STD Library
Reference
1. Blink for stm32f4-discovery board on Linux with Makefile
http://liviube.wordpress.com/2013/04/22/blink-for-stm32f4-discovery-board-
on-linux-with-makefile/
2. STM32F4 GPIO tutorial
http://eliaselectronics.com/stm32f4-tutorials/stm32f4-gpio-tutorial/
3. blinky
https://github.com/Malkavian/tuts/blob/master/stm/blinky
4. Setting up the ARM toolchain
http://eliaselectronics.com/stm32f4-tutorials/setting-up-the-stm32f4-arm-
development-toolchain/
Reference (Cont.)
5. STM32F4 Library
http://www.emcu.it/STM32F4xx/STM32F4-Library/STM32F4-Library.html
6. STM32F4-Discovery Library
http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419
7. STM32F4 GPIO Configuration
http://patrickleyman.be/blog/stm32f4-gpio-
configuration/devthrash/STM32F4-examples
https://github.com/devthrash/STM32F4-examples
8. Using I/O ports on the STM32 F4 Discovery
http://www.rapitasystems.com/blog/using-io-ports-on-the-stm32-f4-
discovery
Refernce (Cont.)
9. STM32开发板例程讲解之二:GPIO的描述和配置,GPIO_IOTG例程精讲
_ch…
http://www.360doc.com/content/11/0314/14/5963783_101015283.shtml
10. Week #7 (Oct 30) :: Peripherals and hardware interface
http://wiki.csie.ncku.edu.tw/embedded/2012w7
11. General-purpose Input/Output (GPIO)
http://wiki.csie.ncku.edu.tw/embedded/GPIO
12. STM32之GPIO输入输出
http://blog.csdn.net/wjjontheway/article/details/9302189
13. STM32F4 DSP and standard peripherals library
http://www.st.
com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257901
Refernce (Cont.)
14. CMSIS - Cortex Microcontroller Software Interface Standard
http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-
software-interface-standard.php
15. STM32 Programming (中文)
http://wiki.csie.ncku.edu.tw/embedded/Lab19/stm32-prog.pdf
16. STM32F407 硬體週邊介紹
http://www.slideshare.net/ssusereb6ca4/stm32f4
17. Let's Play STM32
http://www.slideshare.net/jaychen94009/arm-cortex-m4
18. Tutorial: STM32 - Integrated Debugging in Eclipse using GNU toolchain
http://erika.tuxfamily.org/wiki/index.php?title=Tutorial:_STM32_-
_Integrated_Debugging_in_Eclipse_using_GNU_toolchain&oldid=5474
Thank you
&
Let’s practice ~

More Related Content

What's hot

2 introduction to arm architecture
2 introduction to arm architecture2 introduction to arm architecture
2 introduction to arm architecturesatish1jisatishji
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linuxNeil Armstrong
 
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...Victor Asanza
 
SoM with Zynq UltraScale device
SoM with Zynq UltraScale deviceSoM with Zynq UltraScale device
SoM with Zynq UltraScale devicenie, jack
 
BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE Linaro
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
8-Bit CMOS Microcontrollers with nanoWatt Technology
8-Bit CMOS Microcontrollers with nanoWatt Technology8-Bit CMOS Microcontrollers with nanoWatt Technology
8-Bit CMOS Microcontrollers with nanoWatt TechnologyPremier Farnell
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureNeil Armstrong
 
Rdl esp32 development board trainer kit
Rdl esp32 development board trainer kitRdl esp32 development board trainer kit
Rdl esp32 development board trainer kitResearch Design Lab
 
Esp8266 - Intro for dummies
Esp8266 - Intro for dummiesEsp8266 - Intro for dummies
Esp8266 - Intro for dummiesPavlos Isaris
 
SBC6020 SAM9G20 based Single Board Computer
SBC6020 SAM9G20 based Single Board ComputerSBC6020 SAM9G20 based Single Board Computer
SBC6020 SAM9G20 based Single Board Computeryclinda666
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)RuggedBoardGroup
 
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLinaro
 
Linux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureLinux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureRyo Jin
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...codebits
 
lesson2 - Nodemcu course - NodeMCU dev Board
 lesson2 - Nodemcu course - NodeMCU dev Board lesson2 - Nodemcu course - NodeMCU dev Board
lesson2 - Nodemcu course - NodeMCU dev BoardElaf A.Saeed
 
HKG18-110 - net_mdev: Fast path user space I/O
HKG18-110 - net_mdev: Fast path user space I/OHKG18-110 - net_mdev: Fast path user space I/O
HKG18-110 - net_mdev: Fast path user space I/OLinaro
 
Arduino Meetup with Sonar and 433Mhz Radios
Arduino Meetup with Sonar and 433Mhz RadiosArduino Meetup with Sonar and 433Mhz Radios
Arduino Meetup with Sonar and 433Mhz Radiosroadster43
 

What's hot (20)

2 introduction to arm architecture
2 introduction to arm architecture2 introduction to arm architecture
2 introduction to arm architecture
 
ELC North America 2021 Introduction to pin muxing and gpio control under linux
ELC  North America 2021 Introduction to pin muxing and gpio control under linuxELC  North America 2021 Introduction to pin muxing and gpio control under linux
ELC North America 2021 Introduction to pin muxing and gpio control under linux
 
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...
⭐⭐⭐⭐⭐ CHARLA MACI: Prototipado de Aplicaciones Industriales Basado en Hardwar...
 
SoM with Zynq UltraScale device
SoM with Zynq UltraScale deviceSoM with Zynq UltraScale device
SoM with Zynq UltraScale device
 
BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE BUD17-416: Benchmark and profiling in OP-TEE
BUD17-416: Benchmark and profiling in OP-TEE
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
8-Bit CMOS Microcontrollers with nanoWatt Technology
8-Bit CMOS Microcontrollers with nanoWatt Technology8-Bit CMOS Microcontrollers with nanoWatt Technology
8-Bit CMOS Microcontrollers with nanoWatt Technology
 
Linux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, futureLinux Conference Australia 2018 : Device Tree, past, present, future
Linux Conference Australia 2018 : Device Tree, past, present, future
 
Rdl esp32 development board trainer kit
Rdl esp32 development board trainer kitRdl esp32 development board trainer kit
Rdl esp32 development board trainer kit
 
Esp8266 - Intro for dummies
Esp8266 - Intro for dummiesEsp8266 - Intro for dummies
Esp8266 - Intro for dummies
 
SBC6020 SAM9G20 based Single Board Computer
SBC6020 SAM9G20 based Single Board ComputerSBC6020 SAM9G20 based Single Board Computer
SBC6020 SAM9G20 based Single Board Computer
 
Serial Drivers
Serial DriversSerial Drivers
Serial Drivers
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
 
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device ConfigurationLAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
LAS16-300: Mini Conference 2 Cortex-M Software - Device Configuration
 
Linux on ARM 64-bit Architecture
Linux on ARM 64-bit ArchitectureLinux on ARM 64-bit Architecture
Linux on ARM 64-bit Architecture
 
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
Hardware Hacking area: Make Cool Things with Microcontrollers (and learn to s...
 
lesson2 - Nodemcu course - NodeMCU dev Board
 lesson2 - Nodemcu course - NodeMCU dev Board lesson2 - Nodemcu course - NodeMCU dev Board
lesson2 - Nodemcu course - NodeMCU dev Board
 
HKG18-110 - net_mdev: Fast path user space I/O
HKG18-110 - net_mdev: Fast path user space I/OHKG18-110 - net_mdev: Fast path user space I/O
HKG18-110 - net_mdev: Fast path user space I/O
 
Emx Dev Boards - EmxARM9A03 - Overview
Emx Dev Boards - EmxARM9A03 - OverviewEmx Dev Boards - EmxARM9A03 - Overview
Emx Dev Boards - EmxARM9A03 - Overview
 
Arduino Meetup with Sonar and 433Mhz Radios
Arduino Meetup with Sonar and 433Mhz RadiosArduino Meetup with Sonar and 433Mhz Radios
Arduino Meetup with Sonar and 433Mhz Radios
 

Viewers also liked

Bind Python and C @ COSCUP 2015
Bind Python and C @ COSCUP 2015Bind Python and C @ COSCUP 2015
Bind Python and C @ COSCUP 2015Jian-Hong Pan
 
Build a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded SystemBuild a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded SystemJian-Hong Pan
 
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupDebug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupJian-Hong Pan
 
Micro HTTP Server Implemented in C @ COSCUP 2016
Micro HTTP Server Implemented in C @ COSCUP 2016Micro HTTP Server Implemented in C @ COSCUP 2016
Micro HTTP Server Implemented in C @ COSCUP 2016Jian-Hong Pan
 
Find the bottleneck of your system
Find the bottleneck of your systemFind the bottleneck of your system
Find the bottleneck of your systemJian-Hong Pan
 
The Simple Scheduler in Embedded System @ OSDC.TW 2014
The Simple Scheduler in Embedded System @ OSDC.TW 2014The Simple Scheduler in Embedded System @ OSDC.TW 2014
The Simple Scheduler in Embedded System @ OSDC.TW 2014Jian-Hong Pan
 
Make Your Own Developement Board @ 2014.4.21 JuluOSDev
Make Your Own Developement Board @ 2014.4.21 JuluOSDevMake Your Own Developement Board @ 2014.4.21 JuluOSDev
Make Your Own Developement Board @ 2014.4.21 JuluOSDevJian-Hong Pan
 
Trace kernel code tips
Trace kernel code tipsTrace kernel code tips
Trace kernel code tipsViller Hsiao
 
The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017Jian-Hong Pan
 
Introduction to Embedded Systems and its Applications
Introduction to Embedded Systems and its ApplicationsIntroduction to Embedded Systems and its Applications
Introduction to Embedded Systems and its ApplicationsGaurav Verma
 
Functional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioFunctional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioLuis Atencio
 
Embedded System in Automobiles
Embedded System in Automobiles Embedded System in Automobiles
Embedded System in Automobiles Seminar Links
 
Unit 1 embedded systems and applications
Unit 1 embedded systems and applicationsUnit 1 embedded systems and applications
Unit 1 embedded systems and applicationsDr.YNM
 
Arm7 Interfacing examples
Arm7   Interfacing examples Arm7   Interfacing examples
Arm7 Interfacing examples Dr.YNM
 

Viewers also liked (14)

Bind Python and C @ COSCUP 2015
Bind Python and C @ COSCUP 2015Bind Python and C @ COSCUP 2015
Bind Python and C @ COSCUP 2015
 
Build a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded SystemBuild a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded System
 
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code MeetupDebug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
Debug C/C++ Programs More Comfortably @ 2014.12.14 Trace Code Meetup
 
Micro HTTP Server Implemented in C @ COSCUP 2016
Micro HTTP Server Implemented in C @ COSCUP 2016Micro HTTP Server Implemented in C @ COSCUP 2016
Micro HTTP Server Implemented in C @ COSCUP 2016
 
Find the bottleneck of your system
Find the bottleneck of your systemFind the bottleneck of your system
Find the bottleneck of your system
 
The Simple Scheduler in Embedded System @ OSDC.TW 2014
The Simple Scheduler in Embedded System @ OSDC.TW 2014The Simple Scheduler in Embedded System @ OSDC.TW 2014
The Simple Scheduler in Embedded System @ OSDC.TW 2014
 
Make Your Own Developement Board @ 2014.4.21 JuluOSDev
Make Your Own Developement Board @ 2014.4.21 JuluOSDevMake Your Own Developement Board @ 2014.4.21 JuluOSDev
Make Your Own Developement Board @ 2014.4.21 JuluOSDev
 
Trace kernel code tips
Trace kernel code tipsTrace kernel code tips
Trace kernel code tips
 
The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017The Considerations for Internet of Things @ 2017
The Considerations for Internet of Things @ 2017
 
Introduction to Embedded Systems and its Applications
Introduction to Embedded Systems and its ApplicationsIntroduction to Embedded Systems and its Applications
Introduction to Embedded Systems and its Applications
 
Functional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis AtencioFunctional Programming in JavaScript by Luis Atencio
Functional Programming in JavaScript by Luis Atencio
 
Embedded System in Automobiles
Embedded System in Automobiles Embedded System in Automobiles
Embedded System in Automobiles
 
Unit 1 embedded systems and applications
Unit 1 embedded systems and applicationsUnit 1 embedded systems and applications
Unit 1 embedded systems and applications
 
Arm7 Interfacing examples
Arm7   Interfacing examples Arm7   Interfacing examples
Arm7 Interfacing examples
 

Similar to Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev

Brillo/Weave Part 2: Deep Dive
Brillo/Weave Part 2: Deep DiveBrillo/Weave Part 2: Deep Dive
Brillo/Weave Part 2: Deep DiveJalal Rohani
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Linaro
 
Freertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreFreertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreeSAT Journals
 
Real-time audio filter examples with the ezDSP c5505_v2
Real-time audio filter examples with the ezDSP c5505_v2Real-time audio filter examples with the ezDSP c5505_v2
Real-time audio filter examples with the ezDSP c5505_v2Tom Derks
 
Python by Martin Geisler
Python by Martin GeislerPython by Martin Geisler
Python by Martin GeislerAberla
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!Linaro
 
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3Raahul Raghavan
 
Autodock Made Easy with MGL Tools - Molecular Docking
Autodock Made Easy with MGL Tools - Molecular DockingAutodock Made Easy with MGL Tools - Molecular Docking
Autodock Made Easy with MGL Tools - Molecular DockingGirinath Pillai
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewLinaro
 
Programando o ESP8266 com Python
Programando o ESP8266 com PythonProgramando o ESP8266 com Python
Programando o ESP8266 com PythonRelsi Maron
 
Roll your own toy unix clone os
Roll your own toy unix clone osRoll your own toy unix clone os
Roll your own toy unix clone oseramax
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCKernel TLV
 
Cell processor lab
Cell processor labCell processor lab
Cell processor labcoolmirza143
 

Similar to Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev (20)

Atomic pi Mini PC
Atomic pi Mini PCAtomic pi Mini PC
Atomic pi Mini PC
 
Atomic PI apug
Atomic PI apugAtomic PI apug
Atomic PI apug
 
STM -32
STM -32STM -32
STM -32
 
learning STM -32
learning STM -32 learning STM -32
learning STM -32
 
Brillo/Weave Part 2: Deep Dive
Brillo/Weave Part 2: Deep DiveBrillo/Weave Part 2: Deep Dive
Brillo/Weave Part 2: Deep Dive
 
Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102Deploy STM32 family on Zephyr - SFO17-102
Deploy STM32 family on Zephyr - SFO17-102
 
Freertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f coreFreertos based environmental data acquisition using arm cortex m4 f core
Freertos based environmental data acquisition using arm cortex m4 f core
 
Microcontroller part 2
Microcontroller part 2Microcontroller part 2
Microcontroller part 2
 
Real-time audio filter examples with the ezDSP c5505_v2
Real-time audio filter examples with the ezDSP c5505_v2Real-time audio filter examples with the ezDSP c5505_v2
Real-time audio filter examples with the ezDSP c5505_v2
 
Python by Martin Geisler
Python by Martin GeislerPython by Martin Geisler
Python by Martin Geisler
 
netLec5.pdf
netLec5.pdfnetLec5.pdf
netLec5.pdf
 
BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!BKK16-103 OpenCSD - Open for Business!
BKK16-103 OpenCSD - Open for Business!
 
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3ARM® Cortex™ M Bootup_CMSIS_Part_2_3
ARM® Cortex™ M Bootup_CMSIS_Part_2_3
 
Autodock Made Easy with MGL Tools - Molecular Docking
Autodock Made Easy with MGL Tools - Molecular DockingAutodock Made Easy with MGL Tools - Molecular Docking
Autodock Made Easy with MGL Tools - Molecular Docking
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
 
Programando o ESP8266 com Python
Programando o ESP8266 com PythonProgramando o ESP8266 com Python
Programando o ESP8266 com Python
 
Roll your own toy unix clone os
Roll your own toy unix clone osRoll your own toy unix clone os
Roll your own toy unix clone os
 
Building Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
 
Lab Manual.pdf
Lab Manual.pdfLab Manual.pdf
Lab Manual.pdf
 
Cell processor lab
Cell processor labCell processor lab
Cell processor lab
 

More from Jian-Hong Pan

國稅局,我也好想用電腦報稅
國稅局,我也好想用電腦報稅國稅局,我也好想用電腦報稅
國稅局,我也好想用電腦報稅Jian-Hong Pan
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardJian-Hong Pan
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux SystemJian-Hong Pan
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Jian-Hong Pan
 
A Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiA Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiJian-Hong Pan
 
Have a Simple Modbus Server
Have a Simple Modbus ServerHave a Simple Modbus Server
Have a Simple Modbus ServerJian-Hong Pan
 
Software Packaging for Cross OS Distribution
Software Packaging for Cross OS DistributionSoftware Packaging for Cross OS Distribution
Software Packaging for Cross OS DistributionJian-Hong Pan
 
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!Jian-Hong Pan
 
LoRaWAN class module and subsystem
LoRaWAN class module and subsystemLoRaWAN class module and subsystem
LoRaWAN class module and subsystemJian-Hong Pan
 
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoT
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoTLet's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoT
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoTJian-Hong Pan
 

More from Jian-Hong Pan (12)

國稅局,我也好想用電腦報稅
國稅局,我也好想用電腦報稅國稅局,我也好想用電腦報稅
國稅局,我也好想用電腦報稅
 
Share the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development BoardShare the Experience of Using Embedded Development Board
Share the Experience of Using Embedded Development Board
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
 
Launch the First Process in Linux System
Launch the First Process in Linux SystemLaunch the First Process in Linux System
Launch the First Process in Linux System
 
Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021Let's trace Linux Lernel with KGDB @ COSCUP 2021
Let's trace Linux Lernel with KGDB @ COSCUP 2021
 
A Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry PiA Journey to Boot Linux on Raspberry Pi
A Journey to Boot Linux on Raspberry Pi
 
Have a Simple Modbus Server
Have a Simple Modbus ServerHave a Simple Modbus Server
Have a Simple Modbus Server
 
Software Packaging for Cross OS Distribution
Software Packaging for Cross OS DistributionSoftware Packaging for Cross OS Distribution
Software Packaging for Cross OS Distribution
 
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!
Nasa Hackthon 2018 Light Wonder - Go! Polar Bear!
 
LoRaWAN class module and subsystem
LoRaWAN class module and subsystemLoRaWAN class module and subsystem
LoRaWAN class module and subsystem
 
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoT
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoTLet's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoT
Let's Have an IEEE 802.15.4 over LoRa Linux Device Driver for IoT
 
Node.js 1, 2, 3
Node.js 1, 2, 3Node.js 1, 2, 3
Node.js 1, 2, 3
 

Recently uploaded

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Recently uploaded (20)

Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

Learn How to Develop Embedded System for ARM @ 2014.12.22 JuluOSDev

  • 1. Learn How to Develop embedded system for ARM GPIO of STM32F4-Discovery for example StarNight @ 2014.12.22 JuluOSDev
  • 2. Who am I? 潘建宏 / Jian-Hong Pan (StarNight) About Me : http://about.me/StarNight 出沒在~ GitHub : starnight PTT : zack2004 plurk : StarNight Facebook : Jian-Hong Pan 目前繼續在種花店當個打雜園丁 ~
  • 3. Outline 1. History 2. Before we start ... 3. Reference previous code 4. Makefile 5. Start tracing 6. Header files 7. Source file 8. GPIO of STM32F4 9. Do the porting with original STM32F4 library
  • 4. History 1. I am a newer who want to program and flash ARM chip. 2. I have attended some groups that share ARM embedded system related. However, ones should have some basic knowledge or technique (including APIs) to follow speakers. 3. For advanced usage, I spent time to enrich related basic knowledge. 4. To reduce the gap, I want to share the processes / courses that I have taken.
  • 5. Before we start ... 1. The toolchain: GNU Tools for ARM Embedded Processors 2. STLink: https://github.com/texane/stlink You may use the pre-compiled packages mentioned above for your OS. 3. A development board, STM32F4-Discovery for example. Reference: F9 Microkernel code reading - part 1 P.23 ~ STM32F4+F9 新手無痛開發入門指南
  • 6. Reference previous code Hellow world of embeded system: Blinking LED https://github. com/Malkavian/tuts/tree/master/stm/blinky
  • 7. Libraries 1. STM32F4-Discovery Library: a. http://www.st. com/web/catalog/tools/FM116/SC959/SS1532/ PF252419 2. STM32F4 DSP and standard peripherals library: a. http://www.st. com/web/catalog/tools/FM147/CL1794/SC961/ SS1743/PF257901
  • 8. Readme file of blinky https://github.com/Malkavian/tuts/tree/ master/stm/blinky 1. Files: a. https://github.com/Malkavian/tuts/tree/master/ stm/blinky#files 2. Missing files a. https://github.com/Malkavian/tuts/tree/master/ stm/blinky#missing-files
  • 9. What does blinky do? Start Setup LEDs Turn LEDs on/off in order Flash all LEDs Initial the GPIO of the output pins connected to LEDs. main function Make LEDs on STM32F4-Discovery blink and flash.
  • 10. Makefile of blinky 1. PROJ_NAME: a. This project's name which will be the binary file's name. 2. STM_DIR: a. The STM firmware library package directoy in this computer. 3. STM_SRC: a. The STM firmware library package sources directoy in this computer.
  • 11. Makefile of blinky (Cont.) 4. vpath: a. The virtual path of other source files, except the current directory. 5. SRCS: a. The source files in current directory, the source files in vpath and the source files with user defined path. Also, they are the files going to be compiled. 6. INC_DIRS: a. The located pathes of STM header files. 7. TOOLS_DIR: a. The path of GNU ARM toolchain.
  • 12. Questions: Where is the definition of GPIO API? Does the main function is the start point of the MCU after be powered on?
  • 13. Where is the definition of GPIO API?
  • 14. Referenced from: STM32F405xx/STM32F407xx Datasheet, Figure 5. STM32F40x block diagram, P.18 GPIO of STM32F40x block diagram
  • 15. Included header in main.c /* stm32f4_discovery.h is located in * Utilities/STM32F4-Discovery * and defines the GPIO Pins where the leds are connected. * Including this header also includes stm32f4xx.h and * stm32f4xx_conf.h, which includes stm32f4xx_gpio.h */ #include "stm32f4_discovery.h" … int main(void) { ...
  • 16. stm32f4_discovery.h 1. Included in main.c 2. Located at $(STM_DIR)/Utilities/STM32F4- Discovery/stm32f4_discovery.h 3. Includes stm32f4xx.h 4. Defines the devices, terminals and actions belong to STM32F4-Discovery board.
  • 17. stm32f4xx.h 1. Included in ./stm32f4_discovery.h 2. Located at $(STM_DIR) /Libraries/CMSIS/ST/STM32F4xx/Include/stm32f4xx.h 3. Also located at STM32F4xx_DSP_StdPeriph_Lib_V1. 3.0 /Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f 4xx.h 4. Includes stm32f4xx_conf.h if defined USE_STDPERIPH_DRIVER, core_cm4.h and system_stm32f4xx.h 5. Defines the STM32F4xx general APIs
  • 18. CMSIS The ARM® Cortex® Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer for the Cortex-M processor series and specifies debugger interfaces. Creation of software is a major cost factor in the embedded industry. By standardizing the software interfaces across all Cortex-M silicon vendor products, especially when creating new projects or migrating existing software to a new device, means significant cost reductions. Reference: http://www.arm. com/products/processors/cortex-m/cortex-microcontroller- software-interface-standard.php
  • 19. CMSIS consists 1. CMSIS-CORE 2. CMSIS-Driver 3. CMSIS-DSP 4. CMSIS-RTOS API 5. CMSIS-Pack 6. CMSIS-SVD 7. CMSIS-DAP Reference: http://www.arm. com/products/processors/cortex-m/cortex-microcontroller- software-interface-standard.php
  • 20. stm32f4xx_conf.h 1. Included in stm32f4xx.h 2. Located at ./stm32f4xx_conf.h 3. Includes the stm32f4xx related peripheral headers 4. Enable and choose the peripheral headers which going to be used
  • 21. core_cm4.h 1. Included in stm32f4xx.h 2. Located at $(STM_DIR) /Libraries/CMSIS/Include/core_cm4.h 3. Defines the CMSIS Cortex-M4 Core Peripheral Access Layer
  • 22. system_stm32fxx.h 1. Included in stm32f4xx.h 2. Located at $(STM_DIR) /Libraries/CMSIS/ST/STM32F4xx/Include/sy stem_stm32f4xx.h 3. Also located at STM32F4xx_DSP_StdPeriph_Lib_V1.3.0 /Libraries/CMSIS/Device/ST/STM32F4xx/Incl ude/system_stm32f4xx.h 4. Defines the CMSIS Cortex-M4 Device System APIs
  • 23. stm32f4xx_gpio.h 1. Include in stm32f4xx_conf.h 2. Located at $(STM_DIR) /Libraries/STM32F4xx_StdPeriph_Driver/inc/ stm32f4xx_gpio.h 3. Includes stm32f4xx.h 4. Defines the STM32F4xx APIs of gerneral purpose input/output peripheral
  • 24. stm32f4xx_rcc.h 1. Include in stm32f4xx_conf.h 2. Located at $(STM_DIR) /Libraries/CMSIS/ST/STM32F4xx/Include/st m32f4xx_rcc.h 3. Includes stm32f4xx.h 4. Defines the STM32F4xx APIs of reset and clock control peripheral
  • 25. main.c 1. Located at ./main.c 2. The main source file of the project.
  • 26. system_stm32f4xx.c 1. Located at ./system_stm32f4xx.c 2. Also located at $(STM_DIR) /Libraries/CMSIS/ST/STM32F4xx/Source/Templates/sy stem_stm32f4xx.c 3. Also located at STM32F4xx_DSP_StdPeriph_Lib_V1. 3.0 /Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templ ates/system_stm32f4xx.c 4. Initialization code writen by ST which contains the system clock configuration for STM32F4xx devices.
  • 27. stm32f4xx_rcc.c, stm32f4xx_gpio.c 1. Located at $(STM_DIR) /Libraries/STM32F4xx_StdPeriph_Driver/src/ … 2. Implement the peripheral functions
  • 28. Is the main function the start point of the MCU after it is powered on?
  • 29. Linker file: stm32_flash.ld 1. ENTRY(Reset_Handler) 2. Reset_Handler is defined in startup_stm32f4xx.s 3. Branch to the main function when call the application's entry point. /* Call the application's entry point.*/ bl main
  • 30. startup_stm32f4xx.s 1. Located at $(STM_DIR) /Libraries/CMSIS/ST/STM32F4xx/Source/Templates/Tr ueSTUDIO/startup_stm32f4xx.s 2. Also loacted a STM32F4xx_DSP_StdPeriph_Lib_V1.3.0 /Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templ ates/TrueSTUDIO/startup_stm32f40_41xxx.s 3. The assembly code in this file is the first one to be executed
  • 31. After Reset, the MCU does 1. Copy the data segment initializers from flash to SRAM 2. Zero fill the bss segment 3. Call the clock system intitialization function 4. Call static constructors 5. Call the application's entry point (main function) Reset Flash to SRAM Zero bss segment Initial clock system Static constructor Application’s entry point
  • 32. Example of GPIO in main.c 1. int main(void) (The application's entry point.) 1. Call setup_leds function to intial GPIO pins. 2. A forever while loop to have fancy lighting. a. Call led_round function. b. Call flash_all_leds function.
  • 33. Example of GPIO in main.c (Cont.) 1. static void setup_leds(void) a. Initial the GPIO of output pins for controlling the LEDs. 2. static void led_round(void) a. On-Off the output pins to make the LEDs be turned on and off in order. 3. static void flash_all_leds(void) a. On-Off the output pins to make all LEDs flashing. 4. static void delay(__IO unit32_t nCount) a. hard code delay b. __IO defined in $(STM_DIR) /Libraries/CMSIS/Include/core_cm4.h
  • 34. GPIO of STM32F4 1. GPIO function diagram 2. Input configuration 3. Output configuration Referenced from: RM0090 Reference manual STM32F405xx/07xx, STM32F415xx/17xx, STM32F42xxx and STM32F43xxx advanced ARM ® -based 32-bit MCUs, P. 266, 273 ~ 275
  • 35.
  • 36. 1 2 3 4 5 AHB1 clock
  • 37. GPIO Input configuration 1. The output buffer is disabled. 2. The Schmitt trigger input is activated. 3. The pull-up and pull-down resistors are activated depending on the value in the GPIOx_PUPDR register. 4. The data present on the I/O pin are sampled into the input data register every AHB1 clock cycle. 5. A read access to the input data register provides the I/O State.
  • 39. GPIO Output configuration 1. The output buffer is enabled: a. Open drain mode: A “0” in the Output register activates the N-MOS whereas a “1” in the Output register leaves the port in Hi-Z (the P-MOS is never activated) b. Push-pull mode: A “0” in the Output register activates the N-MOS whereas a “1” in the Output register activates the P-MOS 2. The Schmitt trigger input is activated.
  • 40. GPIO Output configuration (Cont.) 3. The weak pull-up and pull-down resistors are activated or not depending on the value in the GPIOx_PUPDR register. 4. The data present on the I/O pin are sampled into the input data register every AHB1 clock cycle. 5. A read access to the input data register gets the I/O state. 6. A read access to the output data register gets the last written value.
  • 41. Data registers ● GPIOx_IDR ● GPIOx_ODR ● GPIOx_BSRR (x = A..I/J/K) GPIO registers Configuration registers ● GPIOx_MODER ● GPIOx_OTYPER ● GPIOx_OSPEEDR ● GPIOx_PUPDR ● GPIOx_LCKR ● GPIOx_AFRL/AFRH Referenced from: RM0090 Reference manual STM32F405xx/07xx, STM32F415xx/17xx, STM32F42xxx and STM32F43xxx advanced ARM ® -based 32-bit MCUs, P. 278 ~ 283 成大資工Wiki GPIO 暫存器 Overview
  • 42. GPIO port mode register (GPIOx_MODER) (x = A..I/J/K) Bits 2y:2y+1 MODERy[1:0]: Port x configuration bits (y = 0..15) These bits are written by software to configure the I/O direction mode. 00: Input (reset state) 01: General purpose output mode 10: Alternate function mode 11: Analog mode
  • 43. GPIO port output type register (GPIOx_OTYPER) (x = A..I/J/K) Bits 31:16 Reserved, must be kept at reset value. Bits 15:0 OTy: Port x configuration bits (y = 0..15) These bits are written by software to configure the output type of the I/O port. 0: Output push-pull (reset state) 1: Output open-drain
  • 44. GPIO port output speed register (GPIOx_OSPEEDR) (x = A..I/J/K) Bits 2y:2y+1 OSPEEDRy[1:0]: Port x configuration bits (y = 0..15) These bits are written by software to configure the I/O output speed. 00: Low speed 01: Medium speed 10: Fast speed 11: High speed
  • 45. GPIO port pull-up/pull-down register (GPIOx_PUPDR) (x = A..I/J/K) Bits 2y:2y+1 PUPDRy[1:0]: Port x configuration bits (y = 0..15) These bits are written by software to configure the I/O pull-up or pull-down 00: No pull-up, pull-down 01: Pull-up 10: Pull-down 11: Reserved
  • 46. GPIO port input data register (GPIOx_IDR) (x = A..I/J/K) Bits 31:16 Reserved, must be kept at reset value. Bits 15:0 IDRy: Port input data (y = 0..15) These bits are read-only and can be accessed in word mode only. They contain the input value of the corresponding I/O port.
  • 47. GPIO port output data register (GPIOx_ODR) (x = A..I/J/K) Bits 31:16 Reserved, must be kept at reset value. Bits 15:0 ODRy: Port output data (y = 0..15) These bits can be read and written by software. Note: For atomic bit set/reset, the ODR bits can be individually set and reset by writing to the GPIOx_BSRR register (x = A..I/J/K).
  • 48. GPIO port bit set/reset register (GPIOx_BSRR) (x = A..I/J/K) Bits 31:16 BRy: Port x reset bit y (y = 0..15) These bits are write-only and can be accessed in word, half-word or byte mode. A read to these bits returns the value 0x0000. 0: No action on the corresponding ODRx bit 1: Resets the corresponding ODRx bit Note: If both BSx and BRx are set, BSx has priority. Bits 15:0 BSy: Port x set bit y (y= 0..15) These bits are write-only and can be accessed in word, half-word or byte mode. A read to these bits returns the value 0x0000. 0: No action on the corresponding ODRx bit 1: Sets the corresponding ODRx bit
  • 49. GPIO port configuration lock register (GPIOx_LCKR) (x = A..I/J/K) Bits 31:17 Reserved, must be kept at reset value. Bit 16 LCKK[16]: Lock key This bit can be read any time. It can only be modified using the lock key write sequence. 0: Port configuration lock key not active 1: Port configuration lock key active. The GPIOx_LCKR register is locked until an MCU reset occurs. Bits 15:0 LCKy: Port x lock bit y (y= 0..15) These bits are read/write but can only be written when the LCKK bit is 0. 0: Port configuration not locked 1: Port configuration locked
  • 50. GPIO alternate function low register (GPIOx_AFRL) (x = A..I/J/K) Bits 31:0 AFRLy: Alternate function selection for port x bit y (y = 0..7) → for low 8 pins of the port. These bits are written by software to configure alternate function I/Os AFRLy selection: 0000 ~ 1111 → AF0 ~ AF15
  • 51. GPIO alternate function high register (GPIOx_AFRH) (x = A..I/J/K) Bits 31:0 AFRHy: Alternate function selection for port x bit y (y = 8..15) → for high 8 pins of the port. These bits are written by software to configure alternate function I/Os AFRHy selection: 0000 ~ 1111 → AF0 ~ AF15
  • 52. For pins 8 to 15, the GPIOx_AFRH [31:0] register selects the dedicated alternate function Alternate function on STM32F407xx For pins 0 to 7, the GPIOx_AFRL [31:0] register selects the dedicated alternate function Referenced from: RM0090 Reference manual STM32F405xx/07xx, STM32F415xx/17xx, STM32F42xxx and STM32F43xxx advanced ARM ® - based 32-bit MCUs, Figure 26. Selecting an alternate function on STM32F405xx/07xx and STM32F415xx/17xx, P. 270
  • 53. Let’s Trace main.c Deeply Defined macroes Initial GPIO as Output Set / Reset Output https://github. com/Malkavian/tuts/blob/master/stm/blinky/main.c
  • 54. Practice: Do the porting with original STM32F4 library
  • 55. I want to practice. The library is for STM32F4-Dicovery board only. However, there will be a lot of differece between STM32F4- Discovery and the board designed by oneself. Why do port with original standard STM43F4 library
  • 56. Referenced from: STM32F4DISCOVERY Peripherals, Rev: B.2(PCB.SCH), 1/9/2012, Sheet 6 of 6 Output LEDs on Schematic of STM32F4-Discovery
  • 57. Referenced from: STM32F4DISCOVERY Peripherals, Rev: B.2(PCB.SCH), 1/9/2012, Sheet 6 of 6 User Button on Schematic of STM32F4-Discovery
  • 58. Clicked What does practice do? Start Setup LEDs & User Button Flash all LEDs Turn on/off LEDs in order Check User Button Not Clicked
  • 59. 1. Codes: a. https://github. com/starnight/STM32F4/tree/master/GPIO 2. Reference: a. STM32F4-Discovery schematics: http://www.st. com/web/catalog/tools/FM116/SC959/SS1532/PF25 2419 b. devthrash/STM32F4-examples: https://github.com/devthrash/STM32F4- examples/blob/master/GPIO/main.c Programming and Using STD Library
  • 60. Reference 1. Blink for stm32f4-discovery board on Linux with Makefile http://liviube.wordpress.com/2013/04/22/blink-for-stm32f4-discovery-board- on-linux-with-makefile/ 2. STM32F4 GPIO tutorial http://eliaselectronics.com/stm32f4-tutorials/stm32f4-gpio-tutorial/ 3. blinky https://github.com/Malkavian/tuts/blob/master/stm/blinky 4. Setting up the ARM toolchain http://eliaselectronics.com/stm32f4-tutorials/setting-up-the-stm32f4-arm- development-toolchain/
  • 61. Reference (Cont.) 5. STM32F4 Library http://www.emcu.it/STM32F4xx/STM32F4-Library/STM32F4-Library.html 6. STM32F4-Discovery Library http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 7. STM32F4 GPIO Configuration http://patrickleyman.be/blog/stm32f4-gpio- configuration/devthrash/STM32F4-examples https://github.com/devthrash/STM32F4-examples 8. Using I/O ports on the STM32 F4 Discovery http://www.rapitasystems.com/blog/using-io-ports-on-the-stm32-f4- discovery
  • 62. Refernce (Cont.) 9. STM32开发板例程讲解之二:GPIO的描述和配置,GPIO_IOTG例程精讲 _ch… http://www.360doc.com/content/11/0314/14/5963783_101015283.shtml 10. Week #7 (Oct 30) :: Peripherals and hardware interface http://wiki.csie.ncku.edu.tw/embedded/2012w7 11. General-purpose Input/Output (GPIO) http://wiki.csie.ncku.edu.tw/embedded/GPIO 12. STM32之GPIO输入输出 http://blog.csdn.net/wjjontheway/article/details/9302189 13. STM32F4 DSP and standard peripherals library http://www.st. com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF257901
  • 63. Refernce (Cont.) 14. CMSIS - Cortex Microcontroller Software Interface Standard http://www.arm.com/products/processors/cortex-m/cortex-microcontroller- software-interface-standard.php 15. STM32 Programming (中文) http://wiki.csie.ncku.edu.tw/embedded/Lab19/stm32-prog.pdf 16. STM32F407 硬體週邊介紹 http://www.slideshare.net/ssusereb6ca4/stm32f4 17. Let's Play STM32 http://www.slideshare.net/jaychen94009/arm-cortex-m4 18. Tutorial: STM32 - Integrated Debugging in Eclipse using GNU toolchain http://erika.tuxfamily.org/wiki/index.php?title=Tutorial:_STM32_- _Integrated_Debugging_in_Eclipse_using_GNU_toolchain&oldid=5474