We may earn an affiliate commission when you visit our partners.
Eduardo Corpeño and Marissa Siliezar

Learn about the RISC-V Instruction Set Architecture by creating applications in an actual RISC-V microcontroller. See many applications developed on a RISC-V embedded microcontroller board. We've chosen an inexpensive board so you may follow along if you want.

This course is part of a hands-on curriculum where you'll get some basic experience on the design and development of embedded applications using a RISC-V core. So far, this curriculum contains the following courses:

Read more

Learn about the RISC-V Instruction Set Architecture by creating applications in an actual RISC-V microcontroller. See many applications developed on a RISC-V embedded microcontroller board. We've chosen an inexpensive board so you may follow along if you want.

This course is part of a hands-on curriculum where you'll get some basic experience on the design and development of embedded applications using a RISC-V core. So far, this curriculum contains the following courses:

  1. Part 1: The Where you'll learn about the RISC-V Instruction Set Architecture.

  2. Part 2: Embedded Applications. Where you'll learn how to create basic applications using the on-chip peripherals.

After learning about the RISC-V ISA, it's time to talk about Embedded Applications using the awesome GD32V Dev Board by Seeed Studio. At $6.90 a piece, this is the cheapest microcontroller board I know. However, you're certainly not required to purchase anything. If you don't intend to acquire a board, you may successfully take the course by only watching the videos and written material.

Since the purpose of this second course is to get you acquainted with a RISC-V microcontroller, we'll cover the following topics, and more:

  1. The Development Platform

    1. The GD32 Board, by Seeed Studio

    2. Segger Embedded Studio

    3. The development process

  2. GPIO

  3. Analog I/O

    1. Reading analog input with an ADC

    2. Creating analog signals with a DAC

  4. Timers

    1. Input Capture

    2. Output Compare

    3. Generating periodic signals

    4. Pulse Width Modulation

  5. Serial Communication

    1. Serial Peripheral Interface

    2. The I2C interface

    3. Asynchronous serial communication (UART)

    4. Universal Serial Bus (USB)

  6. Interrupts

    1. The RISC-V interrupt model

    2. Interrupt-driven development process

Enroll now

What's inside

Learning objectives

  • How to design an embedded system of your own.
  • The steps to take when you have an embedded system in mind.
  • Tips and tricks in several steps of the design and implementation process.
  • How to use a risc-v microcontroller.
  • How a risc-v microcontroller compares to its arm cortex-m courterpart.

Syllabus

Segger Embedded Studio
Introduction
The GD32V Microcontroller
Motivation 1: Get some hands-on MCU practice!
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Uses the GD32V Dev Board, which, at under $10, provides an accessible entry point for hobbyists and learners interested in hands-on microcontroller projects
Covers essential peripherals like GPIO, ADC/DAC, Timers, and Serial Communication, which are fundamental building blocks for embedded systems development
Explores the RISC-V interrupt model and interrupt-driven development, offering insights into the architecture's unique features and capabilities
Requires the Segger Embedded Studio, which may necessitate learners to familiarize themselves with a specific integrated development environment
Is part of a two-part series, suggesting that learners may benefit from completing the first part to gain a comprehensive understanding of RISC-V architecture

Save this course

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

Reviews summary

Hands-on embedded development with risc-v

