Last night, I worked overtime and posted a message on my friend circle:
“Success can only be achieved through hard work,
“there’s no glory that comes from waiting!”
I added a photo of a clear night sky,
and included a little fist emoji,
just in case my boss wouldn’t see it, I even tagged him.
Have you ever posted something visible to only one person?
Last time my boss assigned me a big task,
I was exhausted and posted at dawn:
“Work is so hard, I don’t want to live anymore.”
The next day, my boss came to ask me about my progress.
If I don’t post, I’m suffering,
if I post, it means I can’t take it anymore, just venting a bit.
Posts during holidays are real posts,
while posts during work are like labor reform diaries.
Teacher Wu shook his head after seeing my post:
“Life is already so bitter,
“don’t sell bitter herbs in your friend circle.”
“In this vast sea of people, we met,
“but it really is my retribution.”
Then, he taught me a trick to retaliate against society:
Change my nickname to “little wife” and post randomly.
Those on WeChat without a name tag,
if they happen to encounter their wife checking up…刺激!
Isn’t it said that Teacher Wu can enter Tsinghua University?
Are you being both Zen and despairing in your friend circle,
yet in your favorites, you are striving upward,
“waiting for that day when you finally have time?”
Come on, Teacher Wu will help you break through the void:
Shanguigu’s Embedded Tutorial Series on STM32
Direct link to Bilibili:
https://www.bilibili.com/video/BV1KM4m1U7f1
In the era of the Internet of Everything, embedded devices are playing an increasingly important role, and embedded development has gained more attention. In the field of embedded development, the STM32 series MCUs are favored for their high cost-performance ratio, rich peripherals, and user-friendly tools, widely used in IoT, industrial control, consumer electronics, medical devices, monitoring, and other fields.
Shanguigu has meticulously crafted the STM32 tutorial, providing detailed explanations of the principles and applications of STM32. The tutorial is designed to be used in conjunction with the STM32 development board developed by Shanguigu (available for purchase on Taobao), covering a wealth of application cases and classroom exercises, and providing detailed introductions to both the register and HAL library development methods.
The tutorial is divided into two main parts: the basic section and the advanced section. The basic section introduces fundamental concepts and principles, mastering commonly used development tools, and getting started with STM32 development design. The content includes: Introduction to STM32, Introduction to the development board, Quick start cases, GPIO, overall structure and clock system, interrupt system, USART serial communication, and I2C communication; the advanced section provides detailed introductions to more peripherals of STM32, involving deeper principles and richer application scenarios, including: Timer, DMA, ADC, SPI communication, memory registers, FSMC, and LCD display.
Studying the tutorial requires a foundation in digital electronics, analog electronics, and basic computer principles, suitable for beginners wanting to learn microcontroller knowledge, as well as embedded developers with microcontroller development experience who want to master STM32 development.
Tutorial Overview
http://www.atguigu.com/download.shtml
Follow Shanguigu’s official account on Bilibili,
be the first to see the latest video tutorials!
Link: https://space.bilibili.com/302417610
Tutorial Directory
001. Introduction to STM32 Tutorial
002. Overview – Introduction to ARM Core
003. Overview – Introduction to STM32
004. Overview – STM32 Application Scenarios
005. Overview – STM32 Naming Convention
006. Overview – STM32 Development Methods
007. Overview – Choosing STM32 Development Tools
008. Overview – Downloading and Installing Keil MDK
009. Development Board – Physical Diagram and Schematic
010. Development Board – STM32 Minimum System
011. Development Board – Quick Verification of STM32 Development Board
012. Lighting Case – Project Creation
013. Lighting Case – Compilation Configuration
014. Lighting Case – Register Code Implementation
015. Lighting Case – Review and Extended Practice – Lighting Three Lights
016. Lighting Case – Optimization (1) – Using Macro-Defined Register Names
017. Lighting Case – Optimization (2) – Using Bitwise Operations
018. Lighting Case – Optimization (3) – Using Macro-Defined Corresponding Bits
019. GPIO – Overview
020. GPIO – Operating Modes – Push-Pull Output and Open-Drain Output
021. GPIO – Operating Modes – Problem Solving – Data Transfer Direction
022. GPIO – Operating Modes – Multiplex Output
023. GPIO – Operating Modes – Input Mode
024. GPIO – Registers
025. GPIO – Keil + VSCode Optimization Development Experience
026. GPIO – Chasing Lights Case – Basic Code Implementation
027. GPIO – Chasing Lights Case – Code Improvement Implementation
028. GPIO – Classroom Exercise – Chasing Lights Back and Forth
029. STM32 System Architecture
030. STM32 Clock System
031. Summary of STM32 Clock Uses
032. HAL Library – Introduction
033. HAL Library – STM32CubeMX Installation
034. HAL Library – Chasing Lights Case – HAL Library Project Creation
035. HAL Library – Chasing Lights Case – HAL Library Code Implementation
036. HAL Library – Source Code Analysis of System Clock Configuration
037. Common Software Issues
038. Classroom Exercise – Sequentially Turning on Lights
039. Interrupt System – Basic Concepts
040. Interrupt System – Function of Interrupts
041. Interrupt System – STM32 Interrupts
042. Interrupt System – Interrupt System Architecture
043. Interrupt System – NVIC
044. Interrupt System – Basic Principles and Configuration of Interrupt Priority
045. Interrupt System – EXTI Principles and Registers
046. Interrupt System – Button Interrupt Case – Requirement Analysis and Circuit Principles
047. Interrupt System – Review
048. Interrupt System – Button Interrupt Case – Register Introduction
049. Interrupt System – Button Interrupt Case – Register Mode Implementation
050. Interrupt System – Button Interrupt Case – HAL Library Implementation
051. Interrupt System – Classroom Exercise – Button Light Switch
052. Interrupt System – Classroom Exercise – Button Chasing Light Switch
053. Interrupt System – Classroom Exercise – Button Manual Chasing Light
054. USART – Serial and Parallel Communication
055. USART – Half-Duplex and Full-Duplex
056. USART – Synchronous and Asynchronous
057. USART – Serial Communication Protocol
058. USART – Basic Introduction to USART Peripheral
059. USART – Functional Block Diagram Principle Introduction
060. USART – Setting Baud Rate
061. USART – Serial Communication Case – Circuit Principles and Register Introduction
062. USART – Serial Communication Case – Polling Mode Register Implementation – Initialization
063. USART – Serial Communication Case – Polling Mode Register Implementation – Sending and Receiving a Single Character
064. USART – Serial Communication Case – Polling Mode Register Implementation – Sending a String
065. USART – Serial Communication Case – Polling Mode Register Implementation – Receiving a String
066. USART – Serial Data Sending Case – Register Polling Mode – Code Improvement
067. USART – Problem Solving – Setting and Clearing Status Bits
068. USART – Serial Data Sending Case – Register Interrupt Mode
069. USART – Problem Solving – Judging End of String Flag
070. USART – Serial Data Sending Case – HAL Library Polling Mode – Sending and Receiving Fixed-Length Data
071. USART – Serial Data Sending Case – HAL Library Polling Mode – Sending and Receiving Variable-Length Data
072. USART – Serial Data Sending Case – HAL Library Interrupt Mode
073. Using Keil for Breakpoint Debugging
074. USART – Using Serial Port for printf Redirection – Register Implementation
075. USART – Using Serial Port for printf Redirection – HAL Library Implementation
076. Review of Basic Knowledge
077. I2C – Basic Principles and Protocol
078. I2C – Software Simulated I2C Case – Requirement Description and Hardware Circuit Design
079. I2C – Software Simulated I2C Case – M24C02 Address Introduction
080. I2C – Software Simulated I2C Case – Timing Diagram Arrangement
081. I2C – Software Simulated I2C Case – Project Creation and Basic Macro Definitions
082. I2C – Problem Solving – EEPROM Read and Write Operation Timing
083. I2C – Software Simulated I2C Case – Basic Timing Definitions
084. I2C – Software Simulated I2C Case – I2C Master Sending a Byte
085. I2C – Software Simulated I2C Case – I2C Master Reading a Byte
086. I2C – Software Simulated I2C Case – EEPROM Reading and Writing a Byte
087. I2C – Software Simulated I2C Case – EEPROM Continuous Reading and Writing Multiple Bytes
088. I2C – Software Simulated I2C Case – Main Function Testing
089. I2C – Review and Summary of I2C Principles
090. I2C – I2C Peripheral Principle Block Diagram in STM32
091. I2C – I2C Peripheral Registers (1) – Basic Configuration
092. I2C – I2C Peripheral Registers (2) – I2C Protocol Control
093. I2C – Hardware Implementation of I2C Case – Project Creation and I2C Initialization
094. I2C – Hardware Implementation of I2C Case – I2C Protocol Implementation (1) – Basic Operations
095. I2C – Hardware Implementation of I2C Case – I2C Protocol Implementation (2) – Sending and Receiving Address and Data
096. I2C – Hardware Implementation of I2C Case – EEPROM Interface Implementation and Testing
097. I2C – Hardware Implementation of I2C Case – HAL Mode Implementation
098. Comprehensive Case – Fancy Chasing Lights – Requirement Analysis and Implementation Ideas
099. Comprehensive Case – Fancy Chasing Lights – Serial Issuing Plan and Saving
100. Comprehensive Case – Fancy Chasing Lights – Analysis and Display of Chasing Lights Plan
101. Timer – Overall Introduction to Timers in STM32
102. Timer – System Tick Timer
103. Timer – System Tick Timer – Register Introduction
104. Timer – System Tick Timer Case – Register Implementation
105. Timer – System Tick Timer Case – HAL Library Implementation
106. Timer – System Tick Timer – Delay Function Utility Class
107. Timer – Basic Timer – Basic Composition and Principles
108. Timer – Basic Timer Case – Register Introduction
109. Timer – Basic Timer Case – Register Implementation
110. Timer – Basic Timer Case – HAL Library Implementation
111. Timer – Classroom Exercise – Timer Control for Blinking Two Lights
112. Timer – General Timer – Basic Introduction and Clock Source Selection
113. Timer – General Timer – Counting Mode
114. Timer – General Timer – PWM Principle
115. Timer – General Timer – Output Comparison Principle and Working Mode
116. Timer – Output PWM Case – Register Introduction
117. Timer – Output PWM Case – Register Implementation
118. Timer – Output PWM Case – HAL Library Implementation
119. Timer – Classroom Exercise – Alternating Breathing Light
120. Timer – Classroom Exercise – Button Adjusts LCD Backlight Brightness
121. Timer – General Timer – Input Capture Function
122. Timer – Measuring Period Case – Circuit Principles and Register Introduction
123. Timer – Measuring Period Case – Register Mode – Timer Initialization
124. Timer – Measuring Period Case – Register Mode – Detecting Period and Frequency
125. Timer – Measuring Period Case – Register Mode – Code Optimization
126. Timer – Measuring Period Case – HAL Library Mode
127. Timer – General Timer – Trigger Output and Slave Mode
128. Timer – General Timer – PWM Input Mode
129. Timer – Classroom Exercise – Measuring PWM Square Wave of Different Frequencies
130. Timer – Review – Slave Mode and PWM Input Mode
131. Timer – Measuring Duty Cycle Case – Register Introduction
132. Timer – Measuring Duty Cycle Case – Register Mode Implementation
133. Timer – Measuring Duty Cycle Case – HAL Library Mode Implementation
134. Timer – Advanced Timer – Functional Block Diagram and Principle Introduction
135. Timer – Advanced Timer Case – Register Introduction
136. Timer – Advanced Timer Case – Register Mode Implementation
137. Timer – Advanced Timer Case – HAL Library Mode Implementation
138. Timer – Review – Timer Summary
139. DMA – Basic Principles and Functional Block Diagram
140. DMA – Register Introduction
141. DMA Case 1 – ROM to RAM – Register Implementation
142. DMA Case 1 – ROM to RAM – HAL Library Implementation
143. DMA Case 2 – RAM to Serial Port – Register Implementation
144. DMA Case 2 – RAM to Serial Port – HAL Library Implementation
145. DMA – Review
146. ADC – Basic Principles and Basic Parameters
147. ADC – Basic Introduction to ADC Module in STM32
148. ADC – Successive Approximation ADC Working Principle
149. ADC – Working Principle of ADC Peripheral
150. ADC – Register Introduction
151. ADC – Single Channel Conversion Case – Register Mode
152. ADC – Single Channel Conversion Case – HAL Library Mode
153. ADC – ADC Block Diagram and Register Review
154. ADC – Multi-Channel Conversion Case – Register Mode
155. ADC – Multi-Channel Conversion Case – HAL Library Mode
156. SPI – Introduction to SPI Communication
157. SPI – W25Q32 Chip Introduction and Read/Write Operations
158. SPI – Read/Write Flash Case – Software Simulation Implementation (1) – SPI Communication Protocol
159. SPI – Read/Write Flash Case – Software Simulation Implementation (2) – Flash Interface Declaration and Reading ID Test
160. SPI – Read/Write Flash Case – Software Simulation Implementation (3) – Read/Write Flash
161. SPI – Read/Write Flash Case – Code Address Issue Resolution
162. SPI – SPI Peripheral in STM32
163. SPI – SPI Module Register Introduction
164. SPI – Read/Write Flash Case – Hardware Implementation – Register Mode
165. SPI – Read/Write Flash Case – Hardware Implementation – HAL Library Mode
166. Memory and Registers – Basic Introduction and Classification of Memory
167. Memory and Registers – Introduction to Different Types of Memory
168. Memory and Registers – Memory Mapping in STM32
169. Memory and Registers – Essence and Address Mapping of Registers
170. Classroom Exercise – Writing a Large Number of Characters to Flash
171. FSMC – Basic Principles and Composition
172. FSMC – External Device Address Mapping
173. FSMC – Control Read and Write Timing of External Memory
174. FSMC – SRAM Chip IS62WV51216
175. FSMC – Extended SRAM Case – Hardware Circuit and Register Introduction
176. FSMC – Extended SRAM Case – Register Implementation
177. FSMC – Review Summary and Extension
178. FSMC – Extended SRAM Case – HAL Library Implementation
179. LCD – Principles and Interface Types
180. LCD – LCD Controller and System Composition
181. LCD – FSMC Control LCD Display Case – Hardware Circuit Design
182. LCD – FSMC Control LCD Display Case – FSMC Addressing
183. LCD – FSMC Control LCD Display Case – FSMC Configuration
184. LCD – FSMC Control LCD Display Case – LCD Macro Definitions and Low-Level Operation Interfaces
185. LCD – FSMC Control LCD Display Case – Reading LCD Module ID
186. LCD – FSMC Control LCD Display Case – Setting Full-Screen Background Color
187. LCD – Review
188. LCD – FSMC Control LCD Display Case – Displaying English Characters
189. LCD – FSMC Control LCD Display Case – Displaying Strings
190. FSMC Control LCD Display Case – Displaying Chinese Characters
191. FSMC Control LCD Display Case – Displaying Images
192. LCD – FSMC Control LCD Display Case – Drawing Dots, Lines, and Rectangles
193. FSMC Control LCD Display Case – Drawing Circles
194. FSMC Control LCD Display Case – HAL Library Implementation
Fun Fact:
If your friends are living such happy lives every day,
they wouldn’t need to take photos to show off on their friend circles.
Many people are like this:
They can suffer, but their friend circle cannot!
In reality: exhausted, never climbing again.
Friend Circle: A small mountain, successfully conquered!
In reality: the beach is too sunny, the wind is too strong…
Friend Circle: The sunshine is just right, the breeze is pleasant.
In reality: what a lousy internet celebrity spot, I was deceived.
Friend Circle: So happy to check in with someone!
In reality: My legs are covered in mosquito bites.
Friend Circle: Brave people enjoy the world first!
In reality: Is this tea really eighty bucks?
Friend Circle: Stealing half a day of leisure.
Even if living in a rough state, one must enjoy a polished friend circle!
Hot Knowledge:
If a girl posts a motivational quote with a selfie in her friend circle,
it means she just wanted to post a selfie.
But if she posts a motivational quote without any selfie,
that means she had a fight with her boyfriend or broke up.
Some girls’ friend circles are only visible for three days,
because they lack the confidence to always look like the same person.
Some girls’ friend circles can be scrolled through for a whole night,
thinking they’ve seen her entire life,
only to find it’s just from last month…
I opened my friend circle and saw that every person’s profile was written with the words “the years are quiet.”
I couldn’t sleep, so I carefully looked for half the night,
only to see the hidden words,
the screen was filled with three words: “so annoying!”
Teacher Wu rarely posts, but when he does, it’s shocking:
“Friends, it’s been a long time since I posted on my friend circle.
“How is everyone? Is everything normal?”
“Do you want to learn some hardcore technology?”
老司机发车,通关STM32!
Scan or click on the bottom left corner “Read the original text”:
I said I wouldn’t learn,
Teacher Wu got angry and posted a friend circle:
“Don’t fear a god-like opponent,
just fear a pig-like teammate.”
I seriously suspect this post is visible only to me…
Don’t flaunt happiness, don’t flaunt sweetness,
don’t flaunt wealth, and don’t flaunt success.
Physical science tells us,
flaunting always loses moisture,
while refrigeration is the best way to preserve freshness.
——Lu Yao
Make life easier,
don’t post a friend circle expecting attention.
Spiritually internalize: “Bring the flowers into your eyes.”
What does it mean to bring the flowers into your eyes?
I had a very good meal,
my first reaction was to post it in my friend circle,
but this thought lasted only a second or two,
and I cut it off.
If it were before, I might have shared it,
and my emotions would be controlled by what I shared,
worrying about whether others liked it or commented on it,
and if not, I would feel lost.
Not sharing means nothing will appear,
I just had a very good meal.
I remember this place, and I will come again next time,
and if there’s a need for social interaction, I will bring someone along.
I consumed this meal, rather than sharing it out.
Schematic & PCB Design Tutorial
Linux Application Layer Development
Quick Start with Ubuntu
Digital Circuits: Building a Computer from Scratch
Shanghai Embedded is fully booked in advance,
Beijing & Shenzhen are hard to get a seat,
For inquiries about Shanguigu Embedded Courses, scan the code: