blob: d493a3f94730513c7de6570ea22daa3ce8bfe4dc [file] [log] [blame]
/*
* -------------------------------------------
* MSP432 DriverLib - v3_10_00_09
* -------------------------------------------
*
* --COPYRIGHT--,BSD,BSD
* Copyright (c) 2014, Texas Instruments Incorporated
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* --/COPYRIGHT--*/
#ifndef TIMERA_H_
#define TIMERA_H_
//*****************************************************************************
//
//! \addtogroup timera_api
//! @{
//
//*****************************************************************************
//*****************************************************************************
//
// If building with a C++ compiler, make all of the definitions in this header
// have a C binding.
//
//*****************************************************************************
#ifdef __cplusplus
extern "C"
{
#endif
#include <stdint.h>
#include <msp.h>
#include <stdbool.h>
//*****************************************************************************
//
// Timer_A Specific Parameters
//
//*****************************************************************************
#define TIMER_A_CMSIS(x) ((Timer_A_Type *) x)
#define TIMER_A_CCR0_INTERRUPT 0x00
#define TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT 0x01
//*****************************************************************************
//
//! ypedef Timer_A_ContinuousModeConfig
//! \brief Type definition for \link _Timer_A_ContinuousModeConfig \endlink
//! structure
//!
//! \struct _Timer_A_ContinuousModeConfig
//! \brief Configuration structure for continuous mode in the \b Timer_A module.
//! See \link Timer_A_configureContinuousMode \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_ContinuousModeConfig
{
uint_fast16_t clockSource;
uint_fast16_t clockSourceDivider;
uint_fast16_t timerInterruptEnable_TAIE;
uint_fast16_t timerClear;
} Timer_A_ContinuousModeConfig;
//*****************************************************************************
//
//! ypedef Timer_A_UpModeConfig
//! \brief Type definition for \link _Timer_A_UpModeConfig \endlink
//! structure
//!
//! \struct _Timer_A_UpModeConfig
//! \brief Configuration structure for Up mode in the \b Timer_A module. See
//! \link Timer_A_configureUpMode \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_UpModeConfig
{
uint_fast16_t clockSource;
uint_fast16_t clockSourceDivider;
uint_fast16_t timerPeriod;
uint_fast16_t timerInterruptEnable_TAIE;
uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE;
uint_fast16_t timerClear;
} Timer_A_UpModeConfig;
//*****************************************************************************
//
//! ypedef Timer_A_UpDownModeConfig
//! \brief Type definition for \link _Timer_A_UpDownModeConfig \endlink
//! structure
//!
//! \struct _Timer_A_UpDownModeConfig
//! \brief Configuration structure for UpDown mode in the \b Timer_A module. See
//! \link Timer_A_configureUpDownMode \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_UpDownModeConfig
{
uint_fast16_t clockSource;
uint_fast16_t clockSourceDivider;
uint_fast16_t timerPeriod;
uint_fast16_t timerInterruptEnable_TAIE;
uint_fast16_t captureCompareInterruptEnable_CCR0_CCIE;
uint_fast16_t timerClear;
} Timer_A_UpDownModeConfig;
//*****************************************************************************
//
//! ypedef Timer_A_CaptureModeConfig
//! \brief Type definition for \link _Timer_A_CaptureModeConfig \endlink
//! structure
//!
//! \struct _Timer_A_CaptureModeConfig
//! \brief Configuration structure for capture mode in the \b Timer_A module.
//! See \link Timer_A_initCapture \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_CaptureModeConfig
{
uint_fast16_t captureRegister;
uint_fast16_t captureMode;
uint_fast16_t captureInputSelect;
uint_fast16_t synchronizeCaptureSource;
uint_fast8_t captureInterruptEnable;
uint_fast16_t captureOutputMode;
} Timer_A_CaptureModeConfig;
//*****************************************************************************
//
//! ypedef Timer_A_CompareModeConfig
//! \brief Type definition for \link _Timer_A_CompareModeConfig \endlink
//! structure
//!
//! \struct _Timer_A_CompareModeConfig
//! \brief Configuration structure for compare mode in the \b Timer_A module.
//! See \link Timer_A_initCompare \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_CompareModeConfig
{
uint_fast16_t compareRegister;
uint_fast16_t compareInterruptEnable;
uint_fast16_t compareOutputMode;
uint_fast16_t compareValue;
} Timer_A_CompareModeConfig;
//*****************************************************************************
//
//! ypedef Timer_A_PWMConfig
//! \brief Type definition for \link _Timer_A_PWMConfig \endlink
//! structure
//!
//! \struct _Timer_A_PWMConfig
//! \brief Configuration structure for PWM mode in the \b Timer_A module. See
//! \link Timer_A_generatePWM \endlink for parameter
//! documentation.
//
//*****************************************************************************
typedef struct _Timer_A_PWMConfig
{
uint_fast16_t clockSource;
uint_fast16_t clockSourceDivider;
uint_fast16_t timerPeriod;
uint_fast16_t compareRegister;
uint_fast16_t compareOutputMode;
uint_fast16_t dutyCycle;
} Timer_A_PWMConfig;
//*****************************************************************************
//
// The following is a parameter determines the maximum difference in counts of
// the TAxR register for a majority vote
//
//*****************************************************************************
#define TIMER_A_THRESHOLD 50
//*****************************************************************************
//
// The following are values that can be passed to the clockSourceDivider
// parameter
//
//*****************************************************************************
#define TIMER_A_CLOCKSOURCE_DIVIDER_1 0x01
#define TIMER_A_CLOCKSOURCE_DIVIDER_2 0x02
#define TIMER_A_CLOCKSOURCE_DIVIDER_4 0x04
#define TIMER_A_CLOCKSOURCE_DIVIDER_8 0x08
#define TIMER_A_CLOCKSOURCE_DIVIDER_3 0x03
#define TIMER_A_CLOCKSOURCE_DIVIDER_5 0x05
#define TIMER_A_CLOCKSOURCE_DIVIDER_6 0x06
#define TIMER_A_CLOCKSOURCE_DIVIDER_7 0x07
#define TIMER_A_CLOCKSOURCE_DIVIDER_10 0x0A
#define TIMER_A_CLOCKSOURCE_DIVIDER_12 0x0C
#define TIMER_A_CLOCKSOURCE_DIVIDER_14 0x0E
#define TIMER_A_CLOCKSOURCE_DIVIDER_16 0x10
#define TIMER_A_CLOCKSOURCE_DIVIDER_20 0x14
#define TIMER_A_CLOCKSOURCE_DIVIDER_24 0x18
#define TIMER_A_CLOCKSOURCE_DIVIDER_28 0x1C
#define TIMER_A_CLOCKSOURCE_DIVIDER_32 0x20
#define TIMER_A_CLOCKSOURCE_DIVIDER_40 0x28
#define TIMER_A_CLOCKSOURCE_DIVIDER_48 0x30
#define TIMER_A_CLOCKSOURCE_DIVIDER_56 0x38
#define TIMER_A_CLOCKSOURCE_DIVIDER_64 0x40
//*****************************************************************************
//
// The following are values that can be passed to the timerMode parameter
//
//*****************************************************************************
#define TIMER_A_STOP_MODE TIMER_A_CTL_MC_0
#define TIMER_A_UP_MODE TIMER_A_CTL_MC_1
#define TIMER_A_CONTINUOUS_MODE TIMER_A_CTL_MC_2
#define TIMER_A_UPDOWN_MODE TIMER_A_CTL_MC_3
//*****************************************************************************
//
// The following are values that can be passed to the timerClear parameter
//
//*****************************************************************************
#define TIMER_A_DO_CLEAR TIMER_A_CTL_CLR
#define TIMER_A_SKIP_CLEAR 0x00
//*****************************************************************************
//
// The following are values that can be passed to the clockSource parameter
//
//*****************************************************************************
#define TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK TIMER_A_CTL_SSEL__TACLK
#define TIMER_A_CLOCKSOURCE_ACLK TIMER_A_CTL_SSEL__ACLK
#define TIMER_A_CLOCKSOURCE_SMCLK TIMER_A_CTL_SSEL__SMCLK
#define TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK TIMER_A_CTL_SSEL__INCLK
//*****************************************************************************
//
// The following are values that can be passed to the timerInterruptEnable_TAIE
// parameter
//
//*****************************************************************************
#define TIMER_A_TAIE_INTERRUPT_ENABLE TIMER_A_CTL_IE
#define TIMER_A_TAIE_INTERRUPT_DISABLE 0x00
//*****************************************************************************
//
// The following are values that can be passed to the
// captureCompareInterruptEnable_CCR0_CCIE parameter
//
//*****************************************************************************
#define TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE TIMER_A_CCTLN_CCIE
#define TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE 0x00
//*****************************************************************************
//
// The following are values that can be passed to the captureInterruptEnable
// parameter
//
//*****************************************************************************
#define TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE 0x00
#define TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE TIMER_A_CCTLN_CCIE
//*****************************************************************************
//
// The following are values that can be passed to the captureInputSelect
// parameter
//
//*****************************************************************************
#define TIMER_A_CAPTURE_INPUTSELECT_CCIxA TIMER_A_CCTLN_CCIS_0
#define TIMER_A_CAPTURE_INPUTSELECT_CCIxB TIMER_A_CCTLN_CCIS_1
#define TIMER_A_CAPTURE_INPUTSELECT_GND TIMER_A_CCTLN_CCIS_2
#define TIMER_A_CAPTURE_INPUTSELECT_Vcc TIMER_A_CCTLN_CCIS_3
//*****************************************************************************
//
// The following are values that can be passed to the compareOutputMode
// parameter
//
//*****************************************************************************
#define TIMER_A_OUTPUTMODE_OUTBITVALUE TIMER_A_CCTLN_OUTMOD_0
#define TIMER_A_OUTPUTMODE_SET TIMER_A_CCTLN_OUTMOD_1
#define TIMER_A_OUTPUTMODE_TOGGLE_RESET TIMER_A_CCTLN_OUTMOD_2
#define TIMER_A_OUTPUTMODE_SET_RESET TIMER_A_CCTLN_OUTMOD_3
#define TIMER_A_OUTPUTMODE_TOGGLE TIMER_A_CCTLN_OUTMOD_4
#define TIMER_A_OUTPUTMODE_RESET TIMER_A_CCTLN_OUTMOD_5
#define TIMER_A_OUTPUTMODE_TOGGLE_SET TIMER_A_CCTLN_OUTMOD_6
#define TIMER_A_OUTPUTMODE_RESET_SET TIMER_A_CCTLN_OUTMOD_7
//*****************************************************************************
//
// The following are values that can be passed to the compareRegister parameter
//
//*****************************************************************************
#define TIMER_A_CAPTURECOMPARE_REGISTER_0 0x02
#define TIMER_A_CAPTURECOMPARE_REGISTER_1 0x04
#define TIMER_A_CAPTURECOMPARE_REGISTER_2 0x06
#define TIMER_A_CAPTURECOMPARE_REGISTER_3 0x08
#define TIMER_A_CAPTURECOMPARE_REGISTER_4 0x0A
#define TIMER_A_CAPTURECOMPARE_REGISTER_5 0x0C
#define TIMER_A_CAPTURECOMPARE_REGISTER_6 0x0E
//*****************************************************************************
//
// The following are values that can be passed to the captureMode parameter
//
//*****************************************************************************
#define TIMER_A_CAPTUREMODE_NO_CAPTURE TIMER_A_CCTLN_CM_0
#define TIMER_A_CAPTUREMODE_RISING_EDGE TIMER_A_CCTLN_CM_1
#define TIMER_A_CAPTUREMODE_FALLING_EDGE TIMER_A_CCTLN_CM_2
#define TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE TIMER_A_CCTLN_CM_3
//*****************************************************************************
//
// The following are values that can be passed to the synchronizeCaptureSource
// parameter
//
//*****************************************************************************
#define TIMER_A_CAPTURE_ASYNCHRONOUS 0x00
#define TIMER_A_CAPTURE_SYNCHRONOUS TIMER_A_CCTLN_SCS
//*****************************************************************************
//
// The following are values that can be passed to the mask parameter
//
//*****************************************************************************
#define TIMER_A_CAPTURE_OVERFLOW TIMER_A_CCTLN_COV
#define TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG TIMER_A_CCTLN_CCIFG
//*****************************************************************************
//
// The following are values that can be passed to the synchronized parameter
//
//*****************************************************************************
#define TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT TIMER_A_CCTLN_SCCI
#define TIMER_A_READ_CAPTURE_COMPARE_INPUT TIMER_A_CCTLN_CCI
#define TIMER_A_CAPTURECOMPARE_INPUT_HIGH 0x01
#define TIMER_A_CAPTURECOMPARE_INPUT_LOW 0x00
//*****************************************************************************
//
// The following are values that can be passed to the outputModeOutBitValue
// parameter
//
//*****************************************************************************
#define TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH TIMER_A_CCTLN_OUT
#define TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW 0x00
//*****************************************************************************
//
// The following are values that can be passed toThe following are values that
// can be returned by the interrupt functions
//
//*****************************************************************************
#define TIMER_A_INTERRUPT_NOT_PENDING 0x00
#define TIMER_A_INTERRUPT_PENDING 0x01
/* Convenience function for setting the PWM Duty Cycle */
#define Timer_A_setDutyCycle(timer,dutyCycle) \
Timer_A_setCompareValue(timer,dutyCycle)
//*****************************************************************************
//
//Prototypes for the APIs.
//
//*****************************************************************************
//*****************************************************************************
//
//! Starts Timer_A counter
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param timerMode selects Clock source. Valid values are
//! - \b TIMER_A_CONTINUOUS_MODE [Default value]
//! - \b TIMER_A_UPDOWN_MODE
//! - \b TIMER_A_UP_MODE
//!
//! \note This function assumes that the timer has been previously configured
//! using Timer_A_configureContinuousMode, Timer_A_configureUpMode or
//! Timer_A_configureUpDownMode.
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_startCounter(uint32_t timer, uint_fast16_t timerMode);
//*****************************************************************************
//
//! Configures Timer_A in continuous mode.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A continuous mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_ContinuousModeConfig \endlink
//! structure.</b>
//! <hr>
//!
//! \param clockSource selects Clock source. Valid values are
//! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
//! - \b TIMER_A_CLOCKSOURCE_ACLK
//! - \b TIMER_A_CLOCKSOURCE_SMCLK
//! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
//! \param timerInterruptEnable_TAIE is the divider for Clock source.
//! Valid values are:
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
//! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
//! interrupt. Valid values are
//! - \b TIMER_A_TAIE_INTERRUPT_ENABLE
//! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
//! \param timerClear decides if Timer_A clock divider, count direction,
//! count need to be reset. Valid values are
//! - \b TIMER_A_DO_CLEAR
//! - \b TIMER_A_SKIP_CLEAR [Default value]
//!
//! \note This API does not start the timer. Timer needs to be started when
//! required using the Timer_A_startCounter API.
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_configureContinuousMode(uint32_t timer,
const Timer_A_ContinuousModeConfig *config);
//*****************************************************************************
//
//! Configures Timer_A in up mode.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A Up mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_UpModeConfig \endlink
//! structure.</b>
//! <hr>
//! \param clockSource selects Clock source. Valid values are
//! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
//! - \b TIMER_A_CLOCKSOURCE_ACLK
//! - \b TIMER_A_CLOCKSOURCE_SMCLK
//! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
//! \param clockSourceDivider is the divider for Clock source. Valid values
//! are:
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
//! \param timerPeriod is the specified Timer_A period. This is the value
//! that gets written into the CCR0. Limited to 16 bits[uint16_t]
//! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
//! interrupt. Valid values are:
//! - \b TIMER_A_TAIE_INTERRUPT_ENABLE and
//! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
//! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable
//! Timer_A CCR0 captureComapre interrupt. Valid values are
//! - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and
//! - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value]
//! \param timerClear decides if Timer_A clock divider, count direction,
//! count need to be reset. Valid values are
//! - \b TIMER_A_DO_CLEAR
//! - \b TIMER_A_SKIP_CLEAR [Default value]
//!
//!\note This API does not start the timer. Timer needs to be started when
//!required using the Timer_A_startCounter API.
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_configureUpMode(uint32_t timer,
const Timer_A_UpModeConfig *config);
//*****************************************************************************
//
//! Configures Timer_A in up down mode.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A UpDown mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_UpDownModeConfig \endlink
//! structure.</b>
//! <hr>
//! \param clockSource selects Clock source. Valid values are
//! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK [Default value]
//! - \b TIMER_A_CLOCKSOURCE_ACLK
//! - \b TIMER_A_CLOCKSOURCE_SMCLK
//! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
//! \param clockSourceDivider is the divider for Clock source. Valid values
//! are:
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1 [Default value]
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
//! \param timerPeriod is the specified Timer_A period
//! \param timerInterruptEnable_TAIE is to enable or disable Timer_A
//! interrupt.
//! Valid values are
//! - \b TIMER_A_TAIE_INTERRUPT_ENABLE
//! - \b TIMER_A_TAIE_INTERRUPT_DISABLE [Default value]
//! \param captureCompareInterruptEnable_CCR0_CCIE is to enable or disable
//! Timer_A CCR0 captureComapre interrupt. Valid values are
//! - \b TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE and
//! - \b TIMER_A_CCIE_CCR0_INTERRUPT_DISABLE [Default value]
//! \param timerClear decides if Timer_A clock divider, count direction, count
//! need to be reset. Valid values are
//! - \b TIMER_A_DO_CLEAR
//! - \b TIMER_A_SKIP_CLEAR [Default value]
//!
//!This API does not start the timer. Timer needs to be started when required
//!using the Timer_A_startCounter API.
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_configureUpDownMode(uint32_t timer,
const Timer_A_UpDownModeConfig *config);
//*****************************************************************************
//
//! Initializes Capture Mode
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A capture mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_CaptureModeConfig \endlink
//! structure.</b>
//! <hr>
//! \param captureRegister selects the Capture register being used. Valid
//! values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param captureMode is the capture mode selected. Valid values are
//! - \b TIMER_A_CAPTUREMODE_NO_CAPTURE [Default value]
//! - \b TIMER_A_CAPTUREMODE_RISING_EDGE
//! - \b TIMER_A_CAPTUREMODE_FALLING_EDGE
//! - \b TIMER_A_CAPTUREMODE_RISING_AND_FALLING_EDGE
//! \param captureInputSelect decides the Input Select
//! - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxA [Default value]
//! - \b TIMER_A_CAPTURE_INPUTSELECT_CCIxB
//! - \b TIMER_A_CAPTURE_INPUTSELECT_GND
//! - \b TIMER_A_CAPTURE_INPUTSELECT_Vcc
//! \param synchronizeCaptureSource decides if capture source should be
//! synchronized with timer clock
//! Valid values are
//! - \b TIMER_A_CAPTURE_ASYNCHRONOUS [Default value]
//! - \b TIMER_A_CAPTURE_SYNCHRONOUS
//! \param captureInterruptEnable is to enable or disable
//! timer captureComapre interrupt. Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value]
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE
//! \param captureOutputMode specifies the ouput mode. Valid values are
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value],
//! - \b TIMER_A_OUTPUTMODE_SET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
//! - \b TIMER_A_OUTPUTMODE_SET_RESET
//! - \b TIMER_A_OUTPUTMODE_TOGGLE,
//! - \b TIMER_A_OUTPUTMODE_RESET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
//! - \b TIMER_A_OUTPUTMODE_RESET_SET
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_initCapture(uint32_t timer,
const Timer_A_CaptureModeConfig *config);
//*****************************************************************************
//
//! Initializes Compare Mode
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A compare mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_CompareModeConfig \endlink
//! structure.</b>
//! <hr>
//! \param compareRegister selects the Capture register being used. Valid
//! values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param compareInterruptEnable is to enable or disable
//! timer captureComapre interrupt. Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE and
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE [Default value]
//! \param compareOutputMode specifies the output mode. Valid values are
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE [Default value],
//! - \b TIMER_A_OUTPUTMODE_SET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
//! - \b TIMER_A_OUTPUTMODE_SET_RESET
//! - \b TIMER_A_OUTPUTMODE_TOGGLE,
//! - \b TIMER_A_OUTPUTMODE_RESET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
//! - \b TIMER_A_OUTPUTMODE_RESET_SET
//! \param compareValue is the count to be compared with in compare mode
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_initCompare(uint32_t timer,
const Timer_A_CompareModeConfig *config);
//*****************************************************************************
//
//! Reset/Clear the timer clock divider, count direction, count
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \returns None
//
//*****************************************************************************
extern void Timer_A_clearTimer(uint32_t timer);
//*****************************************************************************
//
//! Get synchronized capture compare input
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister selects the Capture register being used.
//! Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param synchronizedSetting is to select type of capture compare input.
//! Valid values are
//! - \b TIMER_A_READ_CAPTURE_COMPARE_INPUT
//! - \b TIMER_A_READ_SYNCHRONIZED_CAPTURECOMPAREINPUT
//!
//! \return \b TIMER_A_CAPTURECOMPARE_INPUT_HIGH or
//! - \b TIMER_A_CAPTURECOMPARE_INPUT_LOW
//
//*****************************************************************************
extern uint_fast8_t Timer_A_getSynchronizedCaptureCompareInput(uint32_t timer,
uint_fast16_t captureCompareRegister,
uint_fast16_t synchronizedSetting);
//*****************************************************************************
//
//! Get ouput bit for output mode
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister selects the Capture register being used.
//! Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//!
//! \return \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH or
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW
//
//*****************************************************************************
extern uint_fast8_t Timer_A_getOutputForOutputModeOutBitValue(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Get current capture compare count
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister selects the Capture register being used.
//! Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//!
//! \return current count as uint16_t
//
//*****************************************************************************
extern uint_fast16_t Timer_A_getCaptureCompareCount(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Set ouput bit for output mode
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister selects the Capture register being used.
//! are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! \n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param outputModeOutBitValue the value to be set for out bit.
//! Valid values are:
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_HIGH
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE_LOW
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_setOutputForOutputModeOutBitValue(uint32_t timer,
uint_fast16_t captureCompareRegister,
uint_fast8_t outputModeOutBitValue);
//*****************************************************************************
//
//! Generate a PWM with timer running in up mode
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param config Configuration structure for Timer_A PWM mode
//!
//! <hr>
//! <b>Configuration options for \link Timer_A_PWMConfig \endlink
//! structure.</b>
//! <hr>
//! \param clockSource selects Clock source. Valid values are
//! - \b TIMER_A_CLOCKSOURCE_EXTERNAL_TXCLK
//! - \b TIMER_A_CLOCKSOURCE_ACLK
//! - \b TIMER_A_CLOCKSOURCE_SMCLK
//! - \b TIMER_A_CLOCKSOURCE_INVERTED_EXTERNAL_TXCLK
//! \param clockSourceDivider is the divider for Clock source. Valid values
//! are
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_1
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_2
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_4
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_8
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_3
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_5
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_6
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_7
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_10
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_12
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_14
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_16
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_20
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_24
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_28
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_32
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_40
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_48
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_56
//! - \b TIMER_A_CLOCKSOURCE_DIVIDER_64
//! \param timerPeriod selects the desired timer period
//! \param compareRegister selects the compare register being used.
//! Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! <br>\n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param compareOutputMode specifies the ouput mode. Valid values are:
//! - \b TIMER_A_OUTPUTMODE_OUTBITVALUE,
//! - \b TIMER_A_OUTPUTMODE_SET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_RESET,
//! - \b TIMER_A_OUTPUTMODE_SET_RESET
//! - \b TIMER_A_OUTPUTMODE_TOGGLE,
//! - \b TIMER_A_OUTPUTMODE_RESET,
//! - \b TIMER_A_OUTPUTMODE_TOGGLE_SET,
//! - \b TIMER_A_OUTPUTMODE_RESET_SET
//! \param dutyCycle specifies the dutycycle for the generated waveform
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_generatePWM(uint32_t timer,
const Timer_A_PWMConfig *config);
//*****************************************************************************
//
//! Stops the timer
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \returns None
//
//*****************************************************************************
extern void Timer_A_stopTimer(uint32_t timer);
//*****************************************************************************
//
//! Sets the value of the capture-compare register
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param compareRegister selects the Capture register being used. Valid
//! values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! <br>\n Refer to datasheet to ensure the device has the capture compare
//! register being used
//! \param compareValue is the count to be compared with in compare mode
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_setCompareValue(uint32_t timer,
uint_fast16_t compareRegister, uint_fast16_t compareValue);
//*****************************************************************************
//
//! Returns the current value of the specified timer. Note that according to
//! the Timer A user guide, reading the value of the counter is unreliable
//! if the system clock is asynchronous from the timer clock. The API addresses
//! this concern by reading the timer count register twice and then determining
//! the integrity of the value. If the two values are within 10 timer counts
//! of each other, the value is deemed safe and returned. If not, the process
//! is repeated until a reliable timer value is determined.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \returns The value of the specified timer
//
//*****************************************************************************
extern uint16_t Timer_A_getCounterValue(uint32_t timer);
//*****************************************************************************
//
//! Clears the Timer TAIFG interrupt flag
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_clearInterruptFlag(uint32_t timer);
//*****************************************************************************
//
//! Clears the capture-compare interrupt flag
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister selects the Capture-compare register being
//! used. Valid values are
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_0
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_1
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_2
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_3
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_4
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_5
//! - \b TIMER_A_CAPTURECOMPARE_REGISTER_6
//! <br>Refer to the datasheet to ensure the device has the capture compare
//! register being used
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_clearCaptureCompareInterrupt(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Enable timer interrupt
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_enableInterrupt(uint32_t timer);
//*****************************************************************************
//
//! Disable timer interrupt
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_disableInterrupt(uint32_t timer);
//*****************************************************************************
//
//! Get timer interrupt status
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \return uint32_t. Return interrupt status. Valid values are
//! - \b TIMER_A_INTERRUPT_PENDING
//! - \b TIMER_A_INTERRUPT_NOT_PENDING
//
//*****************************************************************************
extern uint32_t Timer_A_getInterruptStatus(uint32_t timer);
//*****************************************************************************
//
//! Get timer interrupt status masked with the enabled interrupts.
//! This function is useful to call in ISRs to get a list of pending
//! interrupts that are actually enabled and could have caused
//! the ISR.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \return uint32_t. Return interrupt status. Valid values are
//! - \b TIMER_A_INTERRUPT_PENDING
//! - \b TIMER_A_INTERRUPT_NOT_PENDING
//
//*****************************************************************************
extern uint32_t Timer_A_getEnabledInterruptStatus(uint32_t timer);
//*****************************************************************************
//
//! Enable capture compare interrupt
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister is the selected capture compare register
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_enableCaptureCompareInterrupt(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Disable capture compare interrupt
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister is the selected capture compare register
//!
//! \return None
//
//*****************************************************************************
extern void Timer_A_disableCaptureCompareInterrupt(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Return capture compare interrupt status
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister is the selected capture compare register
//!
//! \param mask is the mask for the interrupt status
//! Mask value is the logical OR of any of the following:
//! - \b TIMER_A_CAPTURE_OVERFLOW
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
//!
//! \returns uint32_t. The mask of the set flags.
//! Valid values is an OR of
//! - \b TIMER_A_CAPTURE_OVERFLOW,
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
//
//*****************************************************************************
extern uint32_t Timer_A_getCaptureCompareInterruptStatus(uint32_t timer,
uint_fast16_t captureCompareRegister, uint_fast16_t mask);
//*****************************************************************************
//
//! Return capture compare interrupt status masked with the enabled interrupts.
//! This function is useful to call in ISRs to get a list of pending
//! interrupts that are actually enabled and could have caused
//! the ISR.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//! \param captureCompareRegister is the selected capture compare register
//!
//! \returns uint32_t. The mask of the set flags.
//! Valid values is an OR of
//! - \b TIMER_A_CAPTURE_OVERFLOW,
//! - \b TIMER_A_CAPTURECOMPARE_INTERRUPT_FLAG
//
//*****************************************************************************
extern uint32_t Timer_A_getCaptureCompareEnabledInterruptStatus(uint32_t timer,
uint_fast16_t captureCompareRegister);
//*****************************************************************************
//
//! Registers an interrupt handler for the timer capture compare interrupt.
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \param interruptSelect Selects which timer interrupt handler to
//! register. For the timer module, there are two separate interrupt handlers
//! that can be registered:
//! - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0
//! - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the
//! interrupt for CCR1-6, as well as the overflow interrupt.
//!
//! \param intHandler is a pointer to the function to be called when the
//! timer capture compare interrupt occurs.
//!
//! This function registers the handler to be called when a timer
//! interrupt occurs. This function enables the global interrupt in the
//! interrupt controller; specific Timer_Ainterrupts must be enabled
//! via Timer_A_enableInterrupt(). It is the interrupt handler's
//! responsibility to clear the interrupt source
//! via Timer_A_clearCaptureCompareInterrupt().
//!
//! \return None.
//
//*****************************************************************************
extern void Timer_A_registerInterrupt(uint32_t timer,
uint_fast8_t interruptSelect, void (*intHandler)(void));
//*****************************************************************************
//
//! Unregisters the interrupt handler for the timer
//!
//! \param timer is the instance of the Timer_A module. Valid parameters
//! vary from part to part, but can include:
//! - \b TIMER_A0_BASE
//! - \b TIMER_A1_BASE
//! - \b TIMER_A2_BASE
//! - \b TIMER_A3_BASE
//!
//! \param interruptSelect Selects which timer interrupt handler to
//! register. For the timer module, there are two separate interrupt handlers
//! that can be registered:
//! - \b TIMER_A_CCR0_INTERRUPT Corresponds to the interrupt for CCR0
//! - \b TIMER_A_CCRX_AND_OVERFLOW_INTERRUPT Corresponds to the
//! interrupt for CCR1-6, as well as the overflow interrupt.
//!
//! This function unregisters the handler to be called when timer
//! interrupt occurs. This function also masks off the interrupt in the
//! interrupt controller so that the interrupt handler no longer is called.
//!
//! \sa Interrupt_registerInterrupt() for important information about
//! registering interrupt handlers.
//!
//! \return None.
//
//*****************************************************************************
extern void Timer_A_unregisterInterrupt(uint32_t timer,
uint_fast8_t interruptSelect);
/* Backwards Compatibility Layer */
#define Timer_A_clearTimerInterrupt Timer_A_clearInterruptFlag
#define Timer_A_clear Timer_A_clearTimer
#define Timer_A_initCaptureMode Timer_A_initCapture
#define Timer_A_initCompareMode Timer_A_initCompare
#define Timer_A_initContinuousMode Timer_A_configureContinuousMode
#define Timer_A_initUpDownMode Timer_A_configureUpDownMode
#define Timer_A_initUpMode Timer_A_configureUpMode
#define Timer_A_outputPWM Timer_A_generatePWM
#define Timer_A_stop Timer_A_stopTimer
//*****************************************************************************
//
// Mark the end of the C bindings section for C++ compilers.
//
//*****************************************************************************
#ifdef __cplusplus
}
#endif
//*****************************************************************************
//
// Close the Doxygen group.
//! @}
//
//*****************************************************************************
#endif /* TIMERA_H_ */