1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
\r
2 * File Name : 75x_tb.c
\r
3 * Author : MCD Application Team
\r
4 * Date First Issued : 03/10/2006
\r
5 * Description : This file provides all the TB software functions.
\r
6 ********************************************************************************
\r
10 ********************************************************************************
\r
11 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
\r
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
\r
13 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
\r
14 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
\r
15 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
\r
16 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
17 *******************************************************************************/
\r
19 /* Includes ------------------------------------------------------------------*/
\r
21 #include "75x_mrcc.h"
\r
23 /* Private typedef -----------------------------------------------------------*/
\r
24 /* Private define ------------------------------------------------------------*/
\r
25 /* Private macro -------------------------------------------------------------*/
\r
26 /* Private variables ---------------------------------------------------------*/
\r
27 #define TB_IT_Enable_Mask 0x7FFF
\r
28 #define TB_IT_Clear_Mask 0x7FFF
\r
29 #define TB_IC_Enable 0x0004
\r
30 #define TB_ICPolarity_Set 0x0008
\r
31 #define TB_ICPolarity_Reset 0xFFF7
\r
32 #define TB_UFS_Reset 0xFFFE
\r
33 #define TB_UFS_Set 0x0001
\r
35 /* TB debug state */
\r
36 #define TB_DBGC_Set 0x0400
\r
37 #define TB_DBGC_Reset 0xFB7F
\r
39 /* TB counter state */
\r
40 #define TB_COUNTER_Reset 0x0002
\r
41 #define TB_COUNTER_Start 0x0004
\r
42 #define TB_COUNTER_Stop 0xFFFB
\r
44 #define TB_SMS_EXTCLK_Set 0x0008
\r
45 #define TB_SMS_RESETCLK_Set 0x0000
\r
47 /* TB Slave Mode Enable Set/Reset value */
\r
48 #define TB_SME_Reset 0x731B
\r
49 #define TB_SME_Set 0x0004
\r
51 /* TB Trigger Selection value */
\r
52 #define TB_TS_IC1_Set 0x0200
\r
54 /* TB SCR Masks bit */
\r
55 #define TB_SlaveModeSelection_Mask 0x7307
\r
56 #define TB_TriggerSelection_Mask 0x701F
\r
58 /* Reset Register Masks */
\r
59 #define TB_Prescaler_Reset_Mask 0x0000
\r
60 #define TB_CounterMode_Mask 0xFF8F
\r
61 #define TB_AutoReload_Reset_Mask 0xFFFF
\r
63 /* Private function prototypes -----------------------------------------------*/
\r
64 /* Private functions ---------------------------------------------------------*/
\r
66 /******************************************************************************
\r
67 * Function Name : TB_DeInit
\r
68 * Description : Deinitializes the TB peripheral registers to their default
\r
73 *******************************************************************************/
\r
74 void TB_DeInit(void)
\r
76 /* Enters and exits the TB peripheral to and from reset */
\r
77 MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TB,ENABLE);
\r
78 MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TB,DISABLE);
\r
81 /*******************************************************************************
\r
82 * Function Name : TB_Init
\r
83 * Description : Initializes TB peripheral according to the specified
\r
84 * parameters in the TB_InitStruct.
\r
85 * Input : TB_InitStruct: pointer to a TB_InitTypeDef structure that
\r
86 * contains the configuration information for the TB peripheral.
\r
89 *******************************************************************************/
\r
90 void TB_Init(TB_InitTypeDef* TB_InitStruct)
\r
92 /* Set the TB prescaler value */
\r
93 TB->PSC = TB_InitStruct->TB_Prescaler;
\r
95 /* Set the TB period value */
\r
96 TB->ARR = TB_InitStruct->TB_AutoReload;
\r
98 /* Set the corresponding counter mode */
\r
99 TB->CR = (TB->CR & TB_CounterMode_Mask) | TB_InitStruct->TB_CounterMode;
\r
101 /* Set the corresponding clock source */
\r
102 if(TB_InitStruct->TB_ClockSource == TB_ClockSource_CKRTC)
\r
104 TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask;
\r
105 TB->SCR |= TB_SMS_EXTCLK_Set | TB_SME_Set | TB_TS_IC1_Set;
\r
109 TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask;
\r
112 if(TB_InitStruct->TB_Mode == TB_Mode_IC)
\r
114 /* Set the corresponding value in TB SCR register */
\r
115 TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask;
\r
116 TB->SCR |= TB_SMS_RESETCLK_Set | TB_SME_Set | TB_TS_IC1_Set;
\r
118 /* Set the IC1 enable bit */
\r
119 TB->IMCR |= TB_IC_Enable;
\r
121 /* Set the input signal polarity */
\r
122 if (TB_InitStruct->TB_ICAPolarity == TB_ICAPolarity_Falling)
\r
124 TB->IMCR |= TB_ICPolarity_Set;
\r
128 TB->IMCR &= TB_ICPolarity_Reset;
\r
133 /*******************************************************************************
\r
134 * Function Name : TB_StructInit
\r
135 * Description : Fills each TB_InitStruct member with its default value
\r
136 * Input : TB_InitStruct : pointer to a TB_InitTypeDef structure which
\r
137 * will be initialized.
\r
140 *******************************************************************************/
\r
141 void TB_StructInit(TB_InitTypeDef *TB_InitStruct)
\r
143 TB_InitStruct->TB_Mode = TB_Mode_Timing;
\r
144 TB_InitStruct->TB_ClockSource = TB_ClockSource_CKTIM;
\r
145 TB_InitStruct->TB_CounterMode = TB_CounterMode_Up;
\r
146 TB_InitStruct->TB_ICAPolarity = TB_ICAPolarity_Rising;
\r
147 TB_InitStruct->TB_Prescaler = TB_Prescaler_Reset_Mask;
\r
148 TB_InitStruct->TB_AutoReload = TB_AutoReload_Reset_Mask;
\r
151 /*******************************************************************************
\r
152 * Function Name : TB_Cmd
\r
153 * Description : Enables or disables the TB peripheral.
\r
154 * Input : Newstate: new state of the TB peripheral. This parameter can
\r
155 * be: ENABLE or DISABLE.
\r
158 *******************************************************************************/
\r
159 void TB_Cmd(FunctionalState Newstate)
\r
161 if(Newstate == ENABLE)
\r
163 TB->CR |= TB_COUNTER_Start;
\r
167 TB->CR &= TB_COUNTER_Stop;
\r
171 /*******************************************************************************
\r
172 * Function Name : TB_ITConfig
\r
173 * Description : Enables or disables the specified TB interrupt.
\r
174 * Input : - TB_IT: specifies the TB interrupt sources to be enabled or
\r
176 * This parameter can be any combination of the following values:
\r
177 * - TB_IT_Update: TB Update interrupt
\r
178 * - TB_IT_GlobalUpdate: TB Global Update interrupt
\r
179 * - TB_IT_IC: TB Input Capture interrupt
\r
180 * - Newstate: new state of the specified TB interrupts.
\r
181 * This parameter can be: ENABLE or DISABLE.
\r
184 *******************************************************************************/
\r
185 void TB_ITConfig(u16 TB_IT, FunctionalState Newstate)
\r
187 u16 TB_IT_Enable = 0;
\r
189 TB_IT_Enable = TB_IT & TB_IT_Enable_Mask;
\r
191 if(Newstate == ENABLE)
\r
193 /* Update interrupt global source: overflow/undeflow, counter reset operation
\r
194 or slave mode controller in reset mode */
\r
195 if ((TB_IT & TB_IT_GlobalUpdate) == TB_IT_GlobalUpdate)
\r
197 TB->CR &= TB_UFS_Reset;
\r
199 /* Update interrupt source: counter overflow/underflow */
\r
200 else if ((TB_IT & TB_IT_Update) == TB_IT_Update)
\r
202 TB->CR |= TB_UFS_Set;
\r
204 /* Select and enable the interrupts requests */
\r
205 TB->RSR |= TB_IT_Enable;
\r
206 TB->RER |= TB_IT_Enable;
\r
208 /* Disable the interrupts requests */
\r
211 TB->RSR &= ~TB_IT_Enable;
\r
212 TB->RER &= ~TB_IT_Enable;
\r
216 /*******************************************************************************
\r
217 * Function Name : TB_SetPrescaler
\r
218 * Description : Sets the TB Prescaler value.
\r
219 * Input : Prescaler: specifies the TB Prescaler value.
\r
222 *******************************************************************************/
\r
223 void TB_SetPrescaler(u16 Prescaler)
\r
225 /* Sets the prescaler value */
\r
226 TB->PSC = Prescaler;
\r
229 /*******************************************************************************
\r
230 * Function Name : TB_ResetCounter
\r
231 * Description : Re-intializes the counter and generates an update of the
\r
236 *******************************************************************************/
\r
237 void TB_ResetCounter(void)
\r
239 /* Re-intializes TB counter */
\r
240 TB->CR |= TB_COUNTER_Reset;
\r
243 /*******************************************************************************
\r
244 * Function Name : TB_DebugCmd
\r
245 * Description : Enables or disables TB peripheral Debug control.
\r
246 * Input : Newstate: new state of the TB Debug control.
\r
247 * This parameter can be: ENABLE or DISABLE.
\r
250 *******************************************************************************/
\r
251 void TB_DebugCmd(FunctionalState Newstate)
\r
253 if(Newstate == ENABLE)
\r
255 TB->CR |= TB_DBGC_Set;
\r
259 TB->CR &= TB_DBGC_Reset;
\r
263 /*******************************************************************************
\r
264 * Function Name : TB_CounterModeConfig
\r
265 * Description : Configures the TB Counter Mode.
\r
266 * Input : TB_CounterMode: specifies the TB counter mode to be used.
\r
267 * This parameter can be one of the following values:
\r
268 * - TB_CounterMode_Up: TB Up Counting Mode
\r
269 * - TB_CounterMode_Down: TB Down Counting Mode
\r
270 * - TB_CounterMode_CenterAligned: TB Center Aligned Mode
\r
273 *******************************************************************************/
\r
274 void TB_CounterModeConfig(u16 TB_CounterMode)
\r
276 /* Counter mode configuration */
\r
277 TB->CR &= TB_CounterMode_Mask;
\r
278 TB->CR |= TB_CounterMode;
\r
281 /*******************************************************************************
\r
282 * Function Name : TB_SLaveModeConfig
\r
283 * Description : Configures the TB slave Mode.
\r
284 * Input : TB_SMSMode: specifies the TB slave mode to be used.
\r
285 * This parameter can be one of the following values:
\r
286 * - TB_SMSMode_Trigger: The counter starts at a rising
\r
287 * edge of the trigger
\r
288 * - TB_SMSMode_Gated: The counter clock is enabled when
\r
289 * trigger signal is high
\r
290 * - TB_SMSMode_External: The rising edge of selected trigger
\r
291 * clocks the counter
\r
292 * - TB_SMSMode_Reset: The rising edge of the selected
\r
293 * trigger signal resets the counter
\r
296 *******************************************************************************/
\r
297 void TB_SLaveModeConfig(u16 TB_SMSMode)
\r
299 TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask;
\r
300 TB->SCR |= TB_SME_Set | TB_SMSMode | TB_TS_IC1_Set;
\r
302 /*******************************************************************************
\r
303 * Function Name : TB_GetCounter
\r
304 * Description : Gets the TB Counter value.
\r
307 * Return : The TB counter register value.
\r
308 *******************************************************************************/
\r
309 u16 TB_GetCounter(void)
\r
314 /*******************************************************************************
\r
315 * Function Name : TB_GetICAP1
\r
316 * Description : Gets the TB Input capture value.
\r
319 * Return : The TB ICR1 register value.
\r
320 *******************************************************************************/
\r
321 u16 TB_GetICAP1(void)
\r
326 /*******************************************************************************
\r
327 * Function Name : TB_SetCounter
\r
328 * Description : Sets the TB Counter value.
\r
329 * Input : Counter: specifies the TB Counter value.
\r
332 *******************************************************************************/
\r
333 void TB_SetCounter(u16 Counter)
\r
338 /*******************************************************************************
\r
339 * Function Name : TB_GetFlagStatus
\r
340 * Description : Checks whether the specified TB flag is set or not.
\r
341 * Input : TB_FLAG: specifies the flag to check.
\r
342 * This parameter can be one of the following values:
\r
343 * - TB_FLAG_IC: TB Input Capture flag
\r
344 * - TB_FLAG_Update: TB update flag
\r
346 * Return : The new state of the TB_FLAG (SET or RESET).
\r
347 *******************************************************************************/
\r
348 FlagStatus TB_GetFlagStatus(u16 TB_FLAG)
\r
350 if((TB->ISR & TB_FLAG) != RESET )
\r
360 /*******************************************************************************
\r
361 * Function Name : TB_ClearFlag
\r
362 * Description : Clears the TB
\92s pending flags.
\r
363 * Input : TB_FLAG: specifies the flag to clear.
\r
364 * This parameter can be any combination of the following values:
\r
365 * - TB_FLAG_IC: TB Input Capture flag
\r
366 * - TB_FLAG_Update: TB update flag
\r
369 *******************************************************************************/
\r
370 void TB_ClearFlag(u16 TB_FLAG)
\r
372 /* Clears the flags */
\r
373 TB->ISR &= ~TB_FLAG;
\r
376 /*******************************************************************************
\r
377 * Function Name : TB_GetITStatus
\r
378 * Description : Checks whether the specified TB interrupt has occurred or not.
\r
379 * Input : TB_IT: specifies the interrupt to check.
\r
380 * This parameter can be one of the following values:
\r
381 * - TB_IT_Update: TB Update interrupt
\r
382 * - TB_IT_GlobalUpdate: TB Global Update interrupt
\r
383 * - TB_IT_IC: TB Input Capture interrupt
\r
385 * Return : The new state of the TB_IT (SET or RESET).
\r
386 *******************************************************************************/
\r
387 ITStatus TB_GetITStatus(u16 TB_IT)
\r
389 u16 TB_IT_Check = 0;
\r
391 /* Calculates the pending bits to be checked */
\r
392 TB_IT_Check = TB_IT & TB_IT_Clear_Mask;
\r
394 if((TB->ISR & TB_IT_Check) != RESET )
\r
404 /*******************************************************************************
\r
405 * Function Name : TB_ClearITPendingBit
\r
406 * Description : Clears the TB's interrupt pending bits.
\r
407 * Input : TB_IT: specifies the interrupt pending bit to clear.
\r
408 * This parameter can be any combination of the following values:
\r
409 * - TB_IT_Update: TB Update interrupt
\r
410 * - TB_IT_GlobalUpdate: TB Global Update interrupt
\r
411 * - TB_IT_IC: TB Input Capture interrupt
\r
414 *******************************************************************************/
\r
415 void TB_ClearITPendingBit(u16 TB_IT)
\r
417 u16 TB_IT_Clear = 0;
\r
419 /* Calculates the pending bits to be cleared */
\r
420 TB_IT_Clear = TB_IT & TB_IT_Clear_Mask;
\r
422 /* Clears the pending bits */
\r
423 TB->ISR &= ~TB_IT_Clear;
\r
425 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
\r