diff --git a/application.c b/application.c index b956332..208b670 100644 --- a/application.c +++ b/application.c @@ -332,19 +332,6 @@ void main(void) { rcc_clock_setup_in_hse_8mhz_out_72mhz(); // use 8 MHz high speed external clock to generate 72 MHz internal clock -#if DEBUG - // enable functionalities for easier debug - DBGMCU_CR |= DBGMCU_CR_IWDG_STOP; // stop independent watchdog counter when code is halted - DBGMCU_CR |= DBGMCU_CR_WWDG_STOP; // stop window watchdog counter when code is halted - DBGMCU_CR |= DBGMCU_CR_STANDBY; // allow debug also in standby mode (keep digital part and clock powered) - DBGMCU_CR |= DBGMCU_CR_STOP; // allow debug also in stop mode (keep clock powered) - DBGMCU_CR |= DBGMCU_CR_SLEEP; // allow debug also in sleep mode (keep clock powered) -#else - // setup watchdog to reset in case we get stuck (i.e. when an error occurred) - iwdg_set_period_ms(WATCHDOG_PERIOD); // set independent watchdog period - iwdg_start(); // start independent watchdog -#endif - board_setup(); // setup board uart_setup(); // setup USART (for printing) usb_cdcacm_setup(); // setup USB CDC ACM (for printing and DFU) @@ -359,6 +346,26 @@ void main(void) ir_nec_setup(true); // setup ID NEC code decoder printf("\nwelcome to the CuVoodoo STM32F1 spark strober\n"); // print welcome message + // setup RTC + printf("setup internal RTC: "); + rtc_auto_awake(RCC_LSE, 32768-1); // ensure internal RTC is on, uses the 32.678 kHz LSE, and the prescale is set to our tick speed, else update backup registers accordingly (power off the micro-controller for the change to take effect) + rtc_interrupt_enable(RTC_SEC); // enable RTC interrupt on "seconds" + nvic_enable_irq(NVIC_RTC_IRQ); // allow the RTC to interrupt + printf("OK\n"); + +#if DEBUG + // enable functionalities for easier debug + DBGMCU_CR |= DBGMCU_CR_IWDG_STOP; // stop independent watchdog counter when code is halted + DBGMCU_CR |= DBGMCU_CR_WWDG_STOP; // stop window watchdog counter when code is halted + DBGMCU_CR |= DBGMCU_CR_STANDBY; // allow debug also in standby mode (keep digital part and clock powered) + DBGMCU_CR |= DBGMCU_CR_STOP; // allow debug also in stop mode (keep clock powered) + DBGMCU_CR |= DBGMCU_CR_SLEEP; // allow debug also in sleep mode (keep clock powered) +#else + // setup watchdog to reset in case we get stuck (i.e. when an error occurred) + iwdg_set_period_ms(WATCHDOG_PERIOD); // set independent watchdog period + iwdg_start(); // start independent watchdog +#endif + #if !(DEBUG) // show watchdog information printf("setup watchdog: %.2fs",WATCHDOG_PERIOD/1000.0); @@ -371,12 +378,6 @@ void main(void) } #endif - // setup RTC - printf("setup internal RTC: "); - rtc_auto_awake(RCC_LSE, 32768-1); // ensure internal RTC is on, uses the 32.678 kHz LSE, and the prescale is set to our tick speed, else update backup registers accordingly (power off the micro-controller for the change to take effect) - rtc_interrupt_enable(RTC_SEC); // enable RTC interrupt on "seconds" - nvic_enable_irq(NVIC_RTC_IRQ); // allow the RTC to interrupt - printf("OK\n"); // setup terminal terminal_prefix = ""; // set default prefix