182 lines
6.6 KiB
C
182 lines
6.6 KiB
C
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
|
|
* File Name : stm32w108_systick.c
|
|
* Author : MCD Application Team
|
|
* Version : V2.0.3
|
|
* Date : 09/22/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 "stm32w_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****/
|