42void gpio_init(uint32_t port, uint32_t pins,
enum gpio_flags flags)
44 switch (flags & 0x7) {
45 case GPIO_FLAG_GPINPUT:
49 case GPIO_FLAG_GPOUTPUT:
53 case GPIO_FLAG_PERIPHA:
54 PIO_ABCDSR1(port) &= ~pins;
55 PIO_ABCDSR2(port) &= ~pins;
58 case GPIO_FLAG_PERIPHB:
59 PIO_ABCDSR1(port) |= pins;
60 PIO_ABCDSR2(port) &= ~pins;
63 case GPIO_FLAG_PERIPHC:
64 PIO_ABCDSR1(port) &= ~pins;
65 PIO_ABCDSR2(port) |= pins;
68 case GPIO_FLAG_PERIPHD:
69 PIO_ABCDSR1(port) |= pins;
70 PIO_ABCDSR2(port) |= pins;
75 if (flags & GPIO_FLAG_OPEN_DRAIN) {
76 PIO_MDER(port) = pins;
78 PIO_MDDR(port) = pins;
81 if (flags & GPIO_FLAG_PULL_UP) {
82 PIO_PUER(port) = pins;
84 PIO_PUDR(port) = pins;
void gpio_init(uint32_t port, uint32_t pins, enum gpio_flags flags)
Initialize GPIO pins.