diff options
-rw-r--r-- | system-clock/linker/linker_script.ld | 4 | ||||
-rw-r--r-- | system-clock/src/isr_vector.c | 14 | ||||
-rw-r--r-- | system-clock/src/main.c | 46 |
3 files changed, 37 insertions, 27 deletions
diff --git a/system-clock/linker/linker_script.ld b/system-clock/linker/linker_script.ld index b9a8d4b..348d03b 100644 --- a/system-clock/linker/linker_script.ld +++ b/system-clock/linker/linker_script.ld @@ -22,11 +22,15 @@ SECTIONS DATA_SEGMENT_START = .; *(.data); DATA_SEGMENT_STOP = .; + + /* Align by 4 so we can optimize the copier to use uint32's. */ + . = ALIGN(0x04); } >sram1 AT>flash BSS_START = .; .bss : { *(.bss); + . = ALIGN(0x04); } > sram1 BSS_END = .; } diff --git a/system-clock/src/isr_vector.c b/system-clock/src/isr_vector.c index b432732..dd7fea9 100644 --- a/system-clock/src/isr_vector.c +++ b/system-clock/src/isr_vector.c @@ -7,11 +7,11 @@ void main(); /* These are defined in the linker script. */ -extern uint8_t INIT_DATA_VALUES; -extern uint8_t DATA_SEGMENT_START; -extern uint8_t DATA_SEGMENT_STOP; -extern uint8_t BSS_START; -extern uint8_t BSS_END; +extern uint32_t INIT_DATA_VALUES; +extern uint32_t DATA_SEGMENT_START; +extern uint32_t DATA_SEGMENT_STOP; +extern uint32_t BSS_START; +extern uint32_t BSS_END; /* @@ -20,8 +20,8 @@ extern uint8_t BSS_END; */ void init() { - uint8_t* src; - uint8_t* dest; + uint32_t* src; + uint32_t* dest; src = &INIT_DATA_VALUES; dest = &DATA_SEGMENT_START; diff --git a/system-clock/src/main.c b/system-clock/src/main.c index 5c9ecfc..da4afd0 100644 --- a/system-clock/src/main.c +++ b/system-clock/src/main.c @@ -1,5 +1,8 @@ #include "gpio.h" #include "delay.h" +#include "clock.h" + +volatile uint32_t delay_amt = 65535; /* Main function. This gets executed from the interrupt vector defined above. */ int main() @@ -10,33 +13,36 @@ int main() gpio_output_pin_t pin3 = set_gpio_pin_output(port_b, PIN_3); gpio_output_pin_t pin1 = set_gpio_pin_output(port_b, PIN_1); + /* Enable a higher clock frequency. */ + set_sys_clock(); + while(1) { /* Set the GPIO pin to high. */ pin_on(pin3); pin_off(pin1); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); /* Set the GPIO pin to low. */ pin_off(pin3); pin_on(pin1); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); - delay(65535); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); + delay(delay_amt); } } |