/* * Copyright (c) 2023 HPMicro * * SPDX-License-Identifier: BSD-3-Clause * */ #include #include "board.h" #include "hpm_sysctl_drv.h" #include "hpm_gptmr_drv.h" #include "hpm_debug_console.h" #define APP_BOARD_GPTMR BOARD_GPTMR #define APP_BOARD_GPTMR_CH BOARD_GPTMR_CHANNEL #define APP_BOARD_GPTMR_IRQ BOARD_GPTMR_IRQ #define APP_BOARD_GPTMR_CLOCK BOARD_GPTMR_CLK_NAME #define APP_TICK_MS (1000) static void timer_config(void); void tick_ms_isr(void) { if (gptmr_check_status(APP_BOARD_GPTMR, GPTMR_CH_RLD_STAT_MASK(APP_BOARD_GPTMR_CH))) { gptmr_clear_status(APP_BOARD_GPTMR, GPTMR_CH_RLD_STAT_MASK(APP_BOARD_GPTMR_CH)); board_led_toggle(); } } SDK_DECLARE_EXT_ISR_M(APP_BOARD_GPTMR_IRQ, tick_ms_isr); int main(void) { board_init(); board_init_led_pins(); init_gptmr_pins(APP_BOARD_GPTMR); printf("gptmr timer basic test\n"); timer_config(); } static void timer_config(void) { uint32_t gptmr_freq; gptmr_channel_config_t config; gptmr_channel_get_default_config(APP_BOARD_GPTMR, &config); gptmr_freq = clock_get_frequency(APP_BOARD_GPTMR_CLOCK); config.reload = gptmr_freq / 1000 * APP_TICK_MS; gptmr_channel_config(APP_BOARD_GPTMR, APP_BOARD_GPTMR_CH, &config, false); gptmr_start_counter(APP_BOARD_GPTMR, APP_BOARD_GPTMR_CH); gptmr_enable_irq(APP_BOARD_GPTMR, GPTMR_CH_RLD_IRQ_MASK(APP_BOARD_GPTMR_CH)); intc_m_enable_irq_with_priority(APP_BOARD_GPTMR_IRQ, 1); }