We may earn an affiliate commission when you visit our partners.
Course image
FastBit Embedded Brain Academy and Kiran Nayak

Update: English closed captions have been added, transcript available

Course code: MCU2

>>Welcome to the course which teaches you advanced Micro-controller programming. In this course you are going to learn and master Timers Highly recommended if you are seeking a career in the domain of Embedded software. <<

Read more

Update: English closed captions have been added, transcript available

Course code: MCU2

>>Welcome to the course which teaches you advanced Micro-controller programming. In this course you are going to learn and master Timers Highly recommended if you are seeking a career in the domain of Embedded software. <<

In this course, you will understand behind the scene working of peripherals with supportive code exercises. I have included various real-time exercises which help you to master every peripheral covered in this course and this course thoroughly covers both theory and practical aspects of Timers

In Timer Section the course covers,

1. Simple time-based generation using the basic timer in both polling and interrupt mode

2. Timer interrupts and IRQ numbers, ISR implementation, callbacks, etc

3. General-purpose timer

4. Working with Input Capture channels of General-purpose timer

5. Interrupts, IRQs, ISRs, callbacks related to Input Capture engine of the general purpose timer

6. Working with output capture channels of the General purpose timer

7. Interrupts, IRQs, ISRs, callbacks related to Output Capture engine of the general purpose timer

8. PWM generation using output capture modes

9. PWM Exercises

10. Step by Step code development process will help you to master the TIMER peripheral

In CAN Section the course covers,

1. Introduction to the CAN protocol

2. CAN frame formats

3. Understanding a CAN node

4. CAN signaling (single-ended signals vs differential signals ) \

5. CAN Bus recessive state and dominant state

6. CAN Bit timing Calculation \

7. CAN network with Transceivers

8. Exploring inside view of CAN transceivers

9. CAN Self-test modes such as

10. Exploring STM32 bXCAN peripheral

11. self-testing of bxCAN peripheral with exercises

12. bXCAN block diagram

13. Tx/Rx path of the bxCAN Peripheral

14. CAN frame filtering and executrices

15. CAN in Normal Mode

16. Communicating between 2 boards over CAN

17. Code exercises

In the Power Controller Section the course covers,

1. ARM Cortex Mx Low Power Modes Normals Vs DeepSleep

2. STOP mode

4. STANDBY mode

5. Current measurement with different submode

6. Waking up MCU by using wakeup pins Backup SRAM

8. Step by Step coverage with lots of code exercises.

In RTC Section the course covers,

1. RTC functional block diagram

2. RTC clock management

3. RTC calendar unit

4. RTC Alarm unit

5. RTC wake-up unit

6. RTC Time Stamp Unit

7. waking up MCU using RTC events

8. RTC interrupts

9. and lots of other details with step by step code exercises.

STM32 Device HAL framework

1. STM32 Device Hal framework details

2. APIs details

3. Interrupt handling

4. Callback implementation

5. Peripheral Handling and configurations

6. Step by Step explanation with code exercises.

> Important note: This course is NOT about auto-generating code using STM32CubeMx software<

Hardware used :

This is just a recommendation from the instructor for beginners.

1) Microcontroller Embedded C Programming: absolute beginners(Embedded C)

2) Embedded Systems Programming on ARM Cortex-M3/M4 Processor(ARM Cortex M4 Processor specific)

3) Mastering Microcontroller with Embedded Driver Development(MCU1)

4) Mastering Microcontroller: TIMERS, PWM, CAN, RTC,LOW POWER(MCU2)

5) Mastering Microcontroller: STM32-LTDC, LCD-TFT, LVGL(MCU3)

6) Embedded System Design using UML State Machines(State machine)

7) Mastering RTOS: Hands-on FreeRTOS and STM32Fx with Debugging(RTOS)

8) ARM Cortex M Microcontroller DMA Programming Demystified(DMA)

9) STM32Fx Microcontroller Custom Bootloader Development(Bootloader)

10) Embedded Linux Step by Step using Beaglebone Black(Linux)

11) Linux device driver programming using Beaglebone Black(LDD1)

Other programming courses

1) Master The Rust Programming Language : Beginner To Advanced

Enroll now

What's inside

