diff options
Diffstat (limited to '02-usart/src')
-rw-r--r-- | 02-usart/src/main.c | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/02-usart/src/main.c b/02-usart/src/main.c index 4602fd3..6d22486 100644 --- a/02-usart/src/main.c +++ b/02-usart/src/main.c @@ -5,6 +5,8 @@ #include "core/gpio.h" #include "core/system.h" #include "core/usart.h" +#include "core/nvic.h" + #include "delay.h" #include "mem.h" #include "spin.h" @@ -59,20 +61,48 @@ int main() set_system_clock_MHz(80); setup_usart2(115200); + regset(USART2.c_r1, usart_txeie, 1); + regset(USART2.c_r1, usart_rxneie, 1); usart_set_enabled(&USART2, USART_ENABLE_TX | USART_ENABLE_RX); + USART2.td_r = (uint8_t) 0x61; + + __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); + + usart_printf(&USART2, "\nUSART2.c_r1: %p\n", USART2.c_r1); + usart_printf(&USART2, "NVIC intlinesnum: %d\n", + regget(NVIC.ict_r, nvic_intlinesnum)); + + int off = 1; + int last; + for(;;) { + int next = USART2.is_r & usart_rxne; + volatile int y = USART2.rd_r; + if (next) + USART2.td_r = y; + if (last != next) { + if (off) { + pin_on(pin3); + } else { + pin_off(pin3); + } + off = !off; + } + } - usart_printf(&USART2, "Start Configuring Countdown!\n"); + // usart_printf(&USART2, "Start Configuring Countdown!\n"); /* Set the countdown to start from 1,000,0000. */ - SCB.strv_r = 10000000; + // SCB.strv_r = 10000000; /* Enable interrupts. */ - regset(SCB.stcs_r, scb_tickint, 1); + // regset(SCB.stcs_r, scb_tickint, 1); /* Start the systick. */ - regset(SCB.stcs_r, scb_enable, 1); + // regset(SCB.stcs_r, scb_enable, 1); - usart_printf(&USART2, "Start Countdown Started!\n"); + // usart_printf(&USART2, "Start Countdown Started!\n"); } #endif |