blob: 02b51321bb694ad9de4c8c3e6b1f39e144217569 [file] [log] [blame]
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name : 75x_tim.h
* Author : MCD Application Team
* Date First Issued : 03/10/2006
* Description : This file contains all the functions prototypes for the
* TIM software library.
********************************************************************************
* 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.
*******************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __75x_TIM_H
#define __75x_TIM_H
/* Includes ------------------------------------------------------------------*/
#include "75x_map.h"
/* Exported types ------------------------------------------------------------*/
typedef struct
{
u16 TIM_Mode; /* Timer Mode */
u16 TIM_Prescaler; /* Prescaler value */
u16 TIM_ClockSource; /* Timer clock source */
u16 TIM_ExtCLKEdge; /* External clock edge */
u16 TIM_CounterMode; /* Counter mode: Up/Down, Edge aligned or center aligned */
u16 TIM_Period; /* Period value */
u16 TIM_Channel; /* Timer Channel: 1, 2 or All */
u16 TIM_Pulse1; /* PWM or OCM Channel 1 pulse length */
u16 TIM_Pulse2; /* PWM or OCM Channel 2 pulse length */
u16 TIM_RepetitivePulse; /* OPM Repetitive pulse state: enable or disable */
u16 TIM_Polarity1; /* PWM, OCM or OPM Channel 1 polarity */
u16 TIM_Polarity2; /* PWM or OCM Channel 2 polarity */
u16 TIM_IC1Selection; /* Input Capture 1 selection: TI1 or TI2 */
u16 TIM_IC2Selection; /* Input Capture 2 selection: TI1 or TI2 */
u16 TIM_IC1Polarity; /* Input Capture 1 polarity */
u16 TIM_IC2Polarity; /* Input Capture 2 polarity */
u16 TIM_PWMI_ICSelection; /* PWM Input Capture selection: TI1 or TI2 */
u16 TIM_PWMI_ICPolarity; /* PWM Input Capture Polarity */
} TIM_InitTypeDef;
/* Master and slave synchronized Timer peripherals */
typedef enum
{
PWM_Master = 0x01,
TIM0_Master,
TIM1_Master,
TIM2_Master
}Master_TypeDef;
typedef enum
{
PWM_Slave = 0x05,
TIM0_Slave,
TIM1_Slave,
TIM2_Slave
}Slave_TypeDef;
/* Exported constants --------------------------------------------------------*/
/* TIM modes */
#define TIM_Mode_OCTiming 0x0001
#define TIM_Mode_OCActive 0x0002
#define TIM_Mode_OCInactive 0x0003
#define TIM_Mode_OCToggle 0x0004
#define TIM_Mode_PWM 0x0005
#define TIM_Mode_PWMI 0x0006
#define TIM_Mode_IC 0x0007
#define TIM_Mode_Encoder1 0x0008
#define TIM_Mode_Encoder2 0x0009
#define TIM_Mode_Encoder3 0x000A
#define TIM_Mode_OPM_PWM 0x000B
#define TIM_Mode_OPM_Toggle 0x000C
#define TIM_Mode_OPM_Active 0x000D
/* TIM Clock Source */
#define TIM_ClockSource_Internal 0x0001
#define TIM_ClockSource_TI11 0x0002
#define TIM_ClockSource_TI12 0x0003
#define TIM_ClockSource_TI22 0x0004
#define TIM_ClockSource_TI21 0x0005
/* TIM External Clock Edge */
#define TIM_ExtCLKEdge_Falling 0x0001
#define TIM_ExtCLKEdge_Rising 0x0002
/* TIM Counter Mode */
#define TIM_CounterMode_Up 0x0000
#define TIM_CounterMode_Down 0x0010
#define TIM_CounterMode_CenterAligned1 0x0020
#define TIM_CounterMode_CenterAligned2 0x0040
#define TIM_CounterMode_CenterAligned3 0x0060
/* TIM Channel */
#define TIM_Channel_1 0x0001
#define TIM_Channel_2 0x0002
#define TIM_Channel_ALL 0x0003
/* TIM Polarity channel 1 */
#define TIM_Polarity1_High 0x0001
#define TIM_Polarity1_Low 0x0002
/* TIM Polarity channel 2 */
#define TIM_Polarity2_High 0x0001
#define TIM_Polarity2_Low 0x0002
#define TIM_RepetitivePulse_Disable 0x0005
#define TIM_RepetitivePulse_Enable 0x0006
/* TIM Input Capture channel 1 Selection */
#define TIM_IC1Selection_TI1 0x0001
#define TIM_IC1Selection_TI2 0x0002
/* TIM Input Capture channel 2 Selection */
#define TIM_IC2Selection_TI1 0x0001
#define TIM_IC2Selection_TI2 0x0002
/* TIM Input Capture channel 1 Polarity */
#define TIM_IC1Polarity_Falling 0x0001
#define TIM_IC1Polarity_Rising 0x0002
/* TIM Input Capture channel 2 Polarity */
#define TIM_IC2Polarity_Falling 0x0001
#define TIM_IC2Polarity_Rising 0x0002
/* TIM PWM Input IC Selection */
#define TIM_PWMI_ICSelection_TI1 0x0001
#define TIM_PWMI_ICSelection_TI2 0x0002
/* TIM PWM Input IC Polarity */
#define TIM_PWMI_ICPolarity_Falling 0x0003
#define TIM_PWMI_ICPolarity_Rising 0x0004
/* TIM interrupt sources */
#define TIM_IT_IC1 0x0004
#define TIM_IT_IC2 0x0008
#define TIM_IT_OC1 0x0100
#define TIM_IT_OC2 0x0200
#define TIM_IT_Update 0x0001
#define TIM_IT_GlobalUpdate 0x1001
/* TIM DMA sources */
#define TIM_DMASource_IC1 0x0004
#define TIM_DMASource_IC2 0x0008
#define TIM_DMASource_OC1 0x0100
#define TIM_DMASource_OC2 0x0200
#define TIM_DMASource_Update 0x0001
/* TIM DMA Base address */
#define TIM_DMABase_CR 0x0000
#define TIM_DMABase_SCR 0x0800
#define TIM_DMABase_IMCR 0x1000
#define TIM_DMABase_OMR1 0x1800
#define TIM_DMABase_RSR 0x3000
#define TIM_DMABase_RER 0x3800
#define TIM_DMABase_ISR 0x4000
#define TIM_DMABase_CNT 0x4800
#define TIM_DMABase_PSC 0x5000
#define TIM_DMABase_ARR 0x6000
#define TIM_DMABase_OCR1 0x6800
#define TIM_DMABase_OCR2 0x7000
#define TIM_DMABase_ICR1 0x9800
#define TIM_DMABase_ICR2 0xA000
/* TIM Flags */
#define TIM_FLAG_IC1 0x0004
#define TIM_FLAG_IC2 0x0008
#define TIM_FLAG_OC1 0x0100
#define TIM_FLAG_OC2 0x0200
#define TIM_FLAG_Update 0x0001
/* TIM_ForcedAction */
#define TIM_ForcedAction_Active 0x000A
#define TIM_ForcedAction_InActive 0x0008
/* TIM synchronization action */
#define TIM_SynchroAction_Enable 0x0100
#define TIM_SynchroAction_Update 0x0200
#define TIM_SynchroAction_Reset 0x0000
#define TIM_SynchroAction_OC 0x0300
/* TIM synchronization mode */
#define TIM_SynchroMode_Gated 0x0010
#define TIM_SynchroMode_Trigger 0x0018
#define TIM_SynchroMode_External 0x0008
#define TIM_SynchroMode_Reset 0x0000
/* OCRM bit states */
#define TIM_OCRMState_Enable 0x0005
#define TIM_OCRMState_Disable 0x0006
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
void TIM_DeInit(TIM_TypeDef *TIMx);
void TIM_Init(TIM_TypeDef* TIMx, TIM_InitTypeDef* TIM_InitStruct);
void TIM_StructInit(TIM_InitTypeDef *TIM_InitStruct);
void TIM_Cmd(TIM_TypeDef *TIMx, FunctionalState Newstate);
void TIM_ITConfig(TIM_TypeDef *TIMx, u16 TIM_IT, FunctionalState Newstate);
void TIM_PreloadConfig(TIM_TypeDef* TIMx, u16 TIM_Channel, FunctionalState Newstate);
void TIM_DMAConfig(u16 TIM_DMASources, u16 TIM_OCRMState, u16 TIM_DMABase);
void TIM_DMACmd(u16 TIM_DMASources, FunctionalState Newstate);
void TIM_ClockSourceConfig(TIM_TypeDef *TIMx, u16 TIM_ClockSource,
u16 TIM_ExtCLKEdge);
void TIM_SetPrescaler(TIM_TypeDef* TIMx, u16 Prescaler);
void TIM_SetPeriod(TIM_TypeDef* TIMx, u16 Period);
void TIM_SetPulse(TIM_TypeDef* TIMx, u16 TIM_Channel, u16 Pulse);
u16 TIM_GetICAP1(TIM_TypeDef *TIMx);
u16 TIM_GetICAP2(TIM_TypeDef *TIMx);
u16 TIM_GetPWMIPulse(TIM_TypeDef *TIMx);
u16 TIM_GetPWMIPeriod(TIM_TypeDef *TIMx);
void TIM_DebugCmd(TIM_TypeDef *TIMx, FunctionalState Newstate);
void TIM_CounterModeConfig(TIM_TypeDef* TIMx, u16 TIM_CounterMode);
void TIM_ForcedOCConfig(TIM_TypeDef* TIMx, u16 TIM_Channel,
u16 TIM_ForcedAction);
void TIM_ResetCounter(TIM_TypeDef* TIMx);
void TIM_SynchroConfig(Master_TypeDef Master, Slave_TypeDef Slave,
u16 TIM_SynchroAction, u16 TIM_SynchroMode);
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, u16 TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, u16 TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, u16 TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, u16 TIM_IT);
#endif /* __75x_TIM_H */
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/