This repository contains a collection of projects for the STM32F103C8T6 and STM32F767ZI microcontrollers. The projects are meant to showcase my abilities and understanding of both the hardaware and software associated with embedded programming with STM32 microcontrollers.
A general overview is provided in this REAMDE with each project directory containing a project level README that provides further detail on the project.
RTOS Skills Used
- Task creation/termination
- Semaphores
- One shot timer
Signal Types Used
- GPIO
- PWM
- ADC
Communication Protocols Used
- I2C
Interprocess Communication Methods Used
- DMA
Tools used
Software used
- STM32CubeIDE
- Saleae Logic 2
- Kicad (for schematics)
- SEGGER Ozone
For development of device drivers, I used a STM32F103C8T6 development board. For the development of Free RTOS applications I used a STM32F767ZI development board.
Note
Development of device drivers has been moved to this repo
Applications were written using the STM32CubeIDE environement and the automatically generated STM32 HAL was utilized. When other software or API's are used (i.e. CSMIS-RTOS) they will be listed in the projects software section.
This project blinks the USR-LED connected to pin PC13 at a frequency of 1 Hz. It is simple project using basic GPIO HAL functions.
This program utilizes the I2C communication protocol to print data to an LCD. It uses a custom driver for the LCD functions.
This program utilizes CMSIS-RTOS to create two tasks that blink two seperate LEDs. A timer is used to create a new task and delete the previous two.
This program utilizes DMA to store ADC data collected from a potentiometer to generate a PWM signal to drive a LED. Code flow is controlled by DMA interrupt and a binary semaphore.
This program utilizes a queue to transfer data between an AHT10 sensor and an LCD with both being connected to the same I2C bus.