diff options
author | Karl Palsson <karlp@tweak.net.au> | 2017-10-20 21:56:28 +0000 |
---|---|---|
committer | Karl Palsson <karlp@tweak.net.au> | 2017-10-24 23:48:28 +0000 |
commit | a549503ade8bb29d7234c3d4c61ed6cab433dd0b (patch) | |
tree | e572c727dfabff11842b91eb064d468077d44ca1 /tests/uart-basic/main-stm32f4-disco.c | |
parent | cb376f395911d6face5a107cd4c543d7a03249b8 (diff) | |
download | olsndot-a549503ade8bb29d7234c3d4c61ed6cab433dd0b.tar.gz olsndot-a549503ade8bb29d7234c3d4c61ed6cab433dd0b.tar.bz2 olsndot-a549503ade8bb29d7234c3d4c61ed6cab433dd0b.zip |
basic uart: f4 and f3, prepping tests for usart-v2
use parity to at least test a little more of the common code
Diffstat (limited to 'tests/uart-basic/main-stm32f4-disco.c')
-rw-r--r-- | tests/uart-basic/main-stm32f4-disco.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/uart-basic/main-stm32f4-disco.c b/tests/uart-basic/main-stm32f4-disco.c new file mode 100644 index 0000000..86d9b4a --- /dev/null +++ b/tests/uart-basic/main-stm32f4-disco.c @@ -0,0 +1,63 @@ +/* + * Oct 2017 Karl Palsson <karlp@tweak.net.au> + */ + +#include <errno.h> +#include <stdio.h> +#include <unistd.h> +#include <libopencm3/cm3/nvic.h> +#include <libopencm3/stm32/gpio.h> +#include <libopencm3/stm32/rcc.h> +#include <libopencm3/stm32/usart.h> + +#include "uart-basic.h" + +#define LED_DISCO_GREEN_PORT GPIOD +#define LED_DISCO_GREEN_PIN GPIO12 + +void usart2_isr(void) +{ + ub_irq_handler(); +} + +static void board_init(void) { + rcc_periph_clock_enable(RCC_GPIOA); + gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO2|GPIO3); + /* usart is AF7 */ + gpio_set_af(GPIOA, GPIO_AF7, GPIO2|GPIO3); +} + +int main(void) +{ + int i; + int j = 0; + rcc_clock_setup_hse_3v3(&rcc_hse_8mhz_3v3[RCC_CLOCK_3V3_168MHZ]); + rcc_periph_clock_enable(RCC_GPIOD); + board_init(); + struct ub_hw ub = { + .uart = USART2, + .uart_nvic = NVIC_USART2_IRQ, + .uart_rcc = RCC_USART2, + }; + ub_init(&ub); + printf("hi guys!\n"); + /* green led for ticking */ + gpio_mode_setup(LED_DISCO_GREEN_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, + LED_DISCO_GREEN_PIN); + + + while (1) { + gpio_toggle(LED_DISCO_GREEN_PORT, LED_DISCO_GREEN_PIN); + + for (i = 0; i < 0x800000; i++) { /* Wait a bit. */ + __asm__("NOP"); + } + ub_task(); + gpio_toggle(LED_DISCO_GREEN_PORT, LED_DISCO_GREEN_PIN); + for (i = 0; i < 0x800000; i++) { /* Wait a bit. */ + __asm__("NOP"); + } + } + + return 0; +} |