aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system-clock/linker/linker_script.ld4
-rw-r--r--system-clock/src/isr_vector.c14
-rw-r--r--system-clock/src/main.c46
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);
}
}