/******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** | |
* File Name : stm32f10x_systick.c | |
* Author : MCD Application Team | |
* Date First Issued : 09/29/2006 | |
* Description : This file provides all the SysTick firmware functions. | |
******************************************************************************** | |
* History: | |
* 04/02/2007: V0.2 | |
* 02/05/2007: V0.1 | |
* 09/29/2006: V0.01 | |
******************************************************************************** | |
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS | |
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. | |
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, | |
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE | |
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING | |
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. | |
*******************************************************************************/ | |
/* Includes ------------------------------------------------------------------*/ | |
#include "stm32f10x_systick.h" | |
/* Private typedef -----------------------------------------------------------*/ | |
/* Private define ------------------------------------------------------------*/ | |
/* ---------------------- SysTick registers bit mask -------------------- */ | |
/* CTRL TICKINT Mask */ | |
#define CTRL_TICKINT_Set ((u32)0x00000002) | |
#define CTRL_TICKINT_Reset ((u32)0xFFFFFFFD) | |
/* SysTick Flag Mask */ | |
#define FLAG_Mask ((u8)0x1F) | |
/* Private macro -------------------------------------------------------------*/ | |
/* Private variables ---------------------------------------------------------*/ | |
/* Private function prototypes -----------------------------------------------*/ | |
/* Private functions ---------------------------------------------------------*/ | |
/******************************************************************************* | |
* Function Name : SysTick_CLKSourceConfig | |
* Description : Configures the SysTick clock source. | |
* Input : - SysTick_CLKSource: specifies the SysTick clock source. | |
* This parameter can be one of the following values: | |
* - SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8 | |
* selected as SysTick clock source. | |
* - SysTick_CLKSource_HCLK: AHB clock selected as | |
* SysTick clock source. | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void SysTick_CLKSourceConfig(u32 SysTick_CLKSource) | |
{ | |
/* Check the parameters */ | |
assert(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource)); | |
if (SysTick_CLKSource == SysTick_CLKSource_HCLK) | |
{ | |
SysTick->CTRL |= SysTick_CLKSource_HCLK; | |
} | |
else | |
{ | |
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8; | |
} | |
} | |
/******************************************************************************* | |
* Function Name : SysTick_SetReload | |
* Description : Sets SysTick Reload value. | |
* Input : - Reload: SysTick Reload new value. | |
* This parameter must be a number between 1 and 0xFFFFFF. | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void SysTick_SetReload(u32 Reload) | |
{ | |
/* Check the parameters */ | |
assert(IS_SYSTICK_RELOAD(Reload)); | |
SysTick->LOAD = Reload; | |
} | |
/******************************************************************************* | |
* Function Name : SysTick_CounterCmd | |
* Description : Enables or disables the SysTick counter. | |
* Input : - SysTick_Counter: new state of the SysTick counter. | |
* This parameter can be one of the following values: | |
* - SysTick_Counter_Disable: Disable counter | |
* - SysTick_Counter_Enable: Enable counter | |
* - SysTick_Counter_Clear: Clear counter value to 0 | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void SysTick_CounterCmd(u32 SysTick_Counter) | |
{ | |
/* Check the parameters */ | |
assert(IS_SYSTICK_COUNTER(SysTick_Counter)); | |
if (SysTick_Counter == SysTick_Counter_Clear) | |
{ | |
SysTick->VAL = SysTick_Counter_Clear; | |
} | |
else | |
{ | |
if (SysTick_Counter == SysTick_Counter_Enable) | |
{ | |
SysTick->CTRL |= SysTick_Counter_Enable; | |
} | |
else | |
{ | |
SysTick->CTRL &= SysTick_Counter_Disable; | |
} | |
} | |
} | |
/******************************************************************************* | |
* Function Name : SysTick_ITConfig | |
* Description : Enables or disables the SysTick Interrupt. | |
* Input : - NewState: new state of the SysTick Interrupt. | |
* This parameter can be: ENABLE or DISABLE. | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
void SysTick_ITConfig(FunctionalState NewState) | |
{ | |
/* Check the parameters */ | |
assert(IS_FUNCTIONAL_STATE(NewState)); | |
if (NewState != DISABLE) | |
{ | |
SysTick->CTRL |= CTRL_TICKINT_Set; | |
} | |
else | |
{ | |
SysTick->CTRL &= CTRL_TICKINT_Reset; | |
} | |
} | |
/******************************************************************************* | |
* Function Name : SysTick_GetCounter | |
* Description : Gets SysTick counter value. | |
* Input : None | |
* Output : None | |
* Return : SysTick current value | |
*******************************************************************************/ | |
u32 SysTick_GetCounter(void) | |
{ | |
return(SysTick->VAL); | |
} | |
/******************************************************************************* | |
* Function Name : SysTick_GetFlagStatus | |
* Description : Checks whether the specified SysTick flag is set or not. | |
* Input : - SysTick_FLAG: specifies the flag to check. | |
* This parameter can be one of the following values: | |
* - SysTick_FLAG_COUNT | |
* - SysTick_FLAG_SKEW | |
* - SysTick_FLAG_NOREF | |
* Output : None | |
* Return : None | |
*******************************************************************************/ | |
FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG) | |
{ | |
u32 tmp = 0; | |
u32 statusreg = 0; | |
FlagStatus bitstatus = RESET; | |
/* Check the parameters */ | |
assert(IS_SYSTICK_FLAG(SysTick_FLAG)); | |
/* Get the SysTick register index */ | |
tmp = SysTick_FLAG >> 5; | |
if (tmp == 1) /* The flag to check is in CTRL register */ | |
{ | |
statusreg = SysTick->CTRL; | |
} | |
else /* The flag to check is in CALIB register */ | |
{ | |
statusreg = SysTick->CALIB; | |
} | |
/* Get the flag position */ | |
tmp = SysTick_FLAG & FLAG_Mask; | |
if ((statusreg & ((u32)1 << tmp)) != (u32)RESET) | |
{ | |
bitstatus = SET; | |
} | |
else | |
{ | |
bitstatus = RESET; | |
} | |
return bitstatus; | |
} | |
/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ |