/**
******************************************************************************
* @file tae32f53xx_ll_tmr.h
* @author MCD Application Team
* @brief Header for TMR LL module driver
*
******************************************************************************
* @attention
*
*
© Copyright (c) 2020 Tai-Action.
* All rights reserved.
*
* This software is licensed by Tai-Action under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _TAE32F53XX_LL_TMR_H_
#define _TAE32F53XX_LL_TMR_H_
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Includes ------------------------------------------------------------------*/
#include "tae32f53xx_ll_def.h"
/** @addtogroup TAE32F53xx_LL_Driver
* @{
*/
/** @addtogroup TMR_LL
* @{
*/
/* Exported types ------------------------------------------------------------*/
/** @defgroup TMR_LL_Exported_Types TMR LL Exported Types
* @brief TMR LL Exported Types
* @{
*/
/**
* @brief TMR Continuous Mode
*/
typedef enum {
TMR_CONTINUOUS_MODE_ENABLE = 0x00000000U, /*!< TMR performed in Continuous counting mode */
TMR_CONTINUOUS_MODE_DISABLE = TMR_CR_MS, /*!< TMR performed in Single counting mode */
} TMR_ContinuousETypeDef;
/**
* @brief TMR Update Event Enable
*/
typedef enum {
TMR_UPDATE_ENABLE = 0x00000000U, /*!< Update event generation enabled */
TMR_UPDATE_DISABLE = TMR_CR_UDIS, /*!< Update event generation disabled */
} TMR_UpdateETypeDef;
/**
* @brief TMR_Update_Request_Source TMR Update Request Source
*/
typedef enum {
TMR_UPDATE_SOURCE_REGULAR = 0x00000000U, /*!< Counter overflow or Setting the UG bit generates an update request */
TMR_UPDATE_SOURCE_COUNTER = TMR_CR_URS, /*!< Only counter overflow generates an update request */
} TMR_UpdateSrcETypeDef;
/**
* @brief TMR Auto-Reload Preload
*/
typedef enum {
TMR_AUTORELOAD_PRELOAD_DISABLE = 0x00000000U, /*!< Disable auto-reload preload feature */
TMR_AUTORELOAD_PRELOAD_ENABLE = TMR_CR_ARPE, /*!< Enable auto-reload preload feature */
} TMR_AutoReloadETypeDef;
/**
* @brief TMR Clock Souce
*/
typedef enum {
TMR_CLKSOURCE_INTERNAL = TMR_CR_CKSRC_0, /*!< Internal clock source */
TMR_CLKSOURCE_ETR_RISING = TMR_CR_CKSRC_1, /*!< External clock source rising edge */
TMR_CLKSOURCE_ETR_FALLING = TMR_CR_CKSRC_2, /*!< External clock source falling edge */
TMR_CLKSOURCE_ETR_BOTHEDGE = TMR_CR_CKSRC_3, /*!< External clock source both rising and falling edge */
} TMR_ClkSrcETypeDef;
/**
* @brief TMR PWM Wave Export
*/
typedef enum {
TMR_EXT_PWM_WAVE_DISABLE = 0x00000000U, /*!< Disable the export of the PWM Wave */
TMR_EXT_PWM_WAVE_ENABLE = TMR_ETER_PWMOE, /*!< Enable the export of the PWM Wave */
} TMR_Ext_PWMETypeDef;
/**
* @brief TMR Capture Compare Event Trigger Export
*/
typedef enum {
TMR_EXT_CC_TRIGGER_DISABLE = 0x00000000U, /*!< Disable the export of the Capture Compare Trigger */
TMR_EXT_CC_TRIGGER_ENABLE = TMR_ETER_CCTE, /*!< Enable the export of the Capture Compare Trigger */
} TMR_Ext_CCETypeDef;
/**
* @brief TMR TRGO Trigger Export
*/
typedef enum {
TMR_EXT_TRGO_TRIGGER_DISABLE = 0x00000000U, /*!< Disable the export of the TRGO signal (source from Update Event) Trigger */
TMR_EXT_TRGO_TRIGGER_ENABLE = TMR_ETER_UTE, /*!< Enable the export of the TRGO signal (source from Update Event) Trigger */
} TMR_Ext_TRGOETypeDef;
/**
* @brief TMR Event Source
*/
typedef enum {
TMR_EVENTSOURCE_UG = TMR_EGR_UG, /*!< Reinitialize the counter and generates an update of the registers */
TMR_EVENTSOURCE_CCG = TMR_EGR_CCG, /*!< A capture/compare event is generated */
} TMR_EventSRCETypeDef;
/** @brief TMR Input Capture Selection
*/
typedef enum {
TMR_ICSELECTION_TMR0 = TMR_CCCR_ICSRS_0, /*!< TMR input capture source TMR0 io (specific to (LS)TMR0/1/2/3). */
TMR_ICSELECTION_TMR4 = TMR_CCCR_ICSRS_0, /*!< TMR input capture source TMR4 io (specific to (HS)TMR4/5/6/7). */
TMR_ICSELECTION_TMR1 = TMR_CCCR_ICSRS_1, /*!< TMR input capture source TMR1 io (specific to (LS)TMR0/1/2/3). */
TMR_ICSELECTION_TMR5 = TMR_CCCR_ICSRS_1, /*!< TMR input capture source TMR5 io (specific to (HS)TMR4/5/6/7). */
TMR_ICSELECTION_TMR2 = TMR_CCCR_ICSRS_2, /*!< TMR input capture source TMR2 io (specific to (LS)TMR0/1/2/3). */
TMR_ICSELECTION_TMR6 = TMR_CCCR_ICSRS_2, /*!< TMR input capture source TMR6 io (specific to (HS)TMR4/5/6/7). */
TMR_ICSELECTION_TMR3 = TMR_CCCR_ICSRS_3, /*!< TMR input capture source TMR3 io (specific to (LS)TMR0/1/2/3). */
TMR_ICSELECTION_TMR7 = TMR_CCCR_ICSRS_3, /*!< TMR input capture source TMR7 io (specific to (HS)TMR4/5/6/7). */
TMR_ICSELECTION_CMP0 = TMR_CCCR_ICSRS_4, /*!< The internal CMP0 output single
will be selected as the input source of LSTMR or HSTMR */
TMR_ICSELECTION_CMP1 = TMR_CCCR_ICSRS_5, /*!< The internal CMP1 output single
will be selected as the input source of LSTMR or HSTMR */
TMR_ICSELECTION_CMP2 = TMR_CCCR_ICSRS_6, /*!< The internal CMP2 output single
will be selected as the input source of LSTMR or HSTMR */
TMR_ICSELECTION_CMP3 = TMR_CCCR_ICSRS_7, /*!< The internal CMP3 output single
will be selected as the input source of LSTMR or HSTMR */
} TMR_ICSelETypeDef;
/**
* @brief TMR Input Capture Polarity
*/
typedef enum {
TMR_ICPOLARITY_RISING = 0x00000000U, /*!< Capture triggered by rising edge on timer input */
TMR_ICPOLARITY_FALLING = TMR_CCCR_CCP_0, /*!< Capture triggered by falling edge on timer input */
TMR_ICPOLARITY_BOTHEDGE = TMR_CCCR_CCP_1, /*!< Capture triggered by both rising and falling edges on timer input */
} TMR_ICPolarityETypeDef;
/**
* @brief TMR Output Compare and PWM Modes
*/
typedef enum {
TMR_OCMODE_FROZEN = TMR_CCCR_OCM_0, /*!< Frozen */
TMR_OCMODE_ACTIVE = TMR_CCCR_OCM_1, /*!< active on match */
TMR_OCMODE_INACTIVE = TMR_CCCR_OCM_2, /*!< inactive on match */
TMR_OCMODE_TOGGLE = TMR_CCCR_OCM_3, /*!< Toggle */
TMR_OCMODE_FORCED_INACTIVE = TMR_CCCR_OCM_4, /*!< Force inactive */
TMR_OCMODE_FORCED_ACTIVE = TMR_CCCR_OCM_5, /*!< Force active */
TMR_OCMODE_PWM1 = TMR_CCCR_OCM_6, /*!< PWM mode 1 */
TMR_OCMODE_PWM2 = TMR_CCCR_OCM_7, /*!< PWM mode 2 */
} TMR_OCModeETypeDef;
/**
* @brief TMR_OCPreload_Enable TMR OCPreload Enable
*/
typedef enum {
TMR_OCPRELOAD_DISABLE = 0x00000000U, /*!< TMR OCPreload Disable */
TMR_OCPRELOAD_ENABLE = TMR_CCCR_OCPE, /*!< TMR OCPreload Enable */
} TMR_OCPreloadETypeDef;
/**
* @brief TMR Complementary Output Compare Polarity
*/
typedef enum {
TMR_OCPOLARITY_HIGH = 0x00000000U, /*!< Output Compare polarity active high */
TMR_OCPOLARITY_LOW = TMR_CCCR_CCP_0, /*!< Output Compare polarity active low */
} TMR_OCPolarityETypeDef;
/**
* @brief Timer Base Unit Initialization Structure definition
* @note Please notice that TMR can enable either Input Capture mode or Output Compare mode.
*/
typedef struct __TMR_TB_InitTypeDef {
TMR_ClkSrcETypeDef ClockSource; /*!< Specifies the Clock Source. */
uint32_t Prescaler; /*!< Specifies the prescaler value used to divide the TMR clock.
This parameter can be a number in range of:
For low-speed timer(TMR0/1/2/3): from Min 0x0 to Max 0x0000FFFF
For high-speed timer(TMR4/5/6/7): from Min 0x0 to Max 0xFFFFFFFF */
uint32_t StartValue; /*!< Specifies the timer counter start value.
This parameter can be a number in range of:
For low-speed timer(TMR0/1/2/3): from Min 0x0 to Max 0x0000FFFF
For high-speed timer(TMR4/5/6/7): from Min 0x0 to Max 0xFFFFFFFF */
uint32_t EndValue; /*!< Specifies the timer counter end value.
This parameter can be a number in range of:
For low-speed timer(TMR0/1/2/3): from Min 0x0 to Max 0x0000FFFF
For high-speed timer(TMR4/5/6/7): from Min 0x0 to Max 0xFFFFFFFF */
TMR_ContinuousETypeDef ContinuousMode; /*!< Specifies the timer continuous mode enable or disable. */
TMR_AutoReloadETypeDef AutoReloadPreload; /*!< Specifies the auto-reload preload. */
TMR_UpdateETypeDef UpdateEnable; /*!< Specifies the Update event enable or not. */
TMR_UpdateSrcETypeDef UpdateSource; /*!< Specifies the Update request Source */
} TMR_TB_InitTypeDef;
/**
* @brief Timer Input Capture Initialization Structure definition
* @note Please notice that TMR can enable either Input Capture mode or Output Compare mode.
*/
typedef struct __TMR_IC_InitTypeDef {
LL_FuncStatusETypeDef ICEnable; /*!< Specifies enable the Input Capture feature or not.
This parameter can be ENABLE or DISABLE */
TMR_ICPolarityETypeDef ICPolarity; /*!< Specifies the active edge of the input signal. */
TMR_ICSelETypeDef ICSelection; /*!< Specifies the input source to be used. */
uint32_t ICFilter; /*!< Specifies the input capture filter.
This parameter can be a number between 0x0 and 0xFF */
} TMR_IC_InitTypeDef;
/**
* @brief Timer Output Compare Initialization Structure definition
* @note Please notice that TMR can enable either Input Capture mode or Output Compare mode.
*/
typedef struct __TMR_OC_InitTypeDef {
LL_FuncStatusETypeDef OCEnable; /*!< Specifies enable the Output Compare feature or not.
This parameter can be ENABLE or DISABLE */
TMR_OCPolarityETypeDef OCPolarity; /*!< Specifies the output polarity. */
TMR_OCPreloadETypeDef OCPreload; /*!< Timer Output Compare Preload Enable */
TMR_OCModeETypeDef OCMode; /*!< Specifies the TMR mode. */
uint32_t OCValue; /*!< Specifies the compare value which loaded into Capture Compare Register.
This parameter can be a number in range of:
For low-speed timer(TMR0/1/2/3): from Min 0x0 to Max 0x0000FFFF
For high-speed timer(TMR4/5/6/7): from Min 0x0 to Max 0xFFFFFFFF */
} TMR_OC_InitTypeDef;
/**
* @brief Timer Export Trigger Initialization Structure definition
*/
typedef struct __TMR_EXT_InitTypeDef {
LL_FuncStatusETypeDef ExtEnable; /*!< Specifies enable the Export Event Trigger feature or not.
This parameter can be ENABLE or DISABLE */
TMR_Ext_PWMETypeDef ExtPWMWave; /*!< Specifies PWM Wave (output compare) export to internal signal or not. */
TMR_Ext_CCETypeDef ExtCCTrigger; /*!< Specifies Capture Compare Trigger Event export to internal signal or not. */
TMR_Ext_TRGOETypeDef ExtTRGOTrigger;/*!< Specifies TMR TRGO signal (source from Update Event) export to internal signal or not. */
} TMR_EXT_InitTypeDef;
/**
* @brief Timer Initialization Structure definition
* @note Please notice that TMR can be configured to either Input Capture mode or Output Compare mode.
* Witch means that either ICEnable or OCEnable in the Initialization Structure can be enable the feature.
*/
typedef struct __TMR_InitTypeDef {
TMR_TB_InitTypeDef TBInit; /*!< Timer Base Unit Initialization Structure definition */
TMR_IC_InitTypeDef ICInit; /*!< Timer Input Capture Initialization Structure definition */
TMR_OC_InitTypeDef OCInit; /*!< Timer Output Compare Initialization Structure */
TMR_EXT_InitTypeDef ExtInit; /*!< Timer Export Event Trigger feature Initialization Structure */
} TMR_InitTypeDef;
/**
* @}
*/
/* Exported constants --------------------------------------------------------*/
/** @defgroup TMR_LL_Exported_Constants TMR LL Exported Constants
* @brief TMR LL Exported Constants
* @{
*/
/** @defgroup TMR_Interrupt_definition TMR Interrupt Definition
* @{
*/
#define TMR_IT_UIE TMR_CR_UIE /*!< Update interrupt */
#define TMR_IT_OVIE TMR_CR_OVIE /*!< Counter Overflow interrupt */
/**
* @}
*/
/** @defgroup TMR_CC_Interrupt_definition TMR Capture/Compare Interrupt Definition
* @{
*/
#define TMR_IT_ICIE TMR_CCCR_ICIE /*!< Input Capture interrupt */
#define TMR_IT_ICOIE TMR_CCCR_ICOIE /*!< Input Capture OverCapture interrupt */
#define TMR_IT_OCIE TMR_CCCR_OCIE /*!< Output Compare Match interrupt */
/**
* @}
*/
/** @defgroup TMR_Flag_definition TMR Flag Definition
* @{
*/
#define TMR_FLAG_OVIF TMR_ISR_OVIF /*!< Timer Counter Overflow Interrupt Flag */
#define TMR_FLAG_ICOIF TMR_ISR_ICOIF /*!< Timer Input Capture OverCapture Interrupt Flag */
#define TMR_FLAG_ICIF TMR_ISR_ICIF /*!< Timer Input Capture Interrupt Flag */
#define TMR_FLAG_OCIF TMR_ISR_OCIF /*!< Timer Output Compare Interrupt Flag */
#define TMR_FLAG_UIF TMR_ISR_UIF /*!< Timer Counter Update Interrupt Flag */
/**
* @}
*/
/** @defgroup TMR_Sync_definition Timer Group synchronization Definition
* @{
*/
#define TMRGRP_SYNC_TMR0 TMRGRP_SYNC0EN /*!< Select TMR0(specific to TMRGRP0) */
#define TMRGRP_SYNC_TMR4 TMRGRP_SYNC0EN /*!< Select TMR4(specific to TMRGRP1) */
#define TMRGRP_SYNC_TMR1 TMRGRP_SYNC1EN /*!< Select TMR1(specific to TMRGRP0) */
#define TMRGRP_SYNC_TMR5 TMRGRP_SYNC1EN /*!< Select TMR5(specific to TMRGRP1) */
#define TMRGRP_SYNC_TMR2 TMRGRP_SYNC2EN /*!< Select TMR2(specific to TMRGRP0) */
#define TMRGRP_SYNC_TMR6 TMRGRP_SYNC2EN /*!< Select TMR6(specific to TMRGRP1) */
#define TMRGRP_SYNC_TMR3 TMRGRP_SYNC3EN /*!< Select TMR2(specific to TMRGRP0) */
#define TMRGRP_SYNC_TMR7 TMRGRP_SYNC3EN /*!< Select TMR6(specific to TMRGRP1) */
#define TMRGRP_SYNC_ALL TMRGRP_SYNCALLEN /*!< Select all TMRs in TMRGRPx(x = 0 or 1) */
/**
* @}
*/
/**
* @}
*/
/* Exported macro ------------------------------------------------------------*/
/** @defgroup TMR_LL_Exported_Macros TMR LL Exported Macros
* @brief TMR LL Exported Macros
* @{
*/
/**
* @brief Enable TMR Base Unit on runtime
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_ENABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->CR, TMR_CR_CEN)
/**
* @brief Disable TMR Base Unit on runtime
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_DISABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->CR, TMR_CR_CEN)
/**
* @brief Enable TMR Capture/Compare feature on runtime
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_CC_ENABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->CCCR, TMR_CCCR_CCE)
/**
* @brief Disable TMR Capture/Compare feature on runtime
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_CC_DISABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->CCCR, TMR_CCCR_CCE)
/**
* @brief Enable the specified TMR Basic Unit Interrupt
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR base unit interrupt source to enable.
* This parameter can be any combination of @ref TMR_Interrupt_definition:
* @arg TMR_IT_UIE: Update interrupt
* @arg TMR_IT_OVIE: Counter Overflow interrupt
* @return None
*/
#define __LL_TMR_IT_ENABLE(__INSTANCE__, __INTERRUPT__) SET_BIT((__INSTANCE__)->CR, (__INTERRUPT__))
/**
* @brief Disable the specified TMR Basic Unit Interrupt
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR base unit interrupt source to disable.
* This parameter can be any combination of @ref TMR_Interrupt_definition:
* @arg TMR_IT_UIE: Update interrupt
* @arg TMR_IT_OVIE: Counter Overflow interrupt
* @return None
*/
#define __LL_TMR_IT_DISABLE(__INSTANCE__, __INTERRUPT__) CLEAR_BIT((__INSTANCE__)->CR, (__INTERRUPT__))
/**
* @brief Check whether the specified TMR Basic Unit interrupt source is set or not.
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR interrupt source to check.
* This parameter can be any combination of @ref TMR_Interrupt_definition:
* @arg TMR_IT_UIE: Update interrupt
* @arg TMR_IT_OVIE: Counter Overflow interrupt
* @return The state of __INTERRUPT__ (SET or RESET).
*/
#define __LL_TMR_IT_CHECK_SOURCE(__INSTANCE__, __INTERRUPT__) ((READ_BIT((__INSTANCE__)->CR, (__INTERRUPT__)) \
== (__INTERRUPT__)) ? SET : RESET)
/**
* @brief Enable the specified Capture/Compare Interrupt
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR Capture/Compare interrupt source to enable.
* This parameter can be any combination of @ref TMR_CC_Interrupt_definition:
* @arg TMR_IT_ICIE: Input Capture interrupt
* @arg TMR_IT_ICOIE: Input Capture OverCapture interrupt
* @arg TMR_IT_OCIE: Output Compare Match interrupt
* @return None
*/
#define __LL_TMR_CC_IT_ENABLE(__INSTANCE__, __INTERRUPT__) SET_BIT((__INSTANCE__)->CCCR, (__INTERRUPT__))
/**
* @brief Disable Input Capture Interrupt
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR Capture/Compare interrupt source to disable.
* This parameter can be any combination of @ref TMR_CC_Interrupt_definition:
* @arg TMR_IT_ICIE: Input Capture interrupt
* @arg TMR_IT_ICOIE: Input Capture OverCapture interrupt
* @arg TMR_IT_OCIE: Output Compare Matched interrupt
* @return None
*/
#define __LL_TMR_CC_IT_DISABLE(__INSTANCE__, __INTERRUPT__) CLEAR_BIT((__INSTANCE__)->CCCR, (__INTERRUPT__))
/**
* @brief Check whether the specified TMR Capture/Compare interrupt source is set or not.
* @param __INSTANCE__ TMR peripheral
* @param __INTERRUPT__ specifies the TMR Capture/Compare interrupt source to check.
* This parameter can be any combination of @ref TMR_CC_Interrupt_definition:
* @arg TMR_IT_ICIE: Input Capture interrupt
* @arg TMR_IT_ICOIE: Input Capture OverCapture interrupt
* @arg TMR_IT_OCIE: Output Compare Matched interrupt
* @return he state of __INTERRUPT__ (SET or RESET).
*/
#define __LL_TMR_CC_IT_CHECK_SOURCE(__INSTANCE__, __INTERRUPT__) \
((READ_BIT((__INSTANCE__)->CCCR, (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
/**
* @brief Check whether the specified TMR interrupt flag is set or not.
* @param __INSTANCE__ TMR peripheral.
* @param __FLAG__ specifies the TMR flags to check.
* This parameter can be any combination of @ref TMR_Flag_definition:
* @arg TMR_FLAG_OVIF: Counter Overflow Interrupt Flag
* @arg TMR_FLAG_ICOIF: Input Capture OverCapture Interrupt Flag
* @arg TMR_FLAG_ICIF: Input Capture Interrupt Flag
* @arg TMR_FLAG_OCIF: Output Compare Interrupt Flag
* @arg TMR_FLAG_UIF: Counter Update Interrupt Flag
* @return The state of __FLAG__ (SET or RESET).
*/
#define __LL_TMR_GET_FLAG(__INSTANCE__, __FLAG__) \
((READ_BIT((__INSTANCE__)->ISR, (__FLAG__)) == (__FLAG__)) ? SET : RESET)
/**
* @brief Clear the specified TMR interrupt flags
* @param __INSTANCE__ TMR peripheral
* @param __FLAG__ specifies the TMR flags to clear.
* This parameter can be any combination of @ref TMR_Flag_definition:
* @arg TMR_FLAG_OVIF: Counter Overflow Interrupt Flag
* @arg TMR_FLAG_ICOIF: Input Capture OverCapture Interrupt Flag
* @arg TMR_FLAG_ICIF: Input Capture Interrupt Flag
* @arg TMR_FLAG_OCIF: Output Compare Interrupt Flag
* @arg TMR_FLAG_UIF: Counter Update Interrupt Flag
* @return None
*/
#define __LL_TMR_CLEAR_FLAG(__INSTANCE__, __FLAG__) WRITE_REG((__INSTANCE__)->ISR, (__FLAG__))
/**
* @brief Enable TMR Auto-Reload feature
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_AUTORELOAD_ENABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->CR, TMR_CR_ARPE)
/**
* @brief Disable TMR Auto-Reload feature
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_AUTORELOAD_DISABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->CR, TMR_CR_ARPE)
/**
* @brief Enable TMR Output Compare Preload feature
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_OC_PRELOAD_ENABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->CCCR, TMR_CCCR_OCPE)
/**
* @brief Disable TMR Output Compare Preload feature
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_OC_PRELOAD_DISABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->CCCR, TMR_CCCR_OCPE)
/**
* @brief Enable TMR Update event (UDIS)
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_UPDATE_ENABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->CR, TMR_CR_UDIS)
/**
* @brief Disable TMR Update event (UDIS)
* @param __INSTANCE__ TMR peripheral
* @return None
*/
#define __LL_TMR_UPDATE_DISABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->CR, TMR_CR_UDIS)
/**
* @brief Selection of the Update Request Source (URS) bit of the TMRx_CR register.
* @param __INSTANCE__ TMR peripheral
* @param __SOURCE__ specifies the Update Request Source
* This parameter can be one of the following values in @ref TMR_Update_Request_Source:
* @arg TMR_UPDATE_SOURCE_REGULAR: Counter overflow or Setting the UG bit generates an update request
* @arg TMR_UPDATE_SOURCE_COUNTER: Only counter overflow generates an update request
* @note To generate the update request, Update event should be enabled(reset UDIS bit in TMRx_CR register).
* @return None
*/
#define __LL_TMR_UPDATE_SOURCE(__INSTANCE__, __SOURCE__) MODIFY_REG((__INSTANCE__)->CR, TMR_CR_URS_Msk, (__SOURCE__))
/**
* @brief Set the TMR Prescaler on runtime.
* @param __INSTANCE__ TMR peripheral
* @param __PRESC__ specifies the Prescaler new value.
* @retval None
*/
#define __LL_TMR_SET_PRESCALER(__INSTANCE__, __PRESC__) WRITE_REG((__INSTANCE__)->PSCR, (__PRESC__))
/**
* @brief Get the TMR Prescaler on runtime.
* @param __INSTANCE__ TMR peripheral
* @retval 16-bit or 32-bit value of the timer prescaler register (TMRx_PSCR)
*/
#define __LL_TMR_GET_PRESCALER(__INSTANCE__) READ_REG((__INSTANCE__)->PSCR)
/**
* @brief Set the TMR Start value on runtime.
* @param __INSTANCE__ TMR peripheral
* @param __START__ specifies the new starting value.
* @retval None
*/
#define __LL_TMR_SET_START_VAL(__INSTANCE__, __START__) WRITE_REG((__INSTANCE__)->CSVR, (__START__))
/**
* @brief Get the TMR Start value on runtime.
* @param __INSTANCE__ TMR peripheral
* @retval 16-bit or 32-bit value of the timer start value register (TMRx_CSVR)
*/
#define __LL_TMR_GET_START_VAL(__INSTANCE__) READ_REG((__INSTANCE__)->CSVR)
/**
* @brief Set the TMR End value on runtime.
* @param __INSTANCE__ TMR peripheral
* @param __END__ specifies the new ending value.
* @retval None
*/
#define __LL_TMR_SET_END_VAL(__INSTANCE__, __END__) WRITE_REG((__INSTANCE__)->CEVR, (__END__))
/**
* @brief Get the TMR End value on runtime.
* @param __INSTANCE__ TMR peripheral
* @retval 16-bit or 32-bit value of the timer end value register (TMRx_CEVR)
*/
#define __LL_TMR_GET_END_VAL(__INSTANCE__) READ_REG((__INSTANCE__)->CEVR)
/**
* @brief Set the TMR Counter Register value on runtime.
* @param __INSTANCE__ TMR peripheral
* @param __COUNTER__ specifies the Counter register new value.
* @return None
*/
#define __LL_TMR_SET_COUNTER(__INSTANCE__, __COUNTER__) WRITE_REG((__INSTANCE__)->CNTR, (__COUNTER__))
/**
* @brief Get the TMR Counter Register value on runtime.
* @param __INSTANCE__ TMR peripheral
* @return 16-bit or 32-bit value of the timer counter register (TMRx_CNTR)
*/
#define __LL_TMR_GET_COUNTER(__INSTANCE__) READ_REG((__INSTANCE__)->CNTR)
/**
* @brief Set the TMR Capture Compare Register(TMRx_CCR) value on runtime.
* @note This macro normally used when the TMR is configured in Output Compare mode.
* User can use the macro to change the compare value on runtime without calling
* another time Config function.
* @note The new value will take effect immediately when Output Compare Preload (OCPE)
* is disabled. Otherwise it will take effect by following condition:
* - Update event generated by counter overflow only (if Update event enabled)
* - Compare Matching event with the older value.
* - Software generate by setting the CCG bit in TMRx_EGR register
* @param __INSTANCE__ TMR peripheral
* @param __COMPARE__ specifies the Counter register new value.
* @return None
*/
#define __LL_TMR_SET_COMPARE(__INSTANCE__, __COMPARE__) WRITE_REG((__INSTANCE__)->CCR, (__COMPARE__))
/**
* @brief Get the TMR Capture Compare Register(TMRx_CCR) value on runtime.
* @note This macro normally used when the TMR is configured in Input Capture mode.
* User can use the macro to get the new capture value on runtime when a Capture event
* is generated by fllowing condition:
* - Input source trigger an edge matches the Input Capture Polarity edge configuration (CCP)
* - Software generate by setting the CCG bit in TMRx_EGR register
* @param __INSTANCE__ TMR peripheral
* @return 16-bit or 32-bit value of the timer capture compare register (TMRx_CCR)
*/
#define __LL_TMR_GET_CAPTURE(__INSTANCE__) READ_REG((__INSTANCE__)->CCR)
/**
* @brief Set the input channel polarity.
* @param __INSTANCE__ Timer peripheral
* @param __POLARITY__ This parameter can be one of the following values in @ref TMR_Input_Capture_Polarity:
* @arg @ref TMR_ICPOLARITY_RISING :Capture triggered by rising edge on timer input
* @arg @ref TMR_ICPOLARITY_FALLING :Capture triggered by falling edge on timer input
* @arg @ref TMR_ICPOLARITY_BOTHEDGE :Capture triggered by both rising and falling edges on timer input
* @retval None
*/
#define __LL_TMR_POLARITY_SET(__INSTANCE__, __POLARITY__) MODIFY_REG((__INSTANCE__)->CCCR, TMR_CCCR_CCP_Msk, (__POLARITY__))
/**
* @brief Set the TMR Ouput Compare Mode on runtime.
* @param __INSTANCE__ TMR peripheral
* @param __OCMODE__ TMR Output Compare and PWM Modes
* This parameter can be one of @ref TMR_Output_Compare_and_PWM_modes
* @return None
*/
#define __LL_TMR_SET_OCMODE(__INSTANCE__, __OCMODE__) MODIFY_REG((__INSTANCE__)->CCCR, TMR_CCCR_OCM_Msk, (__OCMODE__))
/**
* @}
*/
/* Exported functions --------------------------------------------------------*/
/** @addtogroup TMR_LL_Exported_Functions
* @{
*/
/** @addtogroup TMR_LL_Exported_Functions_Group1
* @{
*/
LL_StatusETypeDef LL_TMR_Init(TMR_TypeDef *Instance, TMR_InitTypeDef *Init);
LL_StatusETypeDef LL_TMR_DeInit(TMR_TypeDef *Instance);
void LL_TMR_MspInit(TMR_TypeDef *Instance);
void LL_TMR_MspDeInit(TMR_TypeDef *Instance);
/**
* @}
*/
/** @addtogroup TMR_LL_Exported_Functions_Group2
* @{
*/
LL_StatusETypeDef LL_TMR_TB_Config(TMR_TypeDef *Instance, TMR_TB_InitTypeDef *sConfig);
LL_StatusETypeDef LL_TMR_IC_Config(TMR_TypeDef *Instance, TMR_IC_InitTypeDef *sConfig);
LL_StatusETypeDef LL_TMR_OC_Config(TMR_TypeDef *Instance, TMR_OC_InitTypeDef *sConfig);
LL_StatusETypeDef LL_TMR_EXT_Config(TMR_TypeDef *Instance, TMR_EXT_InitTypeDef *sConfig);
/**
* @}
*/
/** @addtogroup TMR_LL_Exported_Functions_Group3
* @{
*/
LL_StatusETypeDef LL_TMR_Start(TMR_TypeDef *Instance);
LL_StatusETypeDef LL_TMR_Stop(TMR_TypeDef *Instance);
LL_StatusETypeDef LL_TMR_Start_IT(TMR_TypeDef *Instance);
LL_StatusETypeDef LL_TMR_Stop_IT(TMR_TypeDef *Instance);
LL_StatusETypeDef LL_TMR_Start_Synchro(TMRGRP_TypeDef *TMRGRPx, uint32_t SynchroMask);
LL_StatusETypeDef LL_TMR_Stop_Synchro(TMRGRP_TypeDef *TMRGRPx, uint32_t SynchroMask);
LL_StatusETypeDef LL_TMR_EventGenerate(TMR_TypeDef *Instance, TMR_EventSRCETypeDef EventSource);
/**
* @}
*/
/** @addtogroup TMR_LL_Exported_Functions_Interrupt
* @{
*/
void LL_TMR_IRQHandler(TMR_TypeDef *Instance);
void LL_TMR_TB_UpdateCallback(TMR_TypeDef *Instance);
void LL_TMR_TB_OverflowCallback(TMR_TypeDef *Instance);
void LL_TMR_IC_CaptureCallback(TMR_TypeDef *Instance);
void LL_TMR_IC_OverCaptureCallback(TMR_TypeDef *Instance);
void LL_TMR_OC_CompareMatchedCallback(TMR_TypeDef *Instance);
/**
* @}
*/
/**
* @}
*/
/* Private types -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private constants ---------------------------------------------------------*/
/* Private macros ------------------------------------------------------------*/
/** @defgroup TMR_LL_Private_Macros TMR LL Private Macros
* @brief TMR LL Private Macros
* @{
*/
/**
* @brief Judge is LSTMR instance or not
* @param __INSTANCE__ instance to judge
* @retval 0 isn't LSTMR instance
* @retval 1 is LSTMR instance
*/
#define IS_TMR_LSTMR_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TMR0) || \
((__INSTANCE__) == TMR1) || \
((__INSTANCE__) == TMR2) || \
((__INSTANCE__) == TMR3))
/**
* @brief Judge is HSTMR instance or not
* @param __INSTANCE__ instance to judge
* @retval 0 isn't HSTMR instance
* @retval 1 is HSTMR instance
*/
#define IS_TMR_HSTMR_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TMR4) || \
((__INSTANCE__) == TMR5) || \
((__INSTANCE__) == TMR6) || \
((__INSTANCE__) == TMR7))
/**
* @brief Judge is LSTMR prescaler or not
* @param __PRESCALER__ prescaler to judge
* @retval 0 isn't LSTMR prescaler
* @retval 1 is LSTMR prescaler
*/
#define IS_TMR_LSTMR_PRESCALER(__PRESCALER__) ((__PRESCALER__) <= 0xFFFFU )
/**
* @brief Judge is HSTMR prescaler or not
* @param __PRESCALER__ prescaler to judge
* @retval 0 isn't HSTMR prescaler
* @retval 1 is HSTMR prescaler
*/
#define IS_TMR_HSTMR_PRSCALER(__PRESCALER__) ((__PRESCALER__) <= 0xFFFFFFFFU )
/**
* @brief Judge is LSTMR start value or not
* @param __VAL__ value to judge
* @retval 0 is LSTMR start value
* @retval 1 is LSTMR start value
*/
#define IS_TMR_LSTMR_START_VAL(__VAL__) ((__VAL__) <= 0xFFFFUL)
/**
* @brief Judge is HSTMR start value or not
* @param __VAL__ value to judge
* @retval 0 is HSTMR start value
* @retval 1 is HSTMR start value
*/
#define IS_TMR_HSTMR_START_VAL(__VAL__) ((__VAL__) <= 0xFFFFFFFFUL)
/**
* @brief Judge is LSTMR end value or not
* @param __VAL__ value to judge
* @retval 0 is LSTMR end value
* @retval 1 is LSTMR end value
*/
#define IS_TMR_LSTMR_END_VAL(__VAL__) ((__VAL__) <= 0xFFFFUL)
/**
* @brief Judge is HSTMR end value or not
* @param __VAL__ value to judge
* @retval 0 is HSTMR end value
* @retval 1 is HSTMR end value
*/
#define IS_TMR_HSTMR_END_VAL(__VAL__) ((__VAL__) <= 0xFFFFFFFFUL)
/**
* @brief Judge is LSTMR compare value or not
* @param __VAL__ value to judge
* @retval 0 isn't LSTMR compare value
* @retval 1 is LSTMR compare value
*/
#define IS_TMR_LSTMR_COMPARE_VAL(__VAL__) ((__VAL__) <= 0xFFFFUL)
/**
* @brief Judge is HSTMR compare value or not
* @param __VAL__ value to judge
* @retval 0 isn't HSTMR compare value
* @retval 1 is HSTMR compare value
*/
#define IS_TMR_HSTMR_COMPARE_VAL(__VAL__) ((__VAL__) <= 0xFFFFFFFFUL)
/**
* @brief Judge is TMR input capture filter or not
* @param __FILTER__ filter to judge
* @retval 0 isn't TMR input capture filter
* @retval 1 is TMR input capture filter
*/
#define IS_TMR_ICFILTER(__FILTER__) ((__FILTER__) <= 0xFFUL)
/**
* @}
*/
/* Private functions ---------------------------------------------------------*/
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _TAE32F53XX_LL_TMR_H_ */
/************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/