According to learners interested in RISC-V embedded systems, this course provides a practical, hands-on approach to developing applications on a real microcontroller board. Students appreciate the detailed dives into peripherals like GPIO, Timers, and Serial Communication, and the use of the inexpensive GD32V board makes the content accessible. While it offers useful low-level programming experience and helps move beyond simpler platforms like Arduino, some found the toolchain setup challenging or noted that it assumes prior knowledge from Part 1, especially regarding the RISC-V ISA.
Requires prior knowledge of RISC-V ISA.
"This course definitely assumes you've taken Part 1 and understand the RISC-V ISA basics."
"It's important to have a grasp of the RISC-V instruction set architecture before starting this course."
"Coming into this without Part 1 background might make some explanations harder to follow."
Explores the specific firmware library.
"The course does a good job explaining how to navigate and use the GD32VF103 firmware library."
"Understanding the structure and use of a manufacturer's HAL/library is a valuable skill taught here."
"Deep diving into the specific library registers and functions was very informative."
Moves to more professional bare-metal development.
"This course is great for bridging the gap between Arduino-level abstraction and bare-metal programming."
"Finally, a course that shows how to program an MCU without relying on the Arduino framework."
"Getting into the actual firmware library and registers was exactly the step up I was looking for."
Accessible development board choice.
"Using the cheap GD32V board meant I could follow along with the physical labs without spending much."
"The affordability of the recommended hardware was a big plus for me as a hobbyist."
"Great that the course centered around a board that's easy to acquire and low-cost."
Detailed look at essential MCU features.
"The sections on Timers and Interrupts were particularly well-explained and covered crucial embedded topics."
"Appreciated the deep dive into ADC, DAC, SPI, and I2C; these are fundamental for embedded work."
"Understanding how to configure and use the on-chip peripherals was exactly what I needed."
Gain practical skills on a real board.
"Getting hands-on experience with a real RISC-V board and peripherals was incredibly valuable."
"I loved working directly with the GD32V microcontroller; it solidified my understanding of embedded concepts."
"The practical exercises on GPIO, timers, and serial comms were the highlight for me, making the theory click."
Setting up the development environment can be tricky.
"Getting Segger Embedded Studio and the toolchain configured correctly took more effort than I expected."
"Struggled a bit with the DFU tools and flashing the board initially; clearer setup steps would help."
"Setting up the development environment was a bit frustrating, but once done, the rest flowed well."

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 Embedded Fun with RISC-V, Part 2: Embedded Applications with these activities:
Review Digital Logic Fundamentals
Strengthen your understanding of digital logic concepts, which are foundational for understanding how microcontrollers and their peripherals operate.
Browse courses on Digital Logic
Show steps
  • Review the basics of binary numbers and logic gates.
  • Practice converting between binary, decimal, and hexadecimal number systems.
  • Work through examples of simple digital circuits.
Review 'Embedded Systems Architecture' by Tammy Noergaard
Gain a deeper understanding of embedded systems architecture to better grasp the concepts presented in the course.
Show steps
  • Read the chapters related to microcontroller architecture and memory organization.
  • Study the examples of embedded system designs.
  • Take notes on key concepts and terminology.
Practice GPIO Control with Sample Code
Reinforce your understanding of GPIO control by working through sample code examples and modifying them to achieve different functionalities.
Browse courses on GPIO
Show steps
  • Download and compile the GPIO sample code provided in the course materials.
  • Modify the code to control different GPIO pins and observe the results.
  • Experiment with different input and output configurations.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Simple Blinking LED Project
Solidify your understanding of GPIO and timers by creating a simple project that blinks an LED using the RISC-V microcontroller.
Show steps
  • Connect an LED to a GPIO pin on the GD32V board.
  • Write code to toggle the GPIO pin on and off at a regular interval using a timer.
  • Test the code and adjust the timer settings to achieve the desired blinking rate.
Develop a Temperature Monitoring System
Apply your knowledge of analog input and serial communication to develop a system that reads temperature data from a sensor and transmits it to a computer.
Show steps
  • Connect a temperature sensor to an ADC input on the GD32V board.
  • Write code to read the analog voltage from the sensor and convert it to a temperature reading.
  • Use UART to transmit the temperature data to a computer.
  • Display the temperature data on the computer using a serial terminal program.
Review 'Designing Embedded Systems with RISC-V' by Yunsup Lee, David Patterson
Deepen your understanding of RISC-V architecture and embedded systems design principles.
Show steps
  • Read the chapters related to RISC-V processor architecture and memory systems.
  • Study the examples of embedded system designs using RISC-V.
  • Compare and contrast RISC-V with other embedded processor architectures.
