diff options
Diffstat (limited to 'stm32/app/main.c')
-rw-r--r-- | stm32/app/main.c | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/stm32/app/main.c b/stm32/app/main.c new file mode 100644 index 0000000..d834802 --- /dev/null +++ b/stm32/app/main.c @@ -0,0 +1,85 @@ +#include "project.h" + +#define WIGGLE GPIO4 +#define WIGGLE_PORT GPIOB + +int +main (void) +{ + unsigned cnt = 0; + + //nvic_set_priority_grouping(NVIC_PriorityGroup_4); + + /*set up pll */ + rcc_clock_setup_in_hse_8mhz_out_72mhz(); + + /*turn on clocks which aren't done elsewhere */ + rcc_periph_clock_enable (RCC_GPIOA); + rcc_periph_clock_enable (RCC_GPIOB); + rcc_periph_clock_enable (RCC_GPIOC); + rcc_periph_clock_enable (RCC_AFIO); + + + /*Adjust interrupt priorities so that taco trumps uarts trumps timer trumps dma */ + nvic_set_priority (TACHO_IRQ, 0x20); + nvic_set_priority (NVIC_USART1_IRQ, 0x40); + nvic_set_priority (NVIC_SYSTICK_IRQ, 0x60); + nvic_set_priority (NVIC_DMA1_CHANNEL6_IRQ, 0x80); + + /* Claw some pins pack */ + gpio_primary_remap (AFIO_MAPR_SWJ_CFG_JTAG_OFF_SW_ON, 0); + + dwt_enable_cycle_counter(); + + ticker_init(); + + + led_init(); + usart_init(); + i2cp_init(); + + printf ("Hello world\n"); + + led_set(); + tacho_init(); + + delay_ms (100); + + + oled1_init(); + oled2_init(); + + gauge_init(); + + + + font8x8_put_str (vram_1, "ABC fish soup!", 0, 0); + + MAP_OUTPUT_PP (WIGGLE); + + + for (;;) { + char buf[20]; + + sprintf (buf, "%6u rpm", (unsigned) raw_tacho); + font8x16_put_str (vram_1, buf, 30, 8); + + sprintf (buf, "%8d", cnt++); + font8x8_put_str (vram_1, buf, 0, 24); + + sprintf (buf, "%6d", cnt >> 4); + font21x32_put_str (vram_2, buf, 0); + + + if (cnt & 1) + SET (WIGGLE); + else + CLEAR (WIGGLE); + + + gauge_test(); + + } + + return 0; +} |