ACDC Senior Project v1.0.0
Senior Project for Textron Aviation
Loading...
Searching...
No Matches
ACDC_GPIO.h File Reference

Header file for General Purpose Input Output pins. More...

#include "stm32f1xx.h"
#include "ACDC_stdint.h"

Go to the source code of this file.

Macros

#define GPIO_PIN_0   ((uint16_t)0x0001)
 
#define GPIO_PIN_1   ((uint16_t)0x0002)
 
#define GPIO_PIN_2   ((uint16_t)0x0004)
 
#define GPIO_PIN_3   ((uint16_t)0x0008)
 
#define GPIO_PIN_4   ((uint16_t)0x0010)
 
#define GPIO_PIN_5   ((uint16_t)0x0020)
 
#define GPIO_PIN_6   ((uint16_t)0x0040)
 
#define GPIO_PIN_7   ((uint16_t)0x0080)
 
#define GPIO_PIN_8   ((uint16_t)0x0100)
 
#define GPIO_PIN_9   ((uint16_t)0x0200)
 
#define GPIO_PIN_10   ((uint16_t)0x0400)
 
#define GPIO_PIN_11   ((uint16_t)0x0800)
 
#define GPIO_PIN_12   ((uint16_t)0x1000)
 
#define GPIO_PIN_13   ((uint16_t)0x2000)
 
#define GPIO_PIN_14   ((uint16_t)0x4000)
 
#define GPIO_PIN_15   ((uint16_t)0x8000)
 
#define GPIO_PIN_All   ((uint16_t)0xFFFF)
 
#define GPIO_MODE_INPUT   ((uint16_t)0b00)
 
#define GPIO_MODE_OUTPUT_SPEED_2MHz   ((uint16_t)0b10)
 
#define GPIO_MODE_OUTPUT_SPEED_10MHz   ((uint16_t)0b01)
 
#define GPIO_MODE_OUTPUT_SPEED_50MHz   ((uint16_t)0b11)
 
#define GPIO_CNF_OUTPUT_PUSH_PULL   ((uint16_t)0b00)
 
#define GPIO_CNF_OUTPUT_OPEN_DRAIN   ((uint16_t)0b01)
 
#define GPIO_CNF_OUTPUT_AF_PUSH_PULL   ((uint16_t)0b10)
 
#define GPIO_CNF_OUTPUT_AF_OPEN_DRAIN   ((uint16_t)0b11)
 
#define GPIO_CNF_INPUT_ANALOG   ((uint16_t)0b000)
 
#define GPIO_CNF_INPUT_FLOATING   ((uint16_t)0b001)
 
#define GPIO_CNF_INPUT_PULLDOWN   ((uint16_t)0b010)
 
#define GPIO_CNF_INPUT_PULLUP   ((uint16_t)0b110)
 

Functions

void GPIO_PinDirection (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN, uint8_t GPIO_MODE, uint8_t GPIO_CNF)
 Sets the Direction of the Pin to Input/Output (MODE) and the sets its Configuration (CNF) [CAN ONLY SET ONE PIN AT A TIME].
 
void GPIO_Deinit (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN)
 Deinitializes GPIO_PIN on GPIOx back to its reset value.
 
void GPIO_Write (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN, uint16_t GPIO_VALUE)
 Sets the pins output to the value passed into GPIO_VALUE.
 
void GPIO_Set (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN)
 Sets the pins output to HIGH or 1.
 
void GPIO_Clear (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN)
 Sets the pins output to LOW or 0.
 
void GPIO_Toggle (GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN)
 Toggles the pins output. From 0 -> 1 or 1 -> 0.
 
uint8_t GPIO_Read (const GPIO_TypeDef *GPIOx, uint16_t GPIO_PIN)
 Returns the current value of GPIO_PIN on GPIOx.
 
uint8_t GPIO_GetPinNumber (uint16_t GPIO_PIN)
 Returns the Pin number of the GPIO_PIN_#.
 

Detailed Description

Header file for General Purpose Input Output pins.

Author
Devin Marx
Version
0.1
Date
2023-10-11

Macro Definition Documentation

◆ GPIO_CNF_INPUT_ANALOG

#define GPIO_CNF_INPUT_ANALOG   ((uint16_t)0b000)

GPIO Input Mode Analog

◆ GPIO_CNF_INPUT_FLOATING

#define GPIO_CNF_INPUT_FLOATING   ((uint16_t)0b001)

GPIO Input Mode Floating

◆ GPIO_CNF_INPUT_PULLDOWN

#define GPIO_CNF_INPUT_PULLDOWN   ((uint16_t)0b010)

GPIO Input Mode Pulldown

◆ GPIO_CNF_INPUT_PULLUP

#define GPIO_CNF_INPUT_PULLUP   ((uint16_t)0b110)

GPIO Input Mode Pullup

◆ GPIO_CNF_OUTPUT_AF_OPEN_DRAIN

#define GPIO_CNF_OUTPUT_AF_OPEN_DRAIN   ((uint16_t)0b11)

GPIO Alternate Function Output Mode Open Drain

◆ GPIO_CNF_OUTPUT_AF_PUSH_PULL

#define GPIO_CNF_OUTPUT_AF_PUSH_PULL   ((uint16_t)0b10)

GPIO Alternate Function Output Mode Push-Pull

◆ GPIO_CNF_OUTPUT_OPEN_DRAIN

