]> git.sur5r.net Git - freertos/blob
1bae7bd004a5a5dd92b3c3f7880ae8bc3c887e23
[freertos] /
1 /**\r
2   ******************************************************************************\r
3   * @file    tsl_time_stm8tl5x.c\r
4   * @author  MCD Application Team\r
5   * @version V1.3.2\r
6   * @date    22-January-2013\r
7   * @brief   This file contains all functions to manage the timing with STM8TL5x products.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>\r
12   *\r
13   * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");\r
14   * You may not use this file except in compliance with the License.\r
15   * You may obtain a copy of the License at:\r
16   *\r
17   *        http://www.st.com/software_license_agreement_liberty_v2\r
18   *\r
19   * Unless required by applicable law or agreed to in writing, software\r
20   * distributed under the License is distributed on an "AS IS" BASIS,\r
21   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
22   * See the License for the specific language governing permissions and\r
23   * limitations under the License.\r
24   *\r
25   ******************************************************************************\r
26   */\r
27 \r
28 /* Includes ------------------------------------------------------------------*/\r
29 #include "tsl_time_stm8tl5x.h"\r
30 #include "tsl_time.h"\r
31 #include "stm8tl5x_it.h"\r
32 \r
33 /* Private typedefs ----------------------------------------------------------*/\r
34 /* Private defines -----------------------------------------------------------*/\r
35 /* Private macros ------------------------------------------------------------*/\r
36 /* Private variables ---------------------------------------------------------*/\r
37 /* Private functions prototype -----------------------------------------------*/\r
38 \r
39 /**\r
40   * @brief  Initialization of the timing module to generate periodic interruptions\r
41   * @warning The CPU frequency must be equal to 16 MHz\r
42   * @param  None\r
43   * @retval Status Return TSL_STATUS_ERROR if the CPU freq in uncorrect.\r
44   */\r
45 TSL_Status_enum_T TSL_tim_Init(void)\r
46 {\r
47   CLK->PCKENR1 |= CLK_PCKENR1_TIM4; // The peripheral clock are not enable by default\r
48 \r
49   if (CLK->CKDIVR != 0x00) // The CPU frequency must be equal to 16 MHz\r
50   {\r
51     return TSL_STATUS_ERROR;\r
52   }\r
53 \r
54   TIM4->SR1 = 0; // Clear overflow flag\r
55 \r
56 #if (TSLPRM_TICK_FREQ == 2000)\r
57   TIM4->PSCR = 6; // 16 MHz / 64 = 4 us clock\r
58   TIM4->ARR = 124; // 125 * 4 us = 0.5 ms\r
59 #endif\r
60 \r
61 #if (TSLPRM_TICK_FREQ == 1000)\r
62   TIM4->PSCR = 6; // 16 MHz / 64 = 4 us clock\r
63   TIM4->ARR = 249; // 250 * 4 us = 1 ms\r
64 #endif\r
65 \r
66 #if (TSLPRM_TICK_FREQ == 500)\r
67   TIM4->PSCR = 8; // 16 MHz / 256 = 16 us clock\r
68   TIM4->ARR = 124; // 125 *  16 us = 2 ms\r
69 #endif\r
70 \r
71 #if (TSLPRM_TICK_FREQ == 250)\r
72   TIM4->PSCR = 8; // 16 MHz / 256 = 16 us clock\r
73   TIM4->ARR = 249; // 250 *  16 us = 4 ms\r
74 #endif\r
75 \r
76 #if (TSLPRM_TICK_FREQ == 125)\r
77   TIM4->PSCR = 10; // 16 MHz / 1024 = 64 us clock\r
78   TIM4->ARR = 124; // 125 *  64 us = 8 ms\r
79 #endif\r
80 \r
81   TIM4->IER = 0x01; // Enable interrupt\r
82   TIM4->CR1 = 0x01; // Start timer\r
83 \r
84   return TSL_STATUS_OK;\r
85 }\r
86 \r
87 \r
88 /**\r
89   * @brief  Interrupt handler for TIM4 dedicated to ECS\r
90   * @param  None\r
91   * @retval None\r
92   */\r
93 #if defined(_COSMIC_)\r
94 // 'svlreg option' is added to force the saving of the virtual long register\r
95 @svlreg INTERRUPT_HANDLER(TSL_Timer_ISR, 25)\r
96 #else\r
97 INTERRUPT_HANDLER(TSL_Timer_ISR, 25)\r
98 #endif\r
99 {\r
100   TIM4->SR1 &= (uint8_t)(~TIM4_SR1_UIF);\r
101   TSL_tim_ProcessIT();\r
102 }\r
103 \r
104 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r