Learning objectives

  • You will learn from scratch about stm32 timers : basic and general purpose timers
  • Understand general purpose timer's input capture apnd output compare unit handling and exercises
  • Handling of timer interrupts : time base interrupts, capture interrupts, compare interrupts
  • Understand about can filtering
  • You will learn from scratch can protocol, can signalling, can transceivers , bus access procedures
  • Learn about can interrupts
  • Can peripheral programming using stm32 device hal drivers
  • You will master low power modes of the mcu : sleep,stop and standby
  • You will understand different power domains of the mcu : vdd domain, 1.2v domain, backup domain
  • Understand microcontroller wakeup procedures using : rtc, wakeup pins,exti,etc.
  • You will master rtc features : calendar, alarm , time stamp,wakeup unit
  • Rtc interrupts and wake up procedures
  • Mastering microcontroller clocks handling : hse,hsi,lse,lsi,pll
  • Understand phase locked loop (pll) programming
  • Learn pwm mode and master through step by step code exercises
  • You should be able to quickly develop applications which involves stm32 device hal layer
  • Show more
  • Show less

Syllabus

Introduction
About the instructor
what are we going to do in this course ?
Important Note
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Covers CAN protocol, signaling, transceivers, and bus access procedures, which are essential for those working with in-vehicle networks and industrial automation systems
Explores STM32 device HAL framework details, APIs, interrupt handling, and callback implementation, which are crucial for efficient embedded systems development
Delves into low power modes of the MCU (SLEEP, STOP, STANDBY) and power domains, which is highly relevant for battery-powered and energy-efficient applications
Requires prior knowledge from the 'Mastering Microcontroller with Embedded Driver Development(MCU1)' course, which may pose a barrier for some learners
Focuses on the STM32 family of microcontrollers, so learners may need to adapt their knowledge to other microcontroller platforms
Teaches STM32 Timers, PWM, CAN, RTC, and Low Power, which are building blocks for embedded systems in automotive, industrial, and consumer electronics

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Advanced stm32 peripherals & hal mastery

Based on the course content and structure, prospective learners can expect in-depth coverage of key STM32 peripherals like Timers, PWM, CAN, Low Power, and RTC. The course emphasizes a manual approach to STM32 HAL programming, which aims to build a solid understanding of the underlying code rather than relying on auto-generated methods like CubeMX. Students should be prepared for challenging exercises and note that the course likely requires prior embedded C and microcontroller knowledge.
Designed for specific STM32 boards.
"Need to ensure I have the recommended STM32 development board for the exercises."
"The code exercises are tied to the specific hardware used in the course."
"May require adapting the code examples for a different STM32 board if I don't have the exact one."
Focuses on manual HAL driver coding.
"Appreciate the focus on manual HAL coding for better understanding, not just using CubeMX."
"Not relying on CubeMX seems like a major plus for learning the details."
"This manual approach should solidify my understanding of how HAL works."
Covers critical embedded system areas.
"Excited to learn about implementing the CAN bus protocol manually."
"Low power modes are crucial for modern embedded systems and appear well-covered."
"Mastering timers and PWM is essential for embedded work, and this course focuses on it."
Provides detailed peripheral understanding.
"I expect this course to go deep into the STM32 peripherals like Timers, CAN, and Low Power."
"Looking forward to the practical coding examples for each topic covered in the syllabus."
"The listed learning objectives suggest thorough coverage of advanced features."
Assumes existing embedded system skills.
"As 'MCU2', I expect this course builds on fundamental microcontroller knowledge."
"Prospective students should likely have a solid background in C and embedded programming."
"This course appears designed for those already familiar with microcontrollers, not beginners."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Mastering Microcontroller: Timers, PWM, CAN, Low Power(MCU2) with these activities:
Review Embedded C Concepts
Reinforce your understanding of Embedded C programming concepts, which are fundamental to microcontroller programming and used extensively in this course.
Browse courses on Embedded C
Show steps
  • Review data types, pointers, and memory management in C.
  • Practice writing simple C programs for embedded systems.
  • Study microcontroller-specific C extensions and libraries.
Read 'Embedded Systems Architecture' by Tammy Noergaard
Gain a deeper understanding of embedded systems architecture to better grasp the concepts covered in the course.
Show steps
  • Read the chapters related to microcontroller architecture and peripherals.
  • Take notes on key concepts and diagrams.
  • Relate the concepts to the STM32 microcontroller used in the course.
