Skip to content

A bare metal UART driver for STM32L476 MCUs to play a game of rock paper scissors with AVR MCUs.

Notifications You must be signed in to change notification settings

midcodegabby/ARM-AVR-RPS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is a project I completed to learn more about baremetal embedded development in a Linux environment. This
project is a continuation of a project I completed in my Computer Organization class, with the goal to get
a Nucleo-64 board (STM32L476xxx mcu) to play a game of Rock Paper Scissors with the ATmega32U4 mcu board
that I used in that class via UART.

This project primarily focuses on creating custom drivers such as UART, Systick, GPIO, etc. for the Nucleo-64 board.

I used the ARM GNU toolchain for compilation and linking, OpenOCD for programming and debugging, and the linux terminal for all code writing.

Changes (11/8/2024):

  • Changed the AVR code from the polling style implementation to an interrupt implementation.
  • Changed game logic on the STM32 code to work with the ATmega32U4 mcu when the ATmega32U4 is running an interrupt version of the rock paper scissors game.
  • Fixed bug where the AVR mcu wouldn't update the SendReady variable by changing
    UART4_RDR |= data_out to
    UART4_RDR = data_out
    in src/uart.c.
  • Moved UART4 and EXTI ISRs to main.c to prevent the use of global variables across different files.

Testing Version 2 (newer):
https://youtu.be/n9kZ7tizfu0

Testing Version 1 (older):
https://youtu.be/cP5Dmpc3x68

I followed this playlist to help me with this project:
https://www.youtube.com/playlist?list=PLERTijJOmYrDiiWd10iRHY0VRHdJwUH4g

About

A bare metal UART driver for STM32L476 MCUs to play a game of rock paper scissors with AVR MCUs.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published