stm32f10x_systick.c
上传用户:yj_qqy
上传日期:2017-01-28
资源大小:2911k
文件大小:7k
源码类别:

uCOS

开发平台:

C/C++

  1. /******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
  2. * File Name          : stm32f10x_systick.c
  3. * Author             : MCD Application Team
  4. * Version            : V2.0.2
  5. * Date               : 07/11/2008
  6. * Description        : This file provides all the SysTick firmware functions.
  7. ********************************************************************************
  8. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  9. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
  10. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
  11. * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
  12. * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
  13. * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  14. *******************************************************************************/
  15. /* Includes ------------------------------------------------------------------*/
  16. #include "stm32f10x_systick.h"
  17. /* Private typedef -----------------------------------------------------------*/
  18. /* Private define ------------------------------------------------------------*/
  19. /* ---------------------- SysTick registers bit mask -------------------- */
  20. /* CTRL TICKINT Mask */
  21. #define CTRL_TICKINT_Set      ((u32)0x00000002)
  22. #define CTRL_TICKINT_Reset    ((u32)0xFFFFFFFD)
  23. /* Private macro -------------------------------------------------------------*/
  24. /* Private variables ---------------------------------------------------------*/
  25. /* Private function prototypes -----------------------------------------------*/
  26. /* Private functions ---------------------------------------------------------*/
  27. /*******************************************************************************
  28. * Function Name  : SysTick_CLKSourceConfig
  29. * Description    : Configures the SysTick clock source.
  30. * Input          : - SysTick_CLKSource: specifies the SysTick clock source.
  31. *                    This parameter can be one of the following values:
  32. *                       - SysTick_CLKSource_HCLK_Div8: AHB clock divided by 8
  33. *                         selected as SysTick clock source.
  34. *                       - SysTick_CLKSource_HCLK: AHB clock selected as
  35. *                         SysTick clock source.
  36. * Output         : None
  37. * Return         : None
  38. *******************************************************************************/
  39. void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
  40. {
  41.   /* Check the parameters */
  42.   assert_param(IS_SYSTICK_CLK_SOURCE(SysTick_CLKSource));
  43.   if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
  44.   {
  45.     SysTick->CTRL |= SysTick_CLKSource_HCLK;
  46.   }
  47.   else
  48.   {
  49.     SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
  50.   }
  51. }
  52. /*******************************************************************************
  53. * Function Name  : SysTick_SetReload
  54. * Description    : Sets SysTick Reload value.
  55. * Input          : - Reload: SysTick Reload new value.
  56. *                    This parameter must be a number between 1 and 0xFFFFFF.
  57. * Output         : None
  58. * Return         : None
  59. *******************************************************************************/
  60. void SysTick_SetReload(u32 Reload)
  61. {
  62.   /* Check the parameters */
  63.   assert_param(IS_SYSTICK_RELOAD(Reload));
  64.   SysTick->LOAD = Reload;
  65. }
  66. /*******************************************************************************
  67. * Function Name  : SysTick_CounterCmd
  68. * Description    : Enables or disables the SysTick counter.
  69. * Input          : - SysTick_Counter: new state of the SysTick counter.
  70. *                    This parameter can be one of the following values:
  71. *                       - SysTick_Counter_Disable: Disable counter
  72. *                       - SysTick_Counter_Enable: Enable counter
  73. *                       - SysTick_Counter_Clear: Clear counter value to 0
  74. * Output         : None
  75. * Return         : None
  76. *******************************************************************************/
  77. void SysTick_CounterCmd(u32 SysTick_Counter)
  78. {
  79.   /* Check the parameters */
  80.   assert_param(IS_SYSTICK_COUNTER(SysTick_Counter));
  81.   if (SysTick_Counter == SysTick_Counter_Enable)
  82.   {
  83.     SysTick->CTRL |= SysTick_Counter_Enable;
  84.   }
  85.   else if (SysTick_Counter == SysTick_Counter_Disable) 
  86.   {
  87.     SysTick->CTRL &= SysTick_Counter_Disable;
  88.   }
  89.   else /* SysTick_Counter == SysTick_Counter_Clear */
  90.   {
  91.     SysTick->VAL = SysTick_Counter_Clear;
  92.   }    
  93. }
  94. /*******************************************************************************
  95. * Function Name  : SysTick_ITConfig
  96. * Description    : Enables or disables the SysTick Interrupt.
  97. * Input          : - NewState: new state of the SysTick Interrupt.
  98. *                    This parameter can be: ENABLE or DISABLE.
  99. * Output         : None
  100. * Return         : None
  101. *******************************************************************************/
  102. void SysTick_ITConfig(FunctionalState NewState)
  103. {
  104.   /* Check the parameters */
  105.   assert_param(IS_FUNCTIONAL_STATE(NewState));
  106.   if (NewState != DISABLE)
  107.   {
  108.     SysTick->CTRL |= CTRL_TICKINT_Set;
  109.   }
  110.   else
  111.   {
  112.     SysTick->CTRL &= CTRL_TICKINT_Reset;
  113.   }
  114. }
  115. /*******************************************************************************
  116. * Function Name  : SysTick_GetCounter
  117. * Description    : Gets SysTick counter value.
  118. * Input          : None
  119. * Output         : None
  120. * Return         : SysTick current value
  121. *******************************************************************************/
  122. u32 SysTick_GetCounter(void)
  123. {
  124.   return(SysTick->VAL);
  125. }
  126. /*******************************************************************************
  127. * Function Name  : SysTick_GetFlagStatus
  128. * Description    : Checks whether the specified SysTick flag is set or not.
  129. * Input          : - SysTick_FLAG: specifies the flag to check.
  130. *                    This parameter can be one of the following values:
  131. *                       - SysTick_FLAG_COUNT
  132. *                       - SysTick_FLAG_SKEW
  133. *                       - SysTick_FLAG_NOREF
  134. * Output         : None
  135. * Return         : None
  136. *******************************************************************************/
  137. FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG)
  138. {
  139.   u32 statusreg = 0, tmp = 0 ;
  140.   FlagStatus bitstatus = RESET;
  141.   /* Check the parameters */
  142.   assert_param(IS_SYSTICK_FLAG(SysTick_FLAG));
  143.   /* Get the SysTick register index */
  144.   tmp = SysTick_FLAG >> 3;
  145.   if (tmp == 2) /* The flag to check is in CTRL register */
  146.   {
  147.     statusreg = SysTick->CTRL;
  148.   }
  149.   else          /* The flag to check is in CALIB register */
  150.   {
  151.     statusreg = SysTick->CALIB;
  152.   }
  153.   if ((statusreg & ((u32)1 << SysTick_FLAG)) != (u32)RESET)
  154.   {
  155.     bitstatus = SET;
  156.   }
  157.   else
  158.   {
  159.     bitstatus = RESET;
  160.   }
  161.   return bitstatus;
  162. }
  163. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/