Implement Timer-Based PWM Signals
Practice generating PWM signals using timers on a microcontroller development board to solidify your understanding of timer configurations and PWM principles.
Show steps
  • Configure a timer in PWM mode.
  • Set the frequency and duty cycle of the PWM signal.
  • Measure the PWM signal using an oscilloscope or logic analyzer.
  • Adjust the timer settings to achieve the desired PWM characteristics.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document CAN Bus Communication
Create a detailed document explaining the CAN bus communication protocol, including frame formats, bit timing, and error handling, to reinforce your knowledge of CAN bus principles.
Show steps
  • Research the CAN bus protocol specifications.
  • Create diagrams illustrating CAN frame formats and bit timing.
  • Explain the different CAN bus error handling mechanisms.
  • Write a clear and concise document summarizing your findings.
Read 'Controller Area Network' by Konrad Etschberger
Deepen your understanding of the CAN protocol with a comprehensive guide.
Show steps
  • Read the chapters related to CAN frame structure and error handling.
  • Study the examples of CAN bus applications.
  • Take notes on key concepts and diagrams.
Low Power Mode Experimentation
Design and implement a project that utilizes the microcontroller's low power modes to minimize energy consumption, demonstrating your understanding of power management techniques.
Show steps
  • Identify the different low power modes available on the microcontroller.
  • Configure the microcontroller to enter a specific low power mode.
  • Measure the current consumption in each low power mode.
  • Implement a system that switches between different low power modes based on activity.
RTC-Based Alarm Clock
Develop an alarm clock application using the microcontroller's RTC module, showcasing your ability to configure and utilize the RTC for timekeeping and event scheduling.
Show steps
  • Configure the RTC module to keep track of time and date.
  • Implement an alarm setting interface.
  • Configure the RTC to generate an interrupt when the alarm time is reached.
  • Implement an alarm activation routine (e.g., playing a sound or turning on an LED).

Career center

