You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

135 lines
4.0 KiB

/*****************************************************************************
* Copyright (c) 2019, Nations Technologies Inc.
*
* All rights reserved.
* ****************************************************************************
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Nations' name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ****************************************************************************/
/**
* @file User_Systick_Config.c
* @author Nations
* @version v1.0.1
*
* @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved.
*/
#include "n32g45x.h"
#include "system_n32g45x.h"
#include "User_Systick_Config.h"
#include <stdio.h>
//uint32_t systick_count;
extern uint32_t g_tim3_count; //
/**
* @brief Systick Config
*/
void Systick_MS_Config(uint32_t sys_freq)
{
/* Setup SysTick Timer for 1 msec interrupts SystemCoreClock */
if (SysTick_Config(sys_freq / 1000))
{
/* Capture error */
while (1);
}
}
/**
* @brief Systick Disable
*/
void Systick_Disable(void)
{
SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk);
}
/**
* @brief Read User Time Since Last Set
* @param last time.
*/
uint32_t User_Time_Read(uint32_t time)
{
uint32_t diff = 0;
//if(systick_count>=time)
//{
// return systick_count-time;
//}
//return(0xFFFFFFFF-time+systick_count);
if(g_tim3_count >= time) {
diff = g_tim3_count-time;
}
else {
diff = (0xFFFFFFFF-time+g_tim3_count);
}
//printf("diff=%d\r\n", diff);
return diff;
}
/**
* @brief Set The User Time By Current Value
* @param set time.
*/
void User_Time_Set(uint32_t* time)
{
//*time=systick_count;
*time = g_tim3_count;
}
/*
*********************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: bsp_GetRunTime
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>ȡCPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>λ1ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ʾ 24.85<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>Ʒ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: CPU<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>λ1ms
*********************************************************************************************************
*/
uint32_t bsp_GetRunTime(void)
{
//static uint32_t Interval_Time;
//User_Time_Set(&Interval_Time);
//return Interval_Time;
//return systick_count;
return g_tim3_count;
}
/*
*********************************************************************************************************
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: bsp_CheckRunTime
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>㵱ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: _LastTime <EFBFBD>ϸ<EFBFBD>ʱ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD><EFBFBD>͹<EFBFBD>ȥʱ<EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ1ms
*********************************************************************************************************
*/
uint32_t bsp_CheckRunTime(uint32_t _LastTime)
{
uint32_t now_time = bsp_GetRunTime();
uint32_t time_diff;
if (now_time >= _LastTime) {
time_diff = now_time - _LastTime;
}
else {
time_diff = 0xFFFFFFFF - _LastTime + now_time;
}
return time_diff;
}