#include "bsp/bsp.h" #include "bsp/bsp_driver.h" #include "libs/logger.h" #include "os/os_types.h" #include "version.h" static void wdog_enable(void); void bsp_init(void){ wdog_enable(); debug_periph_mode_set(DEBUG_TMR1_PAUSE, TRUE); systick_open(); task_ticks_enable(); gpio_pin_init(); shark_uart_init(SHARK_UART0); } void system_reboot(void){ NVIC_SystemReset(); } void systick_close(void) { SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; } void systick_open(void) { SysTick_Config(SystemCoreClock / 1000); } u8 mcu_chip_id(u8 *buff) { u32 values[] = { REG32(0x1FFFF7E0), REG32(0x1FFFF7E8), REG32(0x1FFFF7EC), REG32(0x1FFFF7F0) }; memcpy(buff, values, sizeof(values)); return sizeof(values); } void wdog_reload(void){ #if CONFIG_DEBUG == 0 wdt_counter_reload(); #endif } static void wdog_enable(void) { #if CONFIG_DEBUG == 0 /* disable register write protection */ wdt_register_write_enable(TRUE); /* set the wdt divider value */ wdt_divider_set(WDT_CLK_DIV_4); /* set reload value timeout = reload_value * (divider / lick_freq ) (s) lick_freq = 40000 Hz divider = 4 reload_value = 30000 timeout = 30000 * (4 / 40000 ) = 3s = 3000ms */ wdt_reload_value_set(30000 - 1); /* reload wdt counter */ wdt_counter_reload(); /* enable wdt */ wdt_enable(); #endif } int wdog_set_timeout(int wdog_time) { return 0; }