~ruther/stm32h747i-disco-usb-image-viewer

ref: 07efcf618615aa92fb78e2b4b9ceb46270523ab4 stm32h747i-disco-usb-image-viewer/include/pin.h -rw-r--r-- 1.4 KiB
07efcf61 — Rutherther feat: implement application for receiving images 3 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdlib.h>
#include <stdint.h>
#include <stm32h7xx.h>

#ifndef PIN_H
#define PIN_H

typedef struct {
  GPIO_TypeDef* gpio;
  uint8_t pin;
} pin_t;

typedef enum {
  NONE = 0,
  PULLUP = 1,
  PULLDOWN = 2,
  PULL_RESERVED = 3
} pin_pullmode_t;

typedef enum {
  INPUT = 0,
  OUTPUT = 1,
  ALTERNATE = 2,
  ANALOG = 3
} pin_mode_t;

typedef enum {
  LOW_SPEED,
  MEDIUM_SPEED,
  HIGH_SPEED,
  VERY_HIGH_SPEED
} pin_speedmode_t;

void pin_init(pin_t* pin, GPIO_TypeDef* gpio, uint8_t pin_index);

void pin_mode(pin_t* pin, pin_mode_t mode);
void pin_pull(pin_t* pin, pin_pullmode_t mode);
void pin_speed(pin_t* pin, pin_speedmode_t mode);

// Reads input, not output!
uint8_t pin_read(pin_t* pin);
void pin_write(pin_t* pin, uint8_t val);
void pin_toggle(pin_t* pin);
void pin_set(pin_t* pin);
void pin_reset(pin_t* pin);

void pin_into_pulldown(pin_t* pin);
void pin_into_pullup(pin_t* pin);
void pin_into_no_pull(pin_t* pin);

void pin_into_output(pin_t* pin);
void pin_into_output_pushpull(pin_t* pin);
void pin_into_output_opendrain(pin_t* pin);
void pin_into_pushpull(pin_t* pin);
void pin_into_opendrain(pin_t* pin);

void pin_into_input(pin_t* pin);
void pin_into_input_highspeed(pin_t* pin);

void pin_into_alternate(pin_t* pin, uint8_t alternate);
void pin_into_alternate_highspeed(pin_t* pin, uint8_t alternate);

void pin_into_highspeed(pin_t* pin);

#endif // PIN_H
Do not follow this link