| /******************** (C) COPYRIGHT 2006 STMicroelectronics ******************** | |
| * File Name : 75x_tb.c | |
| * Author : MCD Application Team | |
| * Date First Issued : 03/10/2006 | |
| * Description : This file provides all the TB software functions. | |
| ******************************************************************************** | |
| * History: | |
| * 07/17/2006 : V1.0 | |
| * 03/10/2006 : V0.1 | |
| ******************************************************************************** | |
| * THE PRESENT SOFTWARE 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 SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING | |
| * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. | |
| *******************************************************************************/ | |
| /* Includes ------------------------------------------------------------------*/ | |
| #include "75x_tb.h" | |
| #include "75x_mrcc.h" | |
| /* Private typedef -----------------------------------------------------------*/ | |
| /* Private define ------------------------------------------------------------*/ | |
| /* Private macro -------------------------------------------------------------*/ | |
| /* Private variables ---------------------------------------------------------*/ | |
| #define TB_IT_Enable_Mask 0x7FFF | |
| #define TB_IT_Clear_Mask 0x7FFF | |
| #define TB_IC_Enable 0x0004 | |
| #define TB_ICPolarity_Set 0x0008 | |
| #define TB_ICPolarity_Reset 0xFFF7 | |
| #define TB_UFS_Reset 0xFFFE | |
| #define TB_UFS_Set 0x0001 | |
| /* TB debug state */ | |
| #define TB_DBGC_Set 0x0400 | |
| #define TB_DBGC_Reset 0xFB7F | |
| /* TB counter state */ | |
| #define TB_COUNTER_Reset 0x0002 | |
| #define TB_COUNTER_Start 0x0004 | |
| #define TB_COUNTER_Stop 0xFFFB | |
| #define TB_SMS_EXTCLK_Set 0x0008 | |
| #define TB_SMS_RESETCLK_Set 0x0000 | |
| /* TB Slave Mode Enable Set/Reset value */ | |
| #define TB_SME_Reset 0x731B | |
| #define TB_SME_Set 0x0004 | |
| /* TB Trigger Selection value */ | |
| #define TB_TS_IC1_Set 0x0200 | |
| /* TB SCR Masks bit */ | |
| #define TB_SlaveModeSelection_Mask 0x7307 | |
| #define TB_TriggerSelection_Mask 0x701F | |
| /* Reset Register Masks */ | |
| #define TB_Prescaler_Reset_Mask 0x0000 | |
| #define TB_CounterMode_Mask 0xFF8F | |
| #define TB_AutoReload_Reset_Mask 0xFFFF | |
| /* Private function prototypes -----------------------------------------------*/ | |
| /* Private functions ---------------------------------------------------------*/ | |
| /****************************************************************************** | |
| * Function Name : TB_DeInit | |
| * Description : Deinitializes the TB peripheral registers to their default | |
| * reset values. | |
| * Input : None | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_DeInit(void) | |
| { | |
| /* Enters and exits the TB peripheral to and from reset */ | |
| MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TB,ENABLE); | |
| MRCC_PeripheralSWResetConfig(MRCC_Peripheral_TB,DISABLE); | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_Init | |
| * Description : Initializes TB peripheral according to the specified | |
| * parameters in the TB_InitStruct. | |
| * Input : TB_InitStruct: pointer to a TB_InitTypeDef structure that | |
| * contains the configuration information for the TB peripheral. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_Init(TB_InitTypeDef* TB_InitStruct) | |
| { | |
| /* Set the TB prescaler value */ | |
| TB->PSC = TB_InitStruct->TB_Prescaler; | |
| /* Set the TB period value */ | |
| TB->ARR = TB_InitStruct->TB_AutoReload; | |
| /* Set the corresponding counter mode */ | |
| TB->CR = (TB->CR & TB_CounterMode_Mask) | TB_InitStruct->TB_CounterMode; | |
| /* Set the corresponding clock source */ | |
| if(TB_InitStruct->TB_ClockSource == TB_ClockSource_CKRTC) | |
| { | |
| TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask; | |
| TB->SCR |= TB_SMS_EXTCLK_Set | TB_SME_Set | TB_TS_IC1_Set; | |
| } | |
| else | |
| { | |
| TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask; | |
| } | |
| if(TB_InitStruct->TB_Mode == TB_Mode_IC) | |
| { | |
| /* Set the corresponding value in TB SCR register */ | |
| TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask; | |
| TB->SCR |= TB_SMS_RESETCLK_Set | TB_SME_Set | TB_TS_IC1_Set; | |
| /* Set the IC1 enable bit */ | |
| TB->IMCR |= TB_IC_Enable; | |
| /* Set the input signal polarity */ | |
| if (TB_InitStruct->TB_ICAPolarity == TB_ICAPolarity_Falling) | |
| { | |
| TB->IMCR |= TB_ICPolarity_Set; | |
| } | |
| else | |
| { | |
| TB->IMCR &= TB_ICPolarity_Reset; | |
| } | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_StructInit | |
| * Description : Fills each TB_InitStruct member with its default value | |
| * Input : TB_InitStruct : pointer to a TB_InitTypeDef structure which | |
| * will be initialized. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_StructInit(TB_InitTypeDef *TB_InitStruct) | |
| { | |
| TB_InitStruct->TB_Mode = TB_Mode_Timing; | |
| TB_InitStruct->TB_ClockSource = TB_ClockSource_CKTIM; | |
| TB_InitStruct->TB_CounterMode = TB_CounterMode_Up; | |
| TB_InitStruct->TB_ICAPolarity = TB_ICAPolarity_Rising; | |
| TB_InitStruct->TB_Prescaler = TB_Prescaler_Reset_Mask; | |
| TB_InitStruct->TB_AutoReload = TB_AutoReload_Reset_Mask; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_Cmd | |
| * Description : Enables or disables the TB peripheral. | |
| * Input : Newstate: new state of the TB peripheral. This parameter can | |
| * be: ENABLE or DISABLE. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_Cmd(FunctionalState Newstate) | |
| { | |
| if(Newstate == ENABLE) | |
| { | |
| TB->CR |= TB_COUNTER_Start; | |
| } | |
| else | |
| { | |
| TB->CR &= TB_COUNTER_Stop; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_ITConfig | |
| * Description : Enables or disables the specified TB interrupt. | |
| * Input : - TB_IT: specifies the TB interrupt sources to be enabled or | |
| * disabled. | |
| * This parameter can be any combination of the following values: | |
| * - TB_IT_Update: TB Update interrupt | |
| * - TB_IT_GlobalUpdate: TB Global Update interrupt | |
| * - TB_IT_IC: TB Input Capture interrupt | |
| * - Newstate: new state of the specified TB interrupts. | |
| * This parameter can be: ENABLE or DISABLE. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_ITConfig(u16 TB_IT, FunctionalState Newstate) | |
| { | |
| u16 TB_IT_Enable = 0; | |
| TB_IT_Enable = TB_IT & TB_IT_Enable_Mask; | |
| if(Newstate == ENABLE) | |
| { | |
| /* Update interrupt global source: overflow/undeflow, counter reset operation | |
| or slave mode controller in reset mode */ | |
| if ((TB_IT & TB_IT_GlobalUpdate) == TB_IT_GlobalUpdate) | |
| { | |
| TB->CR &= TB_UFS_Reset; | |
| } | |
| /* Update interrupt source: counter overflow/underflow */ | |
| else if ((TB_IT & TB_IT_Update) == TB_IT_Update) | |
| { | |
| TB->CR |= TB_UFS_Set; | |
| } | |
| /* Select and enable the interrupts requests */ | |
| TB->RSR |= TB_IT_Enable; | |
| TB->RER |= TB_IT_Enable; | |
| } | |
| /* Disable the interrupts requests */ | |
| else | |
| { | |
| TB->RSR &= ~TB_IT_Enable; | |
| TB->RER &= ~TB_IT_Enable; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_SetPrescaler | |
| * Description : Sets the TB Prescaler value. | |
| * Input : Prescaler: specifies the TB Prescaler value. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_SetPrescaler(u16 Prescaler) | |
| { | |
| /* Sets the prescaler value */ | |
| TB->PSC = Prescaler; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_ResetCounter | |
| * Description : Re-intializes the counter and generates an update of the | |
| * registers. | |
| * Input : None | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_ResetCounter(void) | |
| { | |
| /* Re-intializes TB counter */ | |
| TB->CR |= TB_COUNTER_Reset; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_DebugCmd | |
| * Description : Enables or disables TB peripheral Debug control. | |
| * Input : Newstate: new state of the TB Debug control. | |
| * This parameter can be: ENABLE or DISABLE. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_DebugCmd(FunctionalState Newstate) | |
| { | |
| if(Newstate == ENABLE) | |
| { | |
| TB->CR |= TB_DBGC_Set; | |
| } | |
| else | |
| { | |
| TB->CR &= TB_DBGC_Reset; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_CounterModeConfig | |
| * Description : Configures the TB Counter Mode. | |
| * Input : TB_CounterMode: specifies the TB counter mode to be used. | |
| * This parameter can be one of the following values: | |
| * - TB_CounterMode_Up: TB Up Counting Mode | |
| * - TB_CounterMode_Down: TB Down Counting Mode | |
| * - TB_CounterMode_CenterAligned: TB Center Aligned Mode | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_CounterModeConfig(u16 TB_CounterMode) | |
| { | |
| /* Counter mode configuration */ | |
| TB->CR &= TB_CounterMode_Mask; | |
| TB->CR |= TB_CounterMode; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_SLaveModeConfig | |
| * Description : Configures the TB slave Mode. | |
| * Input : TB_SMSMode: specifies the TB slave mode to be used. | |
| * This parameter can be one of the following values: | |
| * - TB_SMSMode_Trigger: The counter starts at a rising | |
| * edge of the trigger | |
| * - TB_SMSMode_Gated: The counter clock is enabled when | |
| * trigger signal is high | |
| * - TB_SMSMode_External: The rising edge of selected trigger | |
| * clocks the counter | |
| * - TB_SMSMode_Reset: The rising edge of the selected | |
| * trigger signal resets the counter | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_SLaveModeConfig(u16 TB_SMSMode) | |
| { | |
| TB->SCR &= TB_SME_Reset & TB_SlaveModeSelection_Mask & TB_TriggerSelection_Mask; | |
| TB->SCR |= TB_SME_Set | TB_SMSMode | TB_TS_IC1_Set; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_GetCounter | |
| * Description : Gets the TB Counter value. | |
| * Input : None | |
| * Output : None | |
| * Return : The TB counter register value. | |
| *******************************************************************************/ | |
| u16 TB_GetCounter(void) | |
| { | |
| return TB->CNT; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_GetICAP1 | |
| * Description : Gets the TB Input capture value. | |
| * Input : None | |
| * Output : None | |
| * Return : The TB ICR1 register value. | |
| *******************************************************************************/ | |
| u16 TB_GetICAP1(void) | |
| { | |
| return TB->ICR1; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_SetCounter | |
| * Description : Sets the TB Counter value. | |
| * Input : Counter: specifies the TB Counter value. | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_SetCounter(u16 Counter) | |
| { | |
| TB->CNT = Counter; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_GetFlagStatus | |
| * Description : Checks whether the specified TB flag is set or not. | |
| * Input : TB_FLAG: specifies the flag to check. | |
| * This parameter can be one of the following values: | |
| * - TB_FLAG_IC: TB Input Capture flag | |
| * - TB_FLAG_Update: TB update flag | |
| * Output : None | |
| * Return : The new state of the TB_FLAG (SET or RESET). | |
| *******************************************************************************/ | |
| FlagStatus TB_GetFlagStatus(u16 TB_FLAG) | |
| { | |
| if((TB->ISR & TB_FLAG) != RESET ) | |
| { | |
| return SET; | |
| } | |
| else | |
| { | |
| return RESET; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_ClearFlag | |
| * Description : Clears the TBs pending flags. | |
| * Input : TB_FLAG: specifies the flag to clear. | |
| * This parameter can be any combination of the following values: | |
| * - TB_FLAG_IC: TB Input Capture flag | |
| * - TB_FLAG_Update: TB update flag | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_ClearFlag(u16 TB_FLAG) | |
| { | |
| /* Clears the flags */ | |
| TB->ISR &= ~TB_FLAG; | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_GetITStatus | |
| * Description : Checks whether the specified TB interrupt has occurred or not. | |
| * Input : TB_IT: specifies the interrupt to check. | |
| * This parameter can be one of the following values: | |
| * - TB_IT_Update: TB Update interrupt | |
| * - TB_IT_GlobalUpdate: TB Global Update interrupt | |
| * - TB_IT_IC: TB Input Capture interrupt | |
| * Output : None | |
| * Return : The new state of the TB_IT (SET or RESET). | |
| *******************************************************************************/ | |
| ITStatus TB_GetITStatus(u16 TB_IT) | |
| { | |
| u16 TB_IT_Check = 0; | |
| /* Calculates the pending bits to be checked */ | |
| TB_IT_Check = TB_IT & TB_IT_Clear_Mask; | |
| if((TB->ISR & TB_IT_Check) != RESET ) | |
| { | |
| return SET; | |
| } | |
| else | |
| { | |
| return RESET; | |
| } | |
| } | |
| /******************************************************************************* | |
| * Function Name : TB_ClearITPendingBit | |
| * Description : Clears the TB's interrupt pending bits. | |
| * Input : TB_IT: specifies the interrupt pending bit to clear. | |
| * This parameter can be any combination of the following values: | |
| * - TB_IT_Update: TB Update interrupt | |
| * - TB_IT_GlobalUpdate: TB Global Update interrupt | |
| * - TB_IT_IC: TB Input Capture interrupt | |
| * Output : None | |
| * Return : None | |
| *******************************************************************************/ | |
| void TB_ClearITPendingBit(u16 TB_IT) | |
| { | |
| u16 TB_IT_Clear = 0; | |
| /* Calculates the pending bits to be cleared */ | |
| TB_IT_Clear = TB_IT & TB_IT_Clear_Mask; | |
| /* Clears the pending bits */ | |
| TB->ISR &= ~TB_IT_Clear; | |
| } | |
| /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/ |