diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2020-11-20 09:55:37 -0700 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2020-11-20 09:55:37 -0700 |
commit | 3b6018348d51c77f53adca90e498d7bf268c91c9 (patch) | |
tree | 45c52307d48a74b2ae57006d3b40f9a34c61c9ce /02-usart/src/core/isr_vector.c | |
parent | d82837cb93b8675a6e589548e157f31e41aaa039 (diff) | |
download | stm32l4-3b6018348d51c77f53adca90e498d7bf268c91c9.tar.gz stm32l4-3b6018348d51c77f53adca90e498d7bf268c91c9.tar.bz2 stm32l4-3b6018348d51c77f53adca90e498d7bf268c91c9.zip |
Move around the isr_vector files to be more consistent with the C standard and the rest of the project.
Diffstat (limited to '02-usart/src/core/isr_vector.c')
-rw-r--r-- | 02-usart/src/core/isr_vector.c | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/02-usart/src/core/isr_vector.c b/02-usart/src/core/isr_vector.c deleted file mode 100644 index 9f3f560..0000000 --- a/02-usart/src/core/isr_vector.c +++ /dev/null @@ -1,107 +0,0 @@ -#include "core/isr_vector.h" -#include "core/gpio.h" - -#include "arch.h" -#include "delay.h" - -#ifdef ARCH_STM32L4 - -#define IRQ_RESERVED(n) -#define IRQ(name, n) \ - void WEAK name () { \ - unhandled_isr(n); \ - } -#include "core/isrs.i" -#undef IRQ_RESERVED -#undef IRQ - - -void isr_simple_pin_on() -{ - __IO gpio_port_t* port_b = enable_gpio(GPIO_PORT_B); - gpio_output_pin_t pin3 = set_gpio_pin_output(port_b, PIN_3); - - pin_on(pin3); -} - -#define DEFINE_UNHANDLED_ISR(n) \ - int unhandled_isr_##n() \ - { \ - unhandled_isr(n); \ - } - - -/* Flashes wildly. */ -void super_flash() -{ - static int pin_on = 0; - __IO gpio_port_t* port_b = enable_gpio(GPIO_PORT_B); - gpio_output_pin_t pin3 = set_gpio_pin_output(port_b, PIN_3); - - if (pin_on) { - pin_off(pin3); - } else { - pin_on(pin3); - } - - pin_on = !pin_on; -} - -#define IRQ_RESERVED(n) 0, -#define IRQ(name, n) name, -const void* vectors[] __attribute__((section(".vectors"))) = { - (void*)0x2000c000, /* Top of stack at top of sram1. 48k */ -#include "core/isrs.i" -}; -#undef IRQ_RESERVED -#undef IRQ - -/* Encodes the provided number as a series of flashes on the on-board - * LED. The flashes follow as such: - * - * Before the bits of the code are flashed, a rapid succession of 20 flashes - * followed by a pause will occur indicating that the next 8 flashes indicate - * the bits of the provided code. - * - * The next eight flashes are indicate either a 1 or 0 depending on the length - * of the light being on. The first flash is the least-significant bit, the next - * the second least, the third third least, etc. - * - * - A quick flash followed by a long pause indicates a 0 bit. - * - A "long" flash followed by a equally long pause indicates a 1 bit. - */ -void unhandled_isr(uint8_t number) -{ - __IO gpio_port_t* port_b = enable_gpio(GPIO_PORT_B); - gpio_output_pin_t pin3 = set_gpio_pin_output(port_b, PIN_3); - for (;;) { - for (int i = 0; i < 20; ++ i) { - pin_on(pin3); - delay(1000000); - pin_off(pin3); - delay(1000000); - } - delay(50000000); - - int n = number; - for (int i = 0; i < 8; ++ i) { - if (n & 1) { - // LSB is a 1 - pin_on(pin3); - delay(15000000); - pin_off(pin3); - delay(15000000); - } else { - // LSB is a 0 - pin_on(pin3); - delay(1000000); - pin_off(pin3); - delay(29000000); - } - - n >>= 1; - } - } -} - -#endif |