[update][wdg] update wdg demo

This commit is contained in:
jzlv 2022-10-24 19:19:28 +08:00
parent d075071312
commit 39fc0d73c8
13 changed files with 161 additions and 64 deletions

View file

@ -1,55 +0,0 @@
#include "bflb_mtimer.h"
#include "bflb_wdg.h"
#include "board.h"
struct bflb_device_s *wdt;
static volatile uint8_t wdt_int_arrived = 0;
void wdt_isr(int irq, void *arg)
{
wdt_int_arrived = 1;
bflb_wdg_compint_clear(wdt);
}
int main(void)
{
board_init();
printf("Timer watchdog interrupt test\r\n");
struct bflb_wdg_config_s wdt_cfg;
wdt_cfg.clock_source = BFLB_SYSTEM_32K_CLK;
wdt_cfg.clock_div = 0;
wdt_cfg.comp_val = 64000;
wdt = bflb_device_get_by_name("watchdog");
bflb_wdg_init(wdt, &wdt_cfg);
bflb_irq_attach(wdt->irq_num, wdt_isr, wdt);
bflb_irq_enable(wdt->irq_num);
wdt_int_arrived = 0;
bflb_wdg_start(wdt);
/* delay 1s and wdt interrupt should not trigger. */
bflb_mtimer_delay_ms(1000);
bflb_wdg_reset_countervalue(wdt);
if (wdt_int_arrived) {
printf("Error! Delay 1s, WDT interrupt should not arrive\r\n");
bflb_wdg_stop(wdt);
}
/* delay 2s will trigger WDT interrupt */
bflb_mtimer_delay_ms(2000);
bflb_wdg_reset_countervalue(wdt);
if (wdt_int_arrived) {
printf("Delay 2s, WDT interrupt arrived\r\n");
} else {
printf("Error! Delay 2s, WDT interrupt should arrive\r\n");
printf("get wdt cnt = %d\r\n", bflb_wdg_get_countervalue(wdt));
}
bflb_wdg_stop(wdt);
while (1) {
bflb_mtimer_delay_ms(1500);
}
}

View file

@ -6,4 +6,4 @@ find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
sdk_set_main_file(main.c)
project(wdg)
project(wdg_int)

View file

@ -1,5 +1,5 @@
SDK_DEMO_PATH ?= .
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../..
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../../..
export BL_SDK_BASE

View file

@ -0,0 +1,57 @@
#include "bflb_mtimer.h"
#include "bflb_wdg.h"
#include "board.h"
struct bflb_device_s *wdg;
static volatile uint8_t wdg_int_arrived = 0;
void wdg_isr(int irq, void *arg)
{
wdg_int_arrived = 1;
bflb_wdg_compint_clear(wdg);
}
int main(void)
{
board_init();
printf("Watchdog interrupt test\r\n");
struct bflb_wdg_config_s wdg_cfg;
wdg_cfg.clock_source = BFLB_SYSTEM_32K_CLK;
wdg_cfg.clock_div = 0;
wdg_cfg.comp_val = 64000;
wdg_cfg.mode = WDG_MODE_INTERRUPT;
wdg = bflb_device_get_by_name("watchdog");
bflb_wdg_init(wdg, &wdg_cfg);
bflb_irq_attach(wdg->irq_num, wdg_isr, wdg);
bflb_irq_enable(wdg->irq_num);
wdg_int_arrived = 0;
bflb_wdg_start(wdg);
/* delay 1s and wdg interrupt should not trigger. */
bflb_mtimer_delay_ms(1000);
bflb_wdg_reset_countervalue(wdg);
if (wdg_int_arrived) {
printf("Error! Delay 1s, wdg interrupt should not arrive\r\n");
bflb_wdg_stop(wdg);
} else {
printf("Delay 1s, wdg interrupt not arrive, pass\r\n");
}
/* delay 2s will trigger wdg interrupt */
bflb_mtimer_delay_ms(2000);
bflb_wdg_reset_countervalue(wdg);
if (wdg_int_arrived) {
printf("Delay 2s, wdg interrupt arrived, pass\r\n");
} else {
printf("Error! Delay 2s, wdg interrupt not arrived, count = %d\r\n",
bflb_wdg_get_countervalue(wdg));
}
bflb_wdg_stop(wdg);
while (1) {
bflb_mtimer_delay_ms(1500);
}
}

View file

@ -0,0 +1,9 @@
cmake_minimum_required(VERSION 3.15)
include(proj.conf)
find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE})
sdk_set_main_file(main.c)
project(wdg_reset)

View file

@ -0,0 +1,13 @@
SDK_DEMO_PATH ?= .
BL_SDK_BASE ?= $(SDK_DEMO_PATH)/../../../..
export BL_SDK_BASE
CHIP ?= bl616
BOARD ?= bl616dk
CROSS_COMPILE ?= riscv64-unknown-elf-
# add custom cmake definition
#cmake_definition+=-Dxxx=sss
include $(BL_SDK_BASE)/project.build

View file

@ -0,0 +1,50 @@
#include "bflb_mtimer.h"
#include "bflb_wdg.h"
#include "board.h"
struct bflb_device_s *wdg;
static volatile uint8_t wdg_int_arrived = 0;
int main(void)
{
board_init();
printf("Watchdog interrupt test\r\n");
struct bflb_wdg_config_s wdg_cfg;
wdg_cfg.clock_source = BFLB_SYSTEM_32K_CLK;
wdg_cfg.clock_div = 0;
wdg_cfg.comp_val = 64000;
wdg_cfg.mode = WDG_MODE_RESET;
wdg = bflb_device_get_by_name("watchdog");
bflb_wdg_init(wdg, &wdg_cfg);
wdg_int_arrived = 0;
bflb_wdg_start(wdg);
/* delay 1s and wdg interrupt should not trigger. */
bflb_mtimer_delay_ms(1000);
bflb_wdg_reset_countervalue(wdg);
if (wdg_int_arrived) {
printf("Error! Delay 1s, wdg not reset.\r\n");
bflb_wdg_stop(wdg);
} else {
printf("Delay 1s, wdg interrupt not arrive, pass\r\n");
}
printf("Next delay 2s, wdg will reset it.");
/* delay 2s will trigger wdg interrupt */
bflb_mtimer_delay_ms(2000);
bflb_wdg_reset_countervalue(wdg);
if (wdg_int_arrived) {
printf("Delay 2s, wdg reset, pass\r\n");
} else {
printf("Error! Delay 2s, wdg not reset, count = %d\r\n",
bflb_wdg_get_countervalue(wdg));
}
bflb_wdg_stop(wdg);
while (1) {
bflb_mtimer_delay_ms(1500);
}
}

View file

@ -0,0 +1 @@
#set(CONFIG_XXX 1)