#include "project.h" #define N_OUTPUTS 8 static const uint32_t output_bank[N_OUTPUTS] = { GPIOC, GPIOA, GPIOA, GPIOA, GPIOD, GPIOD, GPIOD, GPIOD}; static const uint32_t output[N_OUTPUTS] = { GPIO9, GPIO8, GPIO11, GPIO12, GPIO0, GPIO1, GPIO2, GPIO3}; void output_set (unsigned r) { if (r >= N_OUTPUTS) return; gpio_set (output_bank[r], output[r]); } void output_clear (unsigned r) { if (r >= N_OUTPUTS) return; gpio_clear (output_bank[r], output[r]); } void outputs_set (unsigned v) { unsigned r; for (r = 0; r < N_OUTPUTS; r++, v >>= 1) { if (v & 1) output_set (r); else output_clear (r); } } void output_write (unsigned r, unsigned v) { if (v) output_set (r); else output_clear (r); } void outputs_init (void) { unsigned r; for (r = 0; r < N_OUTPUTS; ++r) gpio_set_mode (output_bank[r], GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_PUSHPULL, output[r]); }