Files
tron.asm/src/io.h

51 lines
1.0 KiB
C

#ifndef IO_H
#define IO_H
#include <stdbool.h>
#include <stm32f4xx.h>
#include "player.h"
/**
* @brief Initialize all used GPIOs and initialize their clock source.
*/
void io_init(void);
/**
* @brief Edge detection for the buttons which were initialized by io_init.
* Gets called by the systick timer.
*/
void io_process(void);
/**
* @brief Edge handler which clears the edge bit to make sure a button press gets only handled once per tick.
*
* @param btnnumber Button number
* @return True if the button has a positive edge.
*/
bool io_button_has_edge(uint8_t btnnumber);
/**
* @brief Read a value from the analog/digital converter.
*
* @return ADC_value as an unsigned int16
*/
uint16_t read_adc();
#define ADC_MASK 0x3FF
#define ADC_MAX 0x3A0
#define ADC_TOLERANCE 0x08
/**
* @brief Read the values of the 8 switches
*
* @return Returns the state of the switches, one bit per switch, high active
*/
uint8_t read_switches();
#endif /* IO_H */