diff options
Diffstat (limited to 'projects/board-test')
-rw-r--r-- | projects/board-test/uart-test.c | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/projects/board-test/uart-test.c b/projects/board-test/uart-test.c index f32fde7..6f022f4 100644 --- a/projects/board-test/uart-test.c +++ b/projects/board-test/uart-test.c @@ -1,8 +1,9 @@ /* * Test code that just sends the letters 'a' to 'z' over and - * over again using USART2. + * over again to both the USER and MGMT UARTs. If a CR is received, + * it will toggle upper/lower case of the letters being sent. * - * Toggles the BLUE LED slowly and the RED LED for every + * Toggles the BLUE LED slowly and the GREEN LED for every * character sent. */ #include "stm32f4xx_hal.h" @@ -15,20 +16,36 @@ int main() { - uint8_t c = 'a'; + uint8_t tx = 'A'; + uint8_t rx = 0; + uint8_t upper = 0; stm_init(); while (1) { - HAL_GPIO_TogglePin(LED_PORT, LED_GREEN); + led_toggle(LED_GREEN); - uart_send_char(c); + uart_send_char2(STM_UART_USER, tx + upper); + uart_send_char2(STM_UART_MGMT, tx + upper); DELAY(); - if (c++ == 'z') { - c = 'a'; - HAL_GPIO_TogglePin(LED_PORT, LED_BLUE); + if (uart_recv_char2(STM_UART_USER, &rx, 0) == HAL_OK || + uart_recv_char2(STM_UART_MGMT, &rx, 0) == HAL_OK) { + led_toggle(LED_YELLOW); + if (rx == '\r') { + upper = upper == 0 ? ('a' - 'A'):0; + } + } + + if (tx++ == 'Z') { + /* linefeed after each alphabet */ + uart_send_char2(STM_UART_USER, '\r'); + uart_send_char2(STM_UART_USER, '\n'); + uart_send_char2(STM_UART_MGMT, '\r'); + uart_send_char2(STM_UART_MGMT, '\n'); + tx = 'A'; + led_toggle(LED_BLUE); } } } |