blob: 92edaf15863b325d1f3d4526401eadb833a659ee [file] [log] [blame]
Brian Silverman18b01642013-12-13 21:12:25 -08001#include "cape/led.h"
2
3#include <STM32F2XX.h>
4
5#include "cape/util.h"
6
7#define LED_SPEED 0
8
9// DB = PC3
10// Z = PB1
11// HB = PB4
12// ERR = PB11
13
14static void do_led_set(GPIO_TypeDef *port, int number, int on) {
Brian Silverman391beca2013-12-28 22:32:48 -080015 // The LEDs are hooked up between 3.3V and the GPIO pin, so these are
16 // backwards.
Brian Silverman18b01642013-12-13 21:12:25 -080017 if (on) {
Brian Silverman391beca2013-12-28 22:32:48 -080018 gpio_off(port, number);
Brian Silvermaned183e62013-12-18 15:51:16 -080019 } else {
Brian Silverman391beca2013-12-28 22:32:48 -080020 gpio_on(port, number);
Brian Silverman18b01642013-12-13 21:12:25 -080021 }
22}
23
24void led_set(enum LED led, int on) {
25 switch (led) {
26 case LED_ERR:
27 do_led_set(GPIOB, 11, on);
28 break;
29 case LED_HB:
30 do_led_set(GPIOB, 4, on);
31 break;
32 case LED_Z:
33 do_led_set(GPIOB, 1, on);
34 break;
35 case LED_DB:
36 do_led_set(GPIOC, 3, on);
37 break;
38 }
39}
40
41void led_init(void) {
42 gpio_setup_out(GPIOB, 11, LED_SPEED);
43 led_set(LED_ERR, 0);
44 gpio_setup_out(GPIOB, 4, LED_SPEED);
45 led_set(LED_HB, 0);
46 gpio_setup_out(GPIOB, 1, LED_SPEED);
47 led_set(LED_Z, 0);
48 gpio_setup_out(GPIOC, 3, LED_SPEED);
49 led_set(LED_DB, 0);
50}