#define GPIO_CNF_OUTPUT_OPEN_DRAIN   ((uint16_t)0b01)

GPIO Output Mode Open-Drain

◆ GPIO_CNF_OUTPUT_PUSH_PULL

#define GPIO_CNF_OUTPUT_PUSH_PULL   ((uint16_t)0b00)

GPIO Output Mode Push-Pull

◆ GPIO_MODE_INPUT

#define GPIO_MODE_INPUT   ((uint16_t)0b00)

GPIO Input Mode

◆ GPIO_MODE_OUTPUT_SPEED_10MHz

#define GPIO_MODE_OUTPUT_SPEED_10MHz   ((uint16_t)0b01)

GPIO Ouptut Mode @ 10Mhz

◆ GPIO_MODE_OUTPUT_SPEED_2MHz

#define GPIO_MODE_OUTPUT_SPEED_2MHz   ((uint16_t)0b10)

GPIO Output Mode @ 2Mhz

◆ GPIO_MODE_OUTPUT_SPEED_50MHz

#define GPIO_MODE_OUTPUT_SPEED_50MHz   ((uint16_t)0b11)

GPIO Output Mode @ 50Mhz

◆ GPIO_PIN_0

#define GPIO_PIN_0   ((uint16_t)0x0001)

Pin 0 selected

◆ GPIO_PIN_1

#define GPIO_PIN_1   ((uint16_t)0x0002)

Pin 1 selected

◆ GPIO_PIN_10

#define GPIO_PIN_10   ((uint16_t)0x0400)

Pin 10 selected

◆ GPIO_PIN_11

#define GPIO_PIN_11   ((uint16_t)0x0800)

Pin 11 selected

◆ GPIO_PIN_12

#define GPIO_PIN_12   ((uint16_t)0x1000)

Pin 12 selected

◆ GPIO_PIN_13

#define GPIO_PIN_13   ((uint16_t)0x2000)

Pin 13 selected

◆ GPIO_PIN_14

#define GPIO_PIN_14   ((uint16_t)0x4000)

Pin 14 selected

◆ GPIO_PIN_15

#define GPIO_PIN_15   ((uint16_t)0x8000)

Pin 15 selected

◆ GPIO_PIN_2

#define GPIO_PIN_2   ((uint16_t)0x0004)

Pin 2 selected

◆ GPIO_PIN_3

#define GPIO_PIN_3   ((uint16_t)0x0008)

Pin 3 selected

◆ GPIO_PIN_4

#define GPIO_PIN_4   ((uint16_t)0x0010)

Pin 4 selected

◆ GPIO_PIN_5

#define GPIO_PIN_5   ((uint16_t)0x0020)

Pin 5 selected

◆ GPIO_PIN_6

#define GPIO_PIN_6   ((uint16_t)0x0040)

Pin 6 selected

◆ GPIO_PIN_7

#define GPIO_PIN_7   ((uint16_t)0x0080)

Pin 7 selected

◆ GPIO_PIN_8

#define GPIO_PIN_8   ((uint16_t)0x0100)

Pin 8 selected

◆ GPIO_PIN_9

#define GPIO_PIN_9   ((uint16_t)0x0200)

Pin 9 selected

◆ GPIO_PIN_All

#define GPIO_PIN_All   ((uint16_t)0xFFFF)

All pins selected

Function Documentation

◆ GPIO_Clear()

void GPIO_Clear ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN )

Sets the pins output to LOW or 0.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)

◆ GPIO_Deinit()

void GPIO_Deinit ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN )

Deinitializes GPIO_PIN on GPIOx back to its reset value.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)

◆ GPIO_GetPinNumber()

uint8_t GPIO_GetPinNumber ( uint16_t GPIO_PIN)

Returns the Pin number of the GPIO_PIN_#.

Parameters
GPIO_PINDesired pin (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)
Returns
Number of the pin (Ex. GPIO_PIN = GPIO_PIN_13, then 13 is retured)

◆ GPIO_PinDirection()

void GPIO_PinDirection ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN,
uint8_t GPIO_MODE,
uint8_t GPIO_CNF )

Sets the Direction of the Pin to Input/Output (MODE) and the sets its Configuration (CNF) [CAN ONLY SET ONE PIN AT A TIME].

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)
GPIO_MODEDesired mode like output 2Mhz, output 10Mhz, output 50Mhz or Input
GPIO_CNFDesired configuration, if output then Push-Pull or Open-Drain, else if input then Analog, Floating, or Pullup/Pulldown

◆ GPIO_Read()

uint8_t GPIO_Read ( const GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN )

Returns the current value of GPIO_PIN on GPIOx.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)
Returns
>= 1 if Pin is High, else 0

◆ GPIO_Set()

void GPIO_Set ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN )

Sets the pins output to HIGH or 1.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)

◆ GPIO_Toggle()

void GPIO_Toggle ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN )

Toggles the pins output. From 0 -> 1 or 1 -> 0.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)

◆ GPIO_Write()

void GPIO_Write ( GPIO_TypeDef * GPIOx,
uint16_t GPIO_PIN,
uint16_t GPIO_VALUE )

Sets the pins output to the value passed into GPIO_VALUE.

Parameters
GPIOxPort of the GPIO (Ex. GPIOA, GPIOB, ...)
GPIO_PINDesired pin on port GPIOx (Ex. GPIO_PIN_0, GPIO_PIN_1, ...)
GPIO_VALUEValue to set pin to. If >= 1 then 1, else 0