Contribute to a RISC-V Embedded Project
Gain practical experience and contribute to the RISC-V community by participating in an open-source embedded project.
Browse courses on RISC-V
Show steps
  • Find an open-source RISC-V embedded project on GitHub or GitLab.
  • Review the project's documentation and code.
  • Identify a bug or feature that you can contribute to.
  • Submit a pull request with your changes.

Career center

Learners who complete Embedded Fun with RISC-V, Part 2: Embedded Applications will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
An Embedded Systems Engineer designs, develops, and tests embedded systems, often involving microcontrollers and real-time operating systems. This course directly helps a budding engineer build hands-on experience with a RISC-V microcontroller, including using its peripherals like GPIO, analog I/O, timers, and serial communication. Through the course's practical approach, you will gain familiarity with the hardware and software aspects of the embedded system development process. The course is a great way to start a project with a real RISC-V system and learn to manipulate its features, a must-have for any aspiring Embedded Systems Engineer.
Firmware Engineer
A Firmware Engineer specializes in creating the low-level software that controls hardware devices. This course provides practical experience creating firmware for a RISC-V microcontroller using a real development board. The course's focus on using on-chip peripherals, such as GPIO, analog input and output, timers, and various serial communication interfaces translates directly into the daily activities of a Firmware Engineer. Completing this course will help demonstrate a good foundation for a career in this field, and offers opportunities to work with different hardware and their corresponding software.
Hardware Engineer
A Hardware Engineer designs and develops physical hardware components. This course will help further their understanding of the interplay between hardware and software through hands-on experience with a RISC-V microcontroller. The course’s coverage of GPIO, analog I/O, timers, and serial communication helps build a foundation for understanding how microcontrollers function. A prospective Hardware Engineer will benefit greatly from knowing how to work directly with hardware and to perform tasks at a low level. This course provides many skills a Hardware Engineer could put to use.
Robotics Engineer
A Robotics Engineer designs and builds robots, often requiring a strong understanding of embedded systems. This course helps you understand how to program and utilize a microcontroller, which is a core skill within robotics. The course's emphasis on using peripherals and serial communication protocols is directly applicable to controlling various robotic components. Robotics engineers will find it helpful to work with a real, low-cost development board. Taking this course helps build confidence and the capacity to work with a variety of robotic hardware.
Internet of Things Developer
An Internet of Things Developer creates software for devices that are connected to the internet, many of which run on embedded systems. This course provides a deeper understanding of how a RISC-V microcontroller works and how to interact with its peripherals. It gives a hands-on approach to working at a low level. The course work on analog I/O, timers, and serial communication are directly applicable to the work of an Internet of Things Developer. Completing this course will prepare you to build connected devices using microcontrollers.
Automation Engineer
An Automation Engineer designs and implements automated systems, often involving embedded controllers. This course helps an automation engineer understand the fundamentals of microcontroller programming on a practical level. Through hands-on exercises involving GPIO, timers, and serial communication, this course helps develop a strong grasp of the underlying technology for automation control. The course provides a good foundation for anyone interested in working with automation systems that are built around embedded devices. The course is especially valuable for learning more about RISC-V systems.
Control Systems Engineer
A Control Systems Engineer works with systems that regulate the behavior of other devices or systems, often using embedded components. This course may be useful because it provides relevant hands-on experience with programming a microcontroller, including features like analog I/O and timers. The practical approach to embedded development is well-suited to the needs of a Control Systems Engineer. This is particularly true as it covers key aspects such as serial communication, which is essential for control applications. The course work on hardware and programming are good for the Control Systems Engineer's toolkit.
Test Engineer
A Test Engineer develops and executes tests for hardware and software systems. While this course focuses on embedded application development, it may be helpful to get a better understanding of the systems being tested. This course dives into the specifics of programming a RISC-V microcontroller and gives hands-on experience with a development board, which can be helpful to a Test Engineer who must understand how the system works at a lower level. Working with GPIO, analog I/O, timers, and serial communication can help a Test Engineer design better test cases and debug hardware issues.
Product Development Engineer
A Product Development Engineer is involved in the entire lifecycle of a product. Although this course is not a complete overview of product development, it may be useful for building an understanding of the embedded systems that may be a component of the final product. This course will provide a hands-on approach to microcontroller programming, which can be beneficial to Product Development Engineers who must understand the technology they will use in an embedded product. Knowing how to work at the level of the microcontroller will be valuable in any stage of product development.
Technical Project Manager
A Technical Project Manager oversees projects, especially those with technical aspects. Though this course doesn't focus on project management, it may be useful to get a better understanding of the underlying technology. Through experience in programming a RISC-V microcontroller, the Technical Project Manager can more deeply grasp the hardware and software aspects of the projects they oversee. The course covers topics such as GPIO and serial communication that are commonplace in many technical projects. This course helps a Technical Project Manager better appreciate the tasks and challenges faced by their team.
Research Scientist
A Research Scientist is involved in scientific investigation in their field, which may include new hardware or software. This course may be useful to a Research Scientist who requires work with microcontrollers and low-level programming. By providing hands-on experience with RISC-V microcontrollers, the course delivers practical knowledge that can be applied to scientific experiments. Additionally, the course topics of analog I/O and serial communication could be useful for designing data acquisition devices. This is especially useful for scientists who work in hardware-related fields.
Computer Science Professor
A Computer Science Professor teaches at the college or university level. While this course does not focus on theoretical computer science, it may be useful for a professor who teaches embedded systems. The hands-on experience with RISC-V microcontrollers would be valuable insight to pass on to students. The course's coverage of topics such as GPIO, I/O, and timers may be informative for a Computer Science Professor who wants to expand their background. The practical experience provided by this course might also be used to create assignments and projects for students.
Electrical Engineering Technician
An Electrical Engineering Technician works on the practical side of engineering, often testing and maintaining electrical equipment. This course may be useful as it provides hands-on experience working with a RISC-V microcontroller. The course content includes topics such as GPIO and serial communication that are often encountered in an Electrical Engineering Technician's work. This course can help an Electrical Engineering Technician better understand the electronics they are working with. The course's practical focus can offer beneficial insights to a technician.
Data Acquisition Specialist
A Data Acquisition Specialist works with systems that collect data from various sources, often using embedded systems. While this course does not focus on big data, it may be helpful by teaching the skills required to work with microcontrollers on a practical level. Completing this course can help a Data Acquisition Specialist build systems with a RISC-V microcontroller and utilize peripherals such as analog I/O and timers. The knowledge gained from this course allows a Data Acquisition Specialist to develop custom collection devices.
Bioengineer
A Bioengineer applies engineering principles to biological and medical problems. This course may be useful to a bioengineer who develops medical devices or biological instrumentation. The course's focus on microcontrollers and embedded systems helps to build a foundation for those who must design the circuitry and software of medical technology of instruments. Through its hands-on approach to using a RISC-V microcontroller, this course helps a bioengineer understand how to configure and program such devices. The course also offers familiarity with serial communication, which will be useful for bioengineers who build devices for research.

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 Embedded Fun with RISC-V, Part 2: Embedded Applications.
Provides a comprehensive guide to designing embedded systems using the RISC-V architecture. It covers topics such as processor design, memory systems, and I/O interfaces. It valuable resource for understanding the hardware and software aspects of RISC-V based embedded systems. This book is particularly useful for understanding the design choices behind the RISC-V architecture and how they impact embedded system performance.
Provides a comprehensive overview of embedded systems architecture, covering topics such as hardware platforms, memory management, and operating systems. It valuable resource for understanding the underlying principles of embedded systems design. It provides a broader context for the specific RISC-V microcontroller used in the course. This book is commonly used as a textbook in embedded systems courses.

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