/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : stm32f10x_systick.c * Author : MCD Application Team * Version : V2.0.2 * Date : 07/11/2008 * Description : This file provides all the SysTick firmware functions. ******************************************************************************** * THE PRESENT FIRMWARE 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 FIRMWARE 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) /* 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_param(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_param(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_param(IS_SYSTICK_COUNTER(SysTick_Counter)); if (SysTick_Counter == SysTick_Counter_Enable) { SysTick->CTRL |= SysTick_Counter_Enable; } else if (SysTick_Counter == SysTick_Counter_Disable) { SysTick->CTRL &= SysTick_Counter_Disable; } else /* SysTick_Counter == SysTick_Counter_Clear */ { SysTick->VAL = SysTick_Counter_Clear; } } /******************************************************************************* * 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_param(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 statusreg = 0, tmp = 0 ; FlagStatus bitstatus = RESET; /* Check the parameters */ assert_param(IS_SYSTICK_FLAG(SysTick_FLAG)); /* Get the SysTick register index */ tmp = SysTick_FLAG >> 3; if (tmp == 2) /* The flag to check is in CTRL register */ { statusreg = SysTick->CTRL; } else /* The flag to check is in CALIB register */ { statusreg = SysTick->CALIB; } if ((statusreg & ((u32)1 << SysTick_FLAG)) != (u32)RESET) { bitstatus = SET; } else { bitstatus = RESET; } return bitstatus; } /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/