82 lines
2.2 KiB
C
82 lines
2.2 KiB
C
/*!
|
|
* \file hal_sleep.c
|
|
*
|
|
* \brief Target xc6xxx hal spi implementation
|
|
*
|
|
* \copyright Revised BSD License, see section \ref LICENSE.
|
|
*
|
|
* \code
|
|
*
|
|
* _ __ _ ________ _
|
|
* | |/ /(_)___ / ____/ /_ (_)___
|
|
* | // / __ \/ / / __ \/ / __ \
|
|
* / |/ / / / / /___/ / / / / /_/ /
|
|
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
|
* /_/
|
|
* (C) 2022-2025 XinChip
|
|
*
|
|
* \endcode
|
|
*
|
|
* \author ( XinChip ) Alex-J
|
|
*
|
|
* \author ( XinChip )
|
|
*/
|
|
|
|
/* ------------------------------------------------------------------------------------------------
|
|
* Includes
|
|
* ------------------------------------------------------------------------------------------------
|
|
*/
|
|
#include "hal_timer.h"
|
|
#include "OSAL_Clock.h"
|
|
#include "xc_drv_timer.h"
|
|
|
|
uint32 sys_tick_cnt;
|
|
|
|
__RAM_CODE void timer1_callback(void *context)
|
|
{
|
|
sys_tick_cnt++;
|
|
}
|
|
|
|
__RAM_CODE void osal_timer_init(void)
|
|
{
|
|
/* timer1 init */
|
|
if (cpr_ctlapbclken_grctl__timer_pclk_en__getf() != ENABLE)
|
|
cpr_ctlapbclken_grctl__timer_pclk_en__setf(ENABLE);
|
|
|
|
cpr_timer1_clk_ctl__timer_clksel__setf(TIMER_CLK_SRC_32M_DIV);
|
|
cpr_timer1_clk_ctl__timer_clk0_div__setf(TIMER_DIV_CLK_16MHzOr16K);
|
|
cpr_timer1_clk_ctl__timer_clk1_div__setf(TIMER_DIV_CLK_16MHzOr16K);
|
|
|
|
cpr_lp_ctl__timer_sysclk_sel__setf(ENABLE);
|
|
timer_tcr__tes__setf(OSAL_TIMER, TIMER_TCR_TES_DISABLE);
|
|
timer_tcr__tms__setf(OSAL_TIMER, TIMER_MODE_CYCLE);
|
|
|
|
/* value set */
|
|
timer_tlc_set(OSAL_TIMER, 10000); //625us = 10000tick
|
|
|
|
/* timer1 start */
|
|
NVIC_EnableIRQ(TIMER1_IRQn);
|
|
NVIC_SetPriority(TIMER1_IRQn,1);
|
|
timer_tcr__tim__setf(OSAL_TIMER, TIMER_TCR_TIM_DISABLE);
|
|
timer_tcr__tes__setf(OSAL_TIMER, TIMER_TCR_TES_ENABLE);
|
|
|
|
return;
|
|
}
|
|
|
|
__RAM_CODE void osal_timer_start(void)
|
|
{
|
|
NVIC_EnableIRQ(TIMER1_IRQn);
|
|
timer_tcr__tim__setf(OSAL_TIMER, TIMER_TCR_TIM_DISABLE);
|
|
timer_tcr__tes__setf(OSAL_TIMER, TIMER_TCR_TES_ENABLE);
|
|
}
|
|
|
|
__RAM_CODE void osal_timer_tick_set(uint32 tick)
|
|
{
|
|
sys_tick_cnt = tick;
|
|
}
|
|
|
|
__RAM_CODE uint32 getMcuPrecisionCount(void)
|
|
{
|
|
return sys_tick_cnt;
|
|
}
|