STELLARISWARE=/home/mmullins/projects/stellaris/StellarisWare
-all: led_blink.bin
+all: main.bin
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $^
-led_blink: isr_table.o led_blink.o
+main: isr_table.o main.o
$(LD) $(LDFLAGS) -o $@ $^
-led_blink.bin: led_blink
+main.bin: main
$(OBJCOPY) -O binary $< $@
.PHONY: clean
clean:
- rm -f led_blink led_blink.bin *.o
+ rm -f main main.bin *.o
-#include "led_blink.h"
+#include "main.h"
#include <lm4f120h5qr.h>
static void spin(int);
(2 << SYSCTL_RCC2_SYSDIV2_S);
SYSCTL_RCC2_R = rcc2;
- // Enable Port F
- SYSCTL_RCGCGPIO_R = 0x20;
-
- // Wait for a few clocks to let GPIO module stabilize
- spin(10);
-
- // RGB pins (PF1, 2, 3) as outputs
- GPIO_PORTF_DIR_R = 0xE;
-
- // deliver 2mA of current
- GPIO_PORTF_DR2R_R = 0xE;
-
- // set to digital mode
- GPIO_PORTF_DEN_R = 0xE;
-
- // Set RGB pins to 1
- *(GPIO_PORTF_DATA_BITS_R + 0xE) = 0xF;
-
- // Initialize our SysTick prescaler
- systick_count = initial_systick_count;
-
- // Initialize the SysTick module
- NVIC_ST_RELOAD_R = 10000000; // produce 8Hz from 80MHz clock
- NVIC_ST_CURRENT_R = 0;
- NVIC_ST_CTRL_R |= 0x7;
-
// infinite loop
for (;;) {
asm("wfi");
-
- // flip the green LED on every WFI, as an experiment to see if the
- // CPU is really sleeping.
- // Answer: it is.
- // *(GPIO_PORTF_DATA_BITS_R + 0x8) ^= 0xFF;
}
}
asm("");
}
}
-
-__attribute__((isr))
-void systick_isr() {
- if (systick_count) {
- systick_count--;
- return;
- }
-
- systick_count = initial_systick_count;
- *(GPIO_PORTF_DATA_BITS_R + 0xE) ^= 0xF;
-}