Learners who complete Mastering Microcontroller: Timers, PWM, CAN, Low Power(MCU2) will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
As an Embedded Systems Engineer, you will design, develop, and test embedded systems, which are computer systems with a dedicated function within a larger mechanical or electrical system. This career involves working with microcontrollers and other hardware components, programming in languages like C, and using tools for debugging and testing. The course, with its thorough exploration of STM32 Timers, CAN protocol, and low power modes, helps build a strong foundation for the practical aspects of embedded systems development. Learning about the STM32 device HAL framework may be especially useful.
Firmware Engineer
A Firmware Engineer is responsible for writing and maintaining the low-level software that controls embedded devices. This includes programming microcontrollers, developing device drivers, and optimizing code for performance and power consumption. In this course, mastering Timers, PWM, CAN, and Low Power techniques provides knowledge directly applicable to firmware development. You may also come to understand microcontroller clocks handling and phase locked loop programming, useful for any firmware engineer. This course will also help you to learn about the STM32 device HAL framework.
Robotics Engineer
A Robotics Engineer designs, builds, and programs robots for various applications. This often involves working with microcontrollers to control motors, sensors, and other components of the robot. The course's sections on timers, PWM, and CAN protocol are directly applicable to robotics, as they are used for motor control, sensor communication, and inter-device communication. The course will help you understand how to program microcontrollers, manage power consumption, and implement real-time control algorithms, all essential skills for a Robotics Engineer. The knowledge of wake up MCU procedures may also prove useful for robotics.
Internet of Things Engineer
An Internet of Things Engineer designs and develops connected devices that can communicate with each other and the internet. This includes programming microcontrollers, working with wireless communication protocols, and developing cloud-based applications. In this course, mastering the low power modes of the MCU are critical for IoT devices, as they often need to operate on battery power for extended periods. Furthermore, knowledge of CAN protocol can be useful for connecting devices in industrial IoT applications. The course's section on RTC may also come in handy.
Hardware Engineer
As a Hardware Engineer, you will design, develop, and test computer hardware components, including microcontrollers. This role often involves working closely with firmware and software engineers to ensure that the hardware and software components work together seamlessly. The course's coverage of STM32 microcontrollers, focusing on timers, PWM, CAN, and low power modes, may be especially useful to the Hardware Engineer. Understanding the intricacies of these components and how to program them at a low level can lead to better hardware designs. You may also come to understand microcontroller clocks handling and phase locked loop programming.
Automotive Engineer
Automotive Engineers design and develop the electronic systems in modern vehicles. This includes engine control units, infotainment systems, and advanced driver-assistance systems. Knowledge of CAN protocol is essential for automotive engineers, as it is the primary communication protocol used in vehicles. The course's coverage of STM32 microcontrollers, timers, PWM, and low power modes may also be very useful for this career path. You may also come to understand microcontroller clocks handling and phase locked loop programming.
Control Systems Engineer
Control Systems Engineers design and implement systems that control the behavior of other systems. This can involve working with microcontrollers, sensors, and actuators to regulate temperature, pressure, flow, and other variables. The course's coverage of STM32 timers and PWM is directly applicable to control systems, as these are used for generating control signals and implementing feedback loops. If you are or wish to become a Control Systems Engineer, knowing the material in this course may prove useful.
Aerospace Engineer
Aerospace Engineers design and develop aircraft, spacecraft, and related systems. This can involve working with embedded systems for flight control, navigation, and communication. The course's coverage of STM32 microcontrollers, timers, PWM, and CAN protocol may certainly be useful in this field, as these are commonly used in aerospace applications. You may also come to understand microcontroller clocks handling and phase locked loop programming. Understanding microcontroller wakeup procedures may also be useful for aerospace projects.
Consumer Electronics Engineer
Consumer Electronics Engineers design and develop electronic products for consumers, such as smartphones, tablets, and wearable devices. This often involves working with microcontrollers to control the device's functionality and user interface. The course's coverage of STM32 microcontrollers, timers, PWM, and low power modes may be especially useful for this career path, as these are important considerations for consumer electronics. Understanding the intricacies of these components and how to program them at a low level can lead to better products.
Field Application Engineer
Field Application Engineers work for manufacturers of electronic components and provide technical support to customers who are using their products. This involves traveling to customer sites, demonstrating products, and helping customers integrate the components into their designs. This course may provide you with the technical knowledge needed to effectively support customers who are using STM32 microcontrollers, timers, PWM, and CAN protocol. Learning about the STM32 device HAL framework may also be valuable.
Medical Device Engineer
Medical Device Engineers design and develop electronic medical devices, such as pacemakers, insulin pumps, and diagnostic equipment. This often involves working with microcontrollers to control the device's functionality and ensure its safety and reliability. The course's coverage of STM32 microcontrollers, timers, and low power modes may be particularly useful for medical device engineers, as these are important considerations for implantable devices. Understanding MCU wakeup procedures may similarly be useful.
Test Engineer
A Test Engineer designs and implements tests to ensure that electronic products and systems meet performance and quality standards. This may involve using specialized test equipment and writing software to automate testing procedures. This course may provide you with the skills to understand how microcontrollers work and how to design effective tests to verify their functionality. Learning about timers, PWM, and CAN protocol can help a Test Engineer develop comprehensive test plans.
Technical Support Engineer
Technical Support Engineers provide technical assistance to customers who are using electronic products and systems. This requires a strong understanding of how these products work and how to troubleshoot problems. While this course is not directly focused on customer support, it may provide you with the technical knowledge needed to effectively troubleshoot issues related to microcontrollers, timers, PWM, and CAN protocol. Similarly, learning about RTC may also be helpful.
Quality Assurance Engineer
Quality Assurance Engineers are responsible for ensuring that electronic products and systems meet quality standards. The course's coverage of STM32 microcontrollers, timers, PWM, and CAN protocol may help you to understand the key aspects of embedded systems and how to test them effectively. Furthermore, learning about STM32 device HAL framework may be very useful. This knowledge may help you to develop and implement quality assurance processes.
Application Developer
Application Developers create software applications for computers and mobile devices, but some also specialize in developing applications for embedded systems. While this course focuses on microcontroller programming, it may provide some helpful background knowledge for developers who are working with embedded systems. Learning about the STM32 device HAL framework may be particularly useful, as it can help application developers to interface with the hardware. Similarly, understanding microcontroller wakeup procedures can be useful.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Mastering Microcontroller: Timers, PWM, CAN, Low Power(MCU2).
Provides an in-depth look at the CAN protocol, covering everything from the physical layer to the application layer. It valuable resource for understanding the intricacies of CAN bus communication and troubleshooting CAN bus issues. This book is commonly used by industry professionals. It adds more depth to the CAN section of the course.
Provides a comprehensive overview of embedded systems architecture, covering topics such as microcontroller internals, memory organization, and peripheral interfaces. It is particularly useful for understanding the hardware aspects of microcontroller programming. While not STM32 specific, it provides a solid foundation for understanding the underlying principles. This book is more valuable as additional reading to provide breadth to the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser