117 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
 | |
|   *
 | |
|   * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
 | |
|   * You may not use this file except in compliance with the License.
 | |
|   * You may obtain a copy of the License at:
 | |
|   *
 | |
|   *        http://www.st.com/myliberty
 | |
|   *
 | |
|   * Unless required by applicable law or agreed to in writing, software 
 | |
|   * distributed under the License is distributed on an "AS IS" BASIS, 
 | |
|   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
 | |
|   * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 | |
|   * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
 | |
|   * See the License for the specific language governing permissions and
 | |
|   * limitations under the License.
 | |
|   *
 | |
| ******************************************************************************/
 | |
| /*
 | |
|  *      PROJECT:   ST25R391x firmware
 | |
|  *      $Revision: $
 | |
|  *      LANGUAGE:  ANSI C
 | |
|  */
 | |
| 
 | |
| /*! \file timer.c
 | |
|  *
 | |
|  *  \brief SW Timer implementation
 | |
|  *
 | |
|  *  \author Gustavo Patricio
 | |
|  *
 | |
|  *   This module makes use of a System Tick in millisconds and provides
 | |
|  *   an abstraction for SW timers
 | |
|  *
 | |
|  */
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * INCLUDES
 | |
| ******************************************************************************
 | |
| */
 | |
| #include "timer.h"
 | |
| 
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * LOCAL DEFINES
 | |
| ******************************************************************************
 | |
| */
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * LOCAL VARIABLES
 | |
| ******************************************************************************
 | |
| */
 | |
| 
 | |
| static uint32_t timerStopwatchTick;
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * GLOBAL FUNCTIONS
 | |
| ******************************************************************************
 | |
| */
 | |
| 
 | |
| 
 | |
| /*******************************************************************************/
 | |
| uint32_t timerCalculateTimer( uint16_t time )
 | |
| {  
 | |
|   return (osKernelGetTickCount() + time);
 | |
| }
 | |
| 
 | |
| 
 | |
| /*******************************************************************************/
 | |
| bool timerIsExpired( uint32_t timer )
 | |
| {
 | |
|   uint32_t uDiff;
 | |
|   int32_t sDiff;
 | |
|   
 | |
|   uDiff = (timer - osKernelGetTickCount());   /* Calculate the diff between the timers */
 | |
|   sDiff = uDiff;                            /* Convert the diff to a signed var      */
 | |
|   
 | |
|   /* Check if the given timer has expired already */
 | |
|   if( sDiff < 0 )
 | |
|   {
 | |
|     return true;
 | |
|   }
 | |
|   
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| 
 | |
| /*******************************************************************************/
 | |
| void timerDelay( uint16_t tOut )
 | |
| {
 | |
|   uint32_t t;
 | |
|   
 | |
|   /* Calculate the timer and wait blocking until is running */
 | |
|   t = timerCalculateTimer( tOut );
 | |
|   while( timerIsRunning(t) );
 | |
| }
 | |
| 
 | |
| 
 | |
| /*******************************************************************************/
 | |
| void timerStopwatchStart( void )
 | |
| {
 | |
|   timerStopwatchTick = osKernelGetTickCount();
 | |
| }
 | |
| 
 | |
| 
 | |
| /*******************************************************************************/
 | |
| uint32_t timerStopwatchMeasure( void )
 | |
| {
 | |
|   return (uint32_t)(osKernelGetTickCount() - timerStopwatchTick);
 | |
| }
 | |
| 
 | 
