## Activity type
Personal pursuit (eg Art / Computing / Making / Music / Drama / Sport)
## Description
Developed a strong foundation in embedded systems through self-directed learning with the STM32F103C8T6 microcontroller. Set up a complete development environment using STM32 CubeIDE and systematically worked through online tutorials to build practical projects.
Encountered two particularly challenging debugging experiences that deepened my understanding of embedded systems. The first involved a preprocessor macro bug where I carelessly added a semicolon at the end of a #define statement. This caused bizarre behavior where mathematical operations produced incorrect results (define– expanded to value;– instead of value–). Despite adding extensive logging and consulting AI tools, I couldn’t locate the issue. After exhausting conventional debugging methods, I decided to systematically trace through the entire program logic from the beginning. Only then did I discover the root cause: the semicolon was terminating the macro expansion prematurely. This experience taught me that C language compilation involves multiple stages (preprocessing, compilation, linking), and understanding these abstraction layers is crucial for low-level systems programming.
The second major challenge occurred when I forgot to configure the SYS Debug Mode to Serial Wire in the initial project setup. Although I had suspected this configuration issue from the start, I somehow convinced myself I had set it correctly and wasted an hour meticulously checking my code, hardware connections, and interface wiring—all of which were actually correct. The bug only revealed itself when I retraced the tutorial video step-by-step and finally verified my initial suspicion. This taught me to trust my debugging intuition and systematically verify assumptions rather than dismissing early hypotheses. It also highlighted how embedded systems debugging differs from pure software development: problems can originate from multiple layers—code logic, hardware configuration, or physical connections—requiring a more holistic troubleshooting approach.
Through these challenges, I successfully completed two major projects: a perpetual calendar system and an interactive OLED screen game controlled by physical buttons. I also built experimental prototypes including a Bluetooth-enabled mobile robot with LED indicators. Beyond following tutorials, I developed custom hardware abstraction libraries to simplify common operations, demonstrating my progression from passive learning to active synthesis of knowledge.
Gained hands-on experience with essential embedded communication protocols including I2C, SPI, and USART. Mastered various timer operating modes for precise timing control. Successfully interfaced with diverse hardware modules: OLED displays for visual output, BLE modules for wireless communication, MPU6050 motion sensors, motors with their drivers, and rotary encoders for user input.
Through this process, learned how embedded projects are structured in distinct layers (hardware abstraction layer, application layer, etc.). Synthesized scattered knowledge points from tutorials into cohesive understanding by writing custom libraries for common hardware operations. This enabled me to independently implement basic hardware control functions without relying solely on tutorial code.
This experience transformed me from following step-by-step instructions to confidently designing and implementing my own embedded solutions, demonstrating my ability to learn complex technical concepts independently, persevere through technical challenges, and apply knowledge practically.
## Skills
– [x] Critical thinking
– [x] Planning
– [ ] Artistic skills
– [ ] Communication
– [ ] Teamwork
– [ ] Leadership
– [x] Problem solving
– [x] Creativity / Innovation
– [x] Independence
– [x] Adaptability / Resilience
– [ ] Risk-taking / Courage
– [x] Inquisitiveness
## Date started
Month: 9
Year: 2025
## Date finished
Month: 11
Year: 2025
## Referee