From 61dddae2e0ce2e28e8518c6513e9897d65c25766 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 2 Jun 2025 13:26:41 +0300 Subject: [PATCH] Init --- modular.json | 10 ++++++++++ wdt_timer.c | 36 ++++++++++++++++++++++++++++++++++++ wdt_timer.h | 12 ++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 modular.json create mode 100644 wdt_timer.c create mode 100644 wdt_timer.h diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..0dd1901 --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file diff --git a/wdt_timer.c b/wdt_timer.c new file mode 100644 index 0000000..ac43ccd --- /dev/null +++ b/wdt_timer.c @@ -0,0 +1,36 @@ +// +// Created by cfif on 24.02.2025. +// +#include "at32f435_437.h" +#include "wdt_timer.h" +#include "SystemDelayInterface.h" + +void Wdt_Start() { + + if (crm_flag_get(CRM_WDT_RESET_FLAG) != RESET) { + // reset from wdt + crm_flag_clear(CRM_WDT_RESET_FLAG); + } + + // 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 = 3000 + + timeout = 3000 * (4 / 40000 ) = 0.3s = 300ms + */ + wdt_reload_value_set(3000 - 1); + + // enable wdt + wdt_enable(); +} + diff --git a/wdt_timer.h b/wdt_timer.h new file mode 100644 index 0000000..7c61aed --- /dev/null +++ b/wdt_timer.h @@ -0,0 +1,12 @@ +// +// Created by cfif on 24.02.2025. +// + +#ifndef SMART_COMPONENTS_V2_WDT_TIMER_H +#define SMART_COMPONENTS_V2_WDT_TIMER_H + +#include "CmsisRtosThreadUtils.h" + +void Wdt_Start(); + +#endif //SMART_COMPONENTS_V2_WDT_TIMER_H