mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Tue Jun 24 14:45:08 2014 +0100
Revision:
237:f3da66175598
Child:
375:3d36234a1087
Synchronized with git revision 8ef659bca81f12dfc896b5a7af7c2abbd1a1b8b7

Full URL: https://github.com/mbedmicro/mbed/commit/8ef659bca81f12dfc896b5a7af7c2abbd1a1b8b7/

[NUCLEO_F334R8] Add platform files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 237:f3da66175598 1 /**
mbed_official 237:f3da66175598 2 ******************************************************************************
mbed_official 237:f3da66175598 3 * @file stm32f3xx_hal_hrtim.c
mbed_official 237:f3da66175598 4 * @author MCD Application Team
mbed_official 237:f3da66175598 5 * @version V1.0.1
mbed_official 237:f3da66175598 6 * @date 18-June-2014
mbed_official 237:f3da66175598 7 * @brief TIM HAL module driver.
mbed_official 237:f3da66175598 8 * This file provides firmware functions to manage the following
mbed_official 237:f3da66175598 9 * functionalities of the High Resolution Timer (HRTIM) peripheral:
mbed_official 237:f3da66175598 10 * + HRTIM Initialization
mbed_official 237:f3da66175598 11 * + DLL Calibration Start
mbed_official 237:f3da66175598 12 * + Timer Time Base Unit Configuration
mbed_official 237:f3da66175598 13 * + Simple Time Base Start/Stop
mbed_official 237:f3da66175598 14 * + Simple Time Base Start/Stop Interrupt
mbed_official 237:f3da66175598 15 * + Simple Time Base Start/Stop DMA Request
mbed_official 237:f3da66175598 16 * + Simple Output Compare/PWM Channel Configuration
mbed_official 237:f3da66175598 17 * + Simple Output Compare/PWM Channel Start/Stop Interrupt
mbed_official 237:f3da66175598 18 * + Simple Output Compare/PWM Channel Start/Stop DMA Request
mbed_official 237:f3da66175598 19 * + Simple Input Capture Channel Configuration
mbed_official 237:f3da66175598 20 * + Simple Input Capture Channel Start/Stop Interrupt
mbed_official 237:f3da66175598 21 * + Simple Input Capture Channel Start/Stop DMA Request
mbed_official 237:f3da66175598 22 * + Simple One Pulse Channel Configuration
mbed_official 237:f3da66175598 23 * + Simple One Pulse Channel Start/Stop Interrupt
mbed_official 237:f3da66175598 24 * + HRTIM External Synchronization Configuration
mbed_official 237:f3da66175598 25 * + HRTIM Burst Mode Controller Configuration
mbed_official 237:f3da66175598 26 * + HRTIM Burst Mode Controller Enabling
mbed_official 237:f3da66175598 27 * + HRTIM External Events Conditioning Configuration
mbed_official 237:f3da66175598 28 * + HRTIM Faults Conditioning Configuration
mbed_official 237:f3da66175598 29 * + HRTIM Faults Enabling
mbed_official 237:f3da66175598 30 * + HRTIM ADC trigger Configuration
mbed_official 237:f3da66175598 31 * + Waveform Timer Configuration
mbed_official 237:f3da66175598 32 * + Waveform Event Filtering Configuration
mbed_official 237:f3da66175598 33 * + Waveform Dead Time Insertion Configuration
mbed_official 237:f3da66175598 34 * + Waveform Chopper Mode Configuration
mbed_official 237:f3da66175598 35 * + Waveform Compare Unit Configuration
mbed_official 237:f3da66175598 36 * + Waveform Capture Unit Configuration
mbed_official 237:f3da66175598 37 * + Waveform Output Configuration
mbed_official 237:f3da66175598 38 * + Waveform Counter Start/Stop
mbed_official 237:f3da66175598 39 * + Waveform Counter Start/Stop Interrupt
mbed_official 237:f3da66175598 40 * + Waveform Counter Start/Stop DMA Request
mbed_official 237:f3da66175598 41 * + Waveform Output Enabling
mbed_official 237:f3da66175598 42 * + Waveform Output Level Set/Get
mbed_official 237:f3da66175598 43 * + Waveform Output State Get
mbed_official 237:f3da66175598 44 * + Waveform Burst DMA Operation Configuration
mbed_official 237:f3da66175598 45 * + Waveform Burst DMA Operation Start
mbed_official 237:f3da66175598 46 * + Waveform Timer Counter Software Reset
mbed_official 237:f3da66175598 47 * + Waveform Capture Software Trigger
mbed_official 237:f3da66175598 48 * + Waveform Burst Mode Controller Software Trigger
mbed_official 237:f3da66175598 49 * + Waveform Timer Pre-loadable Registers Update Enabling
mbed_official 237:f3da66175598 50 * + Waveform Timer Pre-loadable Registers Software Update
mbed_official 237:f3da66175598 51 * + Waveform Timer Delayed Protection Status Get
mbed_official 237:f3da66175598 52 * + Waveform Timer Burst Status Get
mbed_official 237:f3da66175598 53 * + Waveform Timer Push-Pull Status Get
mbed_official 237:f3da66175598 54 * + Peripheral State Get
mbed_official 237:f3da66175598 55 @verbatim
mbed_official 237:f3da66175598 56 ==============================================================================
mbed_official 237:f3da66175598 57 ##### Simple mode v.s. waveform mode #####
mbed_official 237:f3da66175598 58 ==============================================================================
mbed_official 237:f3da66175598 59 [..] The HRTIM HAL API is split into 2 categories:
mbed_official 237:f3da66175598 60 (#)Simple functions: these functions allow for using a HRTIM timer as a
mbed_official 237:f3da66175598 61 general purpose timer with high resolution capabilities.
mbed_official 237:f3da66175598 62 Following simple modes are proposed:
mbed_official 237:f3da66175598 63 (+)Output compare mode
mbed_official 237:f3da66175598 64 (+)PWM output mode
mbed_official 237:f3da66175598 65 (+)Input capture mode
mbed_official 237:f3da66175598 66 (+)One pulse mode
mbed_official 237:f3da66175598 67 HRTIM simple modes are managed through the set of functions named
mbed_official 237:f3da66175598 68 HAL_HRTIM_Simple<Function>. These functions are similar in name and usage
mbed_official 237:f3da66175598 69 to the one defined for the TIM peripheral. When a HRTIM timer operates in
mbed_official 237:f3da66175598 70 simple mode, only a very limited set of HRTIM features are used.
mbed_official 237:f3da66175598 71 (#)Waveform functions: These functions allow taking advantage of the HRTIM
mbed_official 237:f3da66175598 72 flexibility to produce numerous types of control signal. When a HRTIM timer
mbed_official 237:f3da66175598 73 operates in waveform mode, all the HRTIM features are accessible without
mbed_official 237:f3da66175598 74 any restriction. HRTIM waveform modes are managed through the set of
mbed_official 237:f3da66175598 75 functions named HAL_HRTIM_Waveform<Function>
mbed_official 237:f3da66175598 76
mbed_official 237:f3da66175598 77 ==============================================================================
mbed_official 237:f3da66175598 78 ##### How to use this driver #####
mbed_official 237:f3da66175598 79 ==============================================================================
mbed_official 237:f3da66175598 80 [..]
mbed_official 237:f3da66175598 81 (#)Initialize the HRTIM low level resources by implementing the
mbed_official 237:f3da66175598 82 HAL_HRTIM_MspInit() function:
mbed_official 237:f3da66175598 83 (##)Enable the HRTIM clock source using __HRTIMx_CLK_ENABLE()
mbed_official 237:f3da66175598 84 (##)Connect HRTIM pins to MCU I/Os
mbed_official 237:f3da66175598 85 (+++) Enable the clock for the HRTIM GPIOs using the following
mbed_official 237:f3da66175598 86 function: __GPIOx_CLK_ENABLE()
mbed_official 237:f3da66175598 87 (+++) Configure these GPIO pins in Alternate Function mode using
mbed_official 237:f3da66175598 88 HAL_GPIO_Init()
mbed_official 237:f3da66175598 89 (##)When using DMA to control data transfer (e.g HAL_HRTIM_SimpleBaseStart_DMA())
mbed_official 237:f3da66175598 90 (+++)Enable the DMAx interface clock using __DMAx_CLK_ENABLE()
mbed_official 237:f3da66175598 91 (+++)Initialize the DMA handle
mbed_official 237:f3da66175598 92 (+++)Associate the initialized DMA handle to the appropriate DMA
mbed_official 237:f3da66175598 93 handle of the HRTIM handle using __HAL_LINKDMA()
mbed_official 237:f3da66175598 94 (+++)Initialize the DMA channel using HAL_DMA_Init()
mbed_official 237:f3da66175598 95 (+++)Configure the priority and enable the NVIC for the transfer
mbed_official 237:f3da66175598 96 complete interrupt on the DMA channel using HAL_NVIC_SetPriority()
mbed_official 237:f3da66175598 97 and HAL_NVIC_EnableIRQ()
mbed_official 237:f3da66175598 98 (##)In case of using interrupt mode (e.g HAL_HRTIM_SimpleBaseStart_IT())
mbed_official 237:f3da66175598 99 (+++)Configure the priority and enable the NVIC for the concerned
mbed_official 237:f3da66175598 100 HRTIM interrupt using HAL_NVIC_SetPriority() and HAL_NVIC_EnableIRQ()
mbed_official 237:f3da66175598 101
mbed_official 237:f3da66175598 102 (#)Initialize the HRTIM HAL using HAL_HRTIM_Init(). The HRTIM configuration
mbed_official 237:f3da66175598 103 structure (field of the HRTIM handle) specifies which global interrupt of
mbed_official 237:f3da66175598 104 whole HRTIM must be enabled (Burst mode period, System fault, Faults).
mbed_official 237:f3da66175598 105 It also contains the HRTIM external synchronization configuration. HRTIM
mbed_official 237:f3da66175598 106 can act as a master (generating a synchronization signal) or as a slave
mbed_official 237:f3da66175598 107 (waiting for a trigger to be synchronized).
mbed_official 237:f3da66175598 108
mbed_official 237:f3da66175598 109 (#)Start the high resolution unit using HAL_HRTIM_DLLCalibrationStart(). DLL
mbed_official 237:f3da66175598 110 calibration is executed periodically and compensate for potential voltage
mbed_official 237:f3da66175598 111 and temperature drifts. DLL calibration period is specified by the
mbed_official 237:f3da66175598 112 CalibrationRate argument.
mbed_official 237:f3da66175598 113
mbed_official 237:f3da66175598 114 (#)HRTIM timers cannot be used until the high resolution unit is ready. This
mbed_official 237:f3da66175598 115 can be checked using HAL_HRTIM_PollForDLLCalibration(): this function returns
mbed_official 237:f3da66175598 116 HAL_OK if DLL calibration is completed or HAL_TIMEOUT if the DLL calibration
mbed_official 237:f3da66175598 117 is still going on when timeout given is argument expires. DLL calibration
mbed_official 237:f3da66175598 118 can also be started in interrupt mode using HAL_HRTIM_DLLCalibrationStart_IT().
mbed_official 237:f3da66175598 119 In that case an interrupt is generated when the DLL calibration is completed.
mbed_official 237:f3da66175598 120 Note that as DLL calibration is executed on a periodic basis an interrupt
mbed_official 237:f3da66175598 121 will be generated at the end of every DLL calibration operation
mbed_official 237:f3da66175598 122 (worst case: one interrupt every 14 micro seconds !).
mbed_official 237:f3da66175598 123
mbed_official 237:f3da66175598 124 (#) Configure HRTIM resources shared by all HRTIM timers
mbed_official 237:f3da66175598 125 (##)Burst Mode Controller:
mbed_official 237:f3da66175598 126 (+++)HAL_HRTIM_BurstModeConfig(): configures the HRTIM burst mode
mbed_official 237:f3da66175598 127 controller: operating mode (continuous or -shot mode), clock
mbed_official 237:f3da66175598 128 (source, prescaler) , trigger(s), period, idle duration.
mbed_official 237:f3da66175598 129 (##)External Events Conditionning:
mbed_official 237:f3da66175598 130 (+++)HAL_HRTIM_EventConfig(): configures the conditioning of an
mbed_official 237:f3da66175598 131 external event channel: source, polarity, edge-sensitivity.
mbed_official 237:f3da66175598 132 External event can be used as triggers (timer reset, input
mbed_official 237:f3da66175598 133 capture, burst mode, ADC triggers, delayed protection, …)
mbed_official 237:f3da66175598 134 They can also be used to set or reset timer outputs. Up to
mbed_official 237:f3da66175598 135 10 event channels are available.
mbed_official 237:f3da66175598 136 (+++)HAL_HRTIM_EventPrescalerConfig(): configures the external
mbed_official 237:f3da66175598 137 event sampling clock (used for digital filtering).
mbed_official 237:f3da66175598 138 (##)Fault Conditionning:
mbed_official 237:f3da66175598 139 (+++)HAL_HRTIM_FaultConfig(): configures the conditioning of a
mbed_official 237:f3da66175598 140 fault channel: source, polarity, edge-sensitivity. Fault
mbed_official 237:f3da66175598 141 channels are used to disable the outputs in case of an
mbed_official 237:f3da66175598 142 abnormal operation. Up to 5 fault channels are available.
mbed_official 237:f3da66175598 143 (+++)HAL_HRTIM_FaultPrescalerConfig(): configures the fault
mbed_official 237:f3da66175598 144 sampling clock (used for digital filtering).
mbed_official 237:f3da66175598 145 (+++)HAL_HRTIM_FaultModeCtl(): Enables or disables fault input(s)
mbed_official 237:f3da66175598 146 circuitry. By default all fault inputs are disabled.
mbed_official 237:f3da66175598 147 (##)ADC trigger:
mbed_official 237:f3da66175598 148 (+++)HAL_HRTIM_ADCTriggerConfig(): configures the source triggering
mbed_official 237:f3da66175598 149 the update of the ADC trigger register and the ADC trigger.
mbed_official 237:f3da66175598 150 4 independent triggers are available to start both the regular
mbed_official 237:f3da66175598 151 and the injected sequencers of the 2 ADCs
mbed_official 237:f3da66175598 152
mbed_official 237:f3da66175598 153 (#) Configure HRTIM timer time base using HAL_HRTIM_TimeBaseConfig(). This
mbed_official 237:f3da66175598 154 function must be called whatever the HRTIM timer operating mode is
mbed_official 237:f3da66175598 155 (simple v.s. waveform). It configures mainly:
mbed_official 237:f3da66175598 156 (##)The HRTIM timer counter operating mode (continuous, one shot)
mbed_official 237:f3da66175598 157 (##)The HRTIM timer clock prescaler
mbed_official 237:f3da66175598 158 (##)The HRTIM timer period
mbed_official 237:f3da66175598 159 (##)The HRTIM timer repetition counter
mbed_official 237:f3da66175598 160
mbed_official 237:f3da66175598 161 (#) If the HRTIM timer operates in simple mode:
mbed_official 237:f3da66175598 162 (##)Simple time base: HAL_HRTIM_SimpleBaseStart(),HAL_HRTIM_SimpleBaseStop(),
mbed_official 237:f3da66175598 163 HAL_HRTIM_SimpleBaseStart_IT(),HAL_HRTIM_SimpleBaseStop_IT(),
mbed_official 237:f3da66175598 164 HAL_HRTIM_SimpleBaseStart_DMA(),HAL_HRTIM_SimpleBaseStop_DMA().
mbed_official 237:f3da66175598 165 (##)Simple output compare: HAL_HRTIM_SimpleOCChannelConfig(),
mbed_official 237:f3da66175598 166 HAL_HRTIM_SimpleOCStart(),HAL_HRTIM_SimpleOCStop(),
mbed_official 237:f3da66175598 167 HAL_HRTIM_SimpleOCStart_IT(),HAL_HRTIM_SimpleOCStop_IT(),
mbed_official 237:f3da66175598 168 HAL_HRTIM_SimpleOCStart_DMA(),HAL_HRTIM_SimpleOCStop_DMA(),
mbed_official 237:f3da66175598 169 (##)Simple PWM output: HAL_HRTIM_SimplePWMChannelConfig(),
mbed_official 237:f3da66175598 170 HAL_HRTIM_SimplePWMStart(),HAL_HRTIM_SimplePWMStop(),
mbed_official 237:f3da66175598 171 HAL_HRTIM_SimplePWMStart_IT(),HAL_HRTIM_SimplePWMStop_IT(),
mbed_official 237:f3da66175598 172 HAL_HRTIM_SimplePWMStart_DMA(),HAL_HRTIM_SimplePWMStop_DMA(),
mbed_official 237:f3da66175598 173 (##)Simple input capture: HAL_HRTIM_SimpleCaptureChannelConfig(),
mbed_official 237:f3da66175598 174 HAL_HRTIM_SimpleCaptureStart(),HAL_HRTIM_SimpleCaptureStop(),
mbed_official 237:f3da66175598 175 HAL_HRTIM_SimpleCaptureStart_IT(),HAL_HRTIM_SimpleCaptureStop_IT(),
mbed_official 237:f3da66175598 176 HAL_HRTIM_SimpleCaptureStart_DMA(),HAL_HRTIM_SimpleCaptureStop_DMA().
mbed_official 237:f3da66175598 177 (##)Simple one pulse: HAL_HRTIM_SimpleOnePulseChannelConfig(),
mbed_official 237:f3da66175598 178 HAL_HRTIM_SimpleOnePulseStart(),HAL_HRTIM_SimpleOnePulseStop(),
mbed_official 237:f3da66175598 179 HAL_HRTIM_SimpleOnePulseStart_IT(),HAL_HRTIM_SimpleOnePulseStop_It().
mbed_official 237:f3da66175598 180
mbed_official 237:f3da66175598 181 (#) If the HRTIM timer operates in waveform mode:
mbed_official 237:f3da66175598 182 (##)Completes waveform timer configuration
mbed_official 237:f3da66175598 183 (+++)HAL_HRTIM_WaveformTimerConfig(): configuration of a HRTIM
mbed_official 237:f3da66175598 184 timer operating in wave form mode mainly consists in:
mbed_official 237:f3da66175598 185 - Enabling the HRTIM timer interrupts and DMA requests,
mbed_official 237:f3da66175598 186 - Enabling the half mode for the HRTIM timer,
mbed_official 237:f3da66175598 187 - Defining how the HRTIM timer reacts to external
mbed_official 237:f3da66175598 188 synchronization input,
mbed_official 237:f3da66175598 189 - Enabling the push-pull mode for the HRTIM timer,
mbed_official 237:f3da66175598 190 - Enabling the fault channels for the HRTIM timer,
mbed_official 237:f3da66175598 191 - Enabling the deadtime insertion for the HRTIM timer,
mbed_official 237:f3da66175598 192 - Setting the delayed protection mode for the HRTIM timer
mbed_official 237:f3da66175598 193 (source and outputs on which the delayed protection are applied),
mbed_official 237:f3da66175598 194 - Specifying the HRTIM timer update and reset triggers,
mbed_official 237:f3da66175598 195 - Specifying the HRTIM timer registers update policy (preload enabling, …).
mbed_official 237:f3da66175598 196 (+++)HAL_HRTIM_TimerEventFilteringConfig(): configures external
mbed_official 237:f3da66175598 197 event blanking and windowingcircuitry of a HRTIM timer:
mbed_official 237:f3da66175598 198 - Blanking: to mask external events during a defined
mbed_official 237:f3da66175598 199 time period
mbed_official 237:f3da66175598 200 - Windowing: to enable external events only during
mbed_official 237:f3da66175598 201 a defined time period
mbed_official 237:f3da66175598 202 (+++)HAL_HRTIM_DeadTimeConfig(): configures the deadtime insertion
mbed_official 237:f3da66175598 203 unit for a HRTIM timer. Allows to generate a couple of
mbed_official 237:f3da66175598 204 complementary signals from a single reference waveform,
mbed_official 237:f3da66175598 205 with programmable delays between active state.
mbed_official 237:f3da66175598 206 (+++)HAL_HRTIM_ChopperModeConfig(): configures the parameters of
mbed_official 237:f3da66175598 207 the high-frequency carrier signal added on top of the timing
mbed_official 237:f3da66175598 208 unit output. Chopper mode can be enabled or disabled for each
mbed_official 237:f3da66175598 209 timer output separately (see HAL_HRTIM_WaveformOutputConfig()).
mbed_official 237:f3da66175598 210 (+++)HAL_HRTIM_BurstDMAConfig(): configures the burst DMA burst
mbed_official 237:f3da66175598 211 controller. Allows having multiple HRTIM registers updated
mbed_official 237:f3da66175598 212 with a single DMA request. The burst DMA operation is started
mbed_official 237:f3da66175598 213 by calling HAL_HRTIM_BurstDMATransfer().
mbed_official 237:f3da66175598 214 (+++)HAL_HRTIM_WaveformCompareConfig():configures the compare unit
mbed_official 237:f3da66175598 215 of a HRTIM timer. This operation consists in setting the
mbed_official 237:f3da66175598 216 compare value and possibly specifying the auto delayed mode
mbed_official 237:f3da66175598 217 for compare units 2 and 4 (allows to have compare events
mbed_official 237:f3da66175598 218 generated relatively to capture events). Note that when auto
mbed_official 237:f3da66175598 219 delayed mode is needed, the capture unit associated to the
mbed_official 237:f3da66175598 220 compare unit must be configured separately.
mbed_official 237:f3da66175598 221 (+++)HAL_HRTIM_WaveformCaptureConfig(): configures the capture unit
mbed_official 237:f3da66175598 222 of a HRTIM timer. This operation consists in specifying the
mbed_official 237:f3da66175598 223 source(s) triggering the capture (timer register update event,
mbed_official 237:f3da66175598 224 external event, timer output set/reset event, other HRTIM
mbed_official 237:f3da66175598 225 timer related events).
mbed_official 237:f3da66175598 226 (+++)HAL_HRTIM_WaveformOutputConfig(): configuration HRTIM timer
mbed_official 237:f3da66175598 227 output manly consists in:
mbed_official 237:f3da66175598 228 - Setting the output polarity (active high or active low),
mbed_official 237:f3da66175598 229 - Defining the set/reset crossbar for the output,
mbed_official 237:f3da66175598 230 - Specifying the fault level (active or inactive) in IDLE
mbed_official 237:f3da66175598 231 and FAULT states.,
mbed_official 237:f3da66175598 232 (##)Set waveform timer output(s) level
mbed_official 237:f3da66175598 233 (+++)HAL_HRTIM_WaveformSetOutputLevel(): forces the output to its
mbed_official 237:f3da66175598 234 active or inactive level. For example, when deadtime insertion
mbed_official 237:f3da66175598 235 is enabled it is necessary to force the output level by software
mbed_official 237:f3da66175598 236 to have the outputs in a complementary state as soon as the RUN mode is entered.
mbed_official 237:f3da66175598 237 (##)Enable/Disable waveform timer output(s)
mbed_official 237:f3da66175598 238 (+++)HAL_HRTIM_WaveformOutputStart(),HAL_HRTIM_WaveformOutputStop().
mbed_official 237:f3da66175598 239 (##)Start/Stop waveform HRTIM timer(s).
mbed_official 237:f3da66175598 240 (+++)HAL_HRTIM_WaveformCounterStart(),HAL_HRTIM_WaveformCounterStop(),
mbed_official 237:f3da66175598 241 (+++)HAL_HRTIM_WaveformCounterStart_IT(),HAL_HRTIM_WaveformCounterStop_IT(),
mbed_official 237:f3da66175598 242 (+++)HAL_HRTIM_WaveformCounterStart()_DMA,HAL_HRTIM_WaveformCounterStop_DMA(),
mbed_official 237:f3da66175598 243
mbed_official 237:f3da66175598 244 (##)Burst mode controller enabling:
mbed_official 237:f3da66175598 245 (+++)HAL_HRTIM_BurstModeCtl(): activates or de-activates the
mbed_official 237:f3da66175598 246 burst mode controller.
mbed_official 237:f3da66175598 247
mbed_official 237:f3da66175598 248 (##)Some HRTIM operations can be triggered by software:
mbed_official 237:f3da66175598 249 (+++)HAL_HRTIM_BurstModeSoftwareTrigger(): calling this function
mbed_official 237:f3da66175598 250 trigs the burst operation.
mbed_official 237:f3da66175598 251 (+++)HAL_HRTIM_SoftwareCapture(): calling this function trigs the
mbed_official 237:f3da66175598 252 capture of the HRTIM timer counter.
mbed_official 237:f3da66175598 253 (+++)HAL_HRTIM_SoftwareUpdate(): calling this function trigs the
mbed_official 237:f3da66175598 254 update of the pre-loadable registers of the HRTIM timer ()
mbed_official 237:f3da66175598 255 (+++)HAL_HRTIM_SoftwareReset():calling this function resets the
mbed_official 237:f3da66175598 256 HRTIM timer counter.
mbed_official 237:f3da66175598 257
mbed_official 237:f3da66175598 258 (##)Some functions can be used anytime to retrieve HRTIM timer related
mbed_official 237:f3da66175598 259 information
mbed_official 237:f3da66175598 260 (+++)HAL_HRTIM_GetCapturedValue(): returns actual value of the
mbed_official 237:f3da66175598 261 capture register of the designated capture unit.
mbed_official 237:f3da66175598 262 (+++)HAL_HRTIM_WaveformGetOutputLevel(): returns actual level
mbed_official 237:f3da66175598 263 (ACTIVE/INACTIVE) of the designated timer output.
mbed_official 237:f3da66175598 264 (+++)HAL_HRTIM_WaveformGetOutputState():returns actual state
mbed_official 237:f3da66175598 265 (IDLE/RUN/FAULT) of the designated timer output.
mbed_official 237:f3da66175598 266 (+++)HAL_HRTIM_GetDelayedProtectionStatus():returns actual level
mbed_official 237:f3da66175598 267 (ACTIVE/INACTIVE) of the designated output when the delayed
mbed_official 237:f3da66175598 268 protection was triggered.
mbed_official 237:f3da66175598 269 (+++)HAL_HRTIM_GetBurstStatus(): returns the actual status
mbed_official 237:f3da66175598 270 (ACTIVE/INACTIVE) of the burst mode controller.
mbed_official 237:f3da66175598 271 (+++)HAL_HRTIM_GetCurrentPushPullStatus(): when the push-pull mode
mbed_official 237:f3da66175598 272 is enabled for the HRTIM timer (see HAL_HRTIM_WaveformTimerConfig()),
mbed_official 237:f3da66175598 273 the push-pull indicates on which output the signal is currently
mbed_official 237:f3da66175598 274 active (e.g signal applied on output 1 and output 2 forced
mbed_official 237:f3da66175598 275 inactive or vice versa).
mbed_official 237:f3da66175598 276 (+++)HAL_HRTIM_GetIdlePushPullStatus(): when the push-pull mode
mbed_official 237:f3da66175598 277 is enabled for the HRTIM timer (see HAL_HRTIM_WaveformTimerConfig()),
mbed_official 237:f3da66175598 278 the idle push-pull status indicates during which period the
mbed_official 237:f3da66175598 279 delayed protection request occurred (e.g. protection occurred
mbed_official 237:f3da66175598 280 when the output 1 was active and output 2 forced inactive or
mbed_official 237:f3da66175598 281 vice versa).
mbed_official 237:f3da66175598 282
mbed_official 237:f3da66175598 283 (##)Some functions can be used anytime to retrieve actual HRTIM status
mbed_official 237:f3da66175598 284 (+++)HAL_HRTIM_GetState(): returns actual HRTIM instance HAL state.
mbed_official 237:f3da66175598 285
mbed_official 237:f3da66175598 286 @endverbatim
mbed_official 237:f3da66175598 287
mbed_official 237:f3da66175598 288 ******************************************************************************
mbed_official 237:f3da66175598 289 * @attention
mbed_official 237:f3da66175598 290 *
mbed_official 237:f3da66175598 291 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 237:f3da66175598 292 *
mbed_official 237:f3da66175598 293 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 237:f3da66175598 294 * are permitted provided that the following conditions are met:
mbed_official 237:f3da66175598 295 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 237:f3da66175598 296 * this list of conditions and the following disclaimer.
mbed_official 237:f3da66175598 297 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 237:f3da66175598 298 * this list of conditions and the following disclaimer in the documentation
mbed_official 237:f3da66175598 299 * and/or other materials provided with the distribution.
mbed_official 237:f3da66175598 300 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 237:f3da66175598 301 * may be used to endorse or promote products derived from this software
mbed_official 237:f3da66175598 302 * without specific prior written permission.
mbed_official 237:f3da66175598 303 *
mbed_official 237:f3da66175598 304 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 237:f3da66175598 305 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 237:f3da66175598 306 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 237:f3da66175598 307 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 237:f3da66175598 308 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 237:f3da66175598 309 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 237:f3da66175598 310 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 237:f3da66175598 311 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 237:f3da66175598 312 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 237:f3da66175598 313 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 237:f3da66175598 314 *
mbed_official 237:f3da66175598 315 ******************************************************************************
mbed_official 237:f3da66175598 316 */
mbed_official 237:f3da66175598 317
mbed_official 237:f3da66175598 318 /* Includes ------------------------------------------------------------------*/
mbed_official 237:f3da66175598 319 #include "stm32f3xx_hal.h"
mbed_official 237:f3da66175598 320
mbed_official 237:f3da66175598 321 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 237:f3da66175598 322 * @{
mbed_official 237:f3da66175598 323 */
mbed_official 237:f3da66175598 324
mbed_official 237:f3da66175598 325 /** @defgroup HRTIM
mbed_official 237:f3da66175598 326 * @brief HRTIM HAL module driver
mbed_official 237:f3da66175598 327 * @{
mbed_official 237:f3da66175598 328 */
mbed_official 237:f3da66175598 329
mbed_official 237:f3da66175598 330 #ifdef HAL_HRTIM_MODULE_ENABLED
mbed_official 237:f3da66175598 331
mbed_official 237:f3da66175598 332 #if defined(STM32F334x8)
mbed_official 237:f3da66175598 333
mbed_official 237:f3da66175598 334 /* Private typedef -----------------------------------------------------------*/
mbed_official 237:f3da66175598 335 /* Private define ------------------------------------------------------------*/
mbed_official 237:f3da66175598 336 #define HRTIM_FLTR_FLTxEN (HRTIM_FLTR_FLT1EN |\
mbed_official 237:f3da66175598 337 HRTIM_FLTR_FLT2EN |\
mbed_official 237:f3da66175598 338 HRTIM_FLTR_FLT3EN |\
mbed_official 237:f3da66175598 339 HRTIM_FLTR_FLT4EN | \
mbed_official 237:f3da66175598 340 HRTIM_FLTR_FLT5EN)
mbed_official 237:f3da66175598 341
mbed_official 237:f3da66175598 342 #define HRTIM_TIMCR_TIMUPDATETRIGGER (HRTIM_TIMUPDATETRIGGER_MASTER |\
mbed_official 237:f3da66175598 343 HRTIM_TIMUPDATETRIGGER_TIMER_A |\
mbed_official 237:f3da66175598 344 HRTIM_TIMUPDATETRIGGER_TIMER_B |\
mbed_official 237:f3da66175598 345 HRTIM_TIMUPDATETRIGGER_TIMER_C |\
mbed_official 237:f3da66175598 346 HRTIM_TIMUPDATETRIGGER_TIMER_D |\
mbed_official 237:f3da66175598 347 HRTIM_TIMUPDATETRIGGER_TIMER_E)
mbed_official 237:f3da66175598 348
mbed_official 237:f3da66175598 349 /* Private macro -------------------------------------------------------------*/
mbed_official 237:f3da66175598 350 /* Private variables ---------------------------------------------------------*/
mbed_official 237:f3da66175598 351 static uint32_t TimerIdxToTimerId[] =
mbed_official 237:f3da66175598 352 {
mbed_official 237:f3da66175598 353 HRTIM_TIMERID_TIMER_A,
mbed_official 237:f3da66175598 354 HRTIM_TIMERID_TIMER_B,
mbed_official 237:f3da66175598 355 HRTIM_TIMERID_TIMER_C,
mbed_official 237:f3da66175598 356 HRTIM_TIMERID_TIMER_D,
mbed_official 237:f3da66175598 357 HRTIM_TIMERID_TIMER_E,
mbed_official 237:f3da66175598 358 HRTIM_TIMERID_MASTER,
mbed_official 237:f3da66175598 359 };
mbed_official 237:f3da66175598 360
mbed_official 237:f3da66175598 361 /* Private function prototypes -----------------------------------------------*/
mbed_official 237:f3da66175598 362 /* Private functions ---------------------------------------------------------*/
mbed_official 237:f3da66175598 363 static void HRTIM_MasterBase_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 364 HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg);
mbed_official 237:f3da66175598 365
mbed_official 237:f3da66175598 366 static void HRTIM_TimingUnitBase_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 367 uint32_t TimerIdx,
mbed_official 237:f3da66175598 368 HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg);
mbed_official 237:f3da66175598 369
mbed_official 237:f3da66175598 370 static void HRTIM_MasterWaveform_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 371 HRTIM_TimerCfgTypeDef * pTimerCfg);
mbed_official 237:f3da66175598 372
mbed_official 237:f3da66175598 373 static void HRTIM_TimingUnitWaveform_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 374 uint32_t TimerIdx,
mbed_official 237:f3da66175598 375 HRTIM_TimerCfgTypeDef * pTimerCfg);
mbed_official 237:f3da66175598 376
mbed_official 237:f3da66175598 377 static void HRTIM_CompareUnitConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 378 uint32_t TimerIdx,
mbed_official 237:f3da66175598 379 uint32_t CompareUnit,
mbed_official 237:f3da66175598 380 HRTIM_CompareCfgTypeDef * pCompareCfg);
mbed_official 237:f3da66175598 381
mbed_official 237:f3da66175598 382 static void HRTIM_CaptureUnitConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 383 uint32_t TimerIdx,
mbed_official 237:f3da66175598 384 uint32_t CaptureUnit,
mbed_official 237:f3da66175598 385 uint32_t Event);
mbed_official 237:f3da66175598 386
mbed_official 237:f3da66175598 387 static void HRTIM_OutputConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 388 uint32_t TimerIdx,
mbed_official 237:f3da66175598 389 uint32_t Output,
mbed_official 237:f3da66175598 390 HRTIM_OutputCfgTypeDef * pOutputCfg);
mbed_official 237:f3da66175598 391
mbed_official 237:f3da66175598 392 static void HRTIM_EventConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 393 uint32_t Event,
mbed_official 237:f3da66175598 394 HRTIM_EventCfgTypeDef * pEventCfg);
mbed_official 237:f3da66175598 395
mbed_official 237:f3da66175598 396 static void HRTIM_TIM_ResetConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 397 uint32_t TimerIdx,
mbed_official 237:f3da66175598 398 uint32_t Event);
mbed_official 237:f3da66175598 399
mbed_official 237:f3da66175598 400 static uint32_t HRTIM_GetITFromOCMode(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 401 uint32_t TimerIdx,
mbed_official 237:f3da66175598 402 uint32_t OCChannel);
mbed_official 237:f3da66175598 403
mbed_official 237:f3da66175598 404 static uint32_t HRTIM_GetDMAFromOCMode(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 405 uint32_t TimerIdx,
mbed_official 237:f3da66175598 406 uint32_t OCChannel);
mbed_official 237:f3da66175598 407
mbed_official 237:f3da66175598 408 static DMA_HandleTypeDef * HRTIM_GetDMAHandleFromTimerIdx(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 409 uint32_t TimerIdx);
mbed_official 237:f3da66175598 410
mbed_official 237:f3da66175598 411 static uint32_t GetTimerIdxFromDMAHandle(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 412
mbed_official 237:f3da66175598 413 static void HRTIM_ForceRegistersUpdate(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 414 uint32_t TimerIdx);
mbed_official 237:f3da66175598 415
mbed_official 237:f3da66175598 416 static void HRTIM_HRTIM_ISR(HRTIM_HandleTypeDef * hhrtim);
mbed_official 237:f3da66175598 417
mbed_official 237:f3da66175598 418 static void HRTIM_Master_ISR(HRTIM_HandleTypeDef * hhrtim);
mbed_official 237:f3da66175598 419
mbed_official 237:f3da66175598 420 static void HRTIM_Timer_ISR(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 421 uint32_t TimerIdx);
mbed_official 237:f3da66175598 422
mbed_official 237:f3da66175598 423 static void HRTIM_DMAMasterCplt(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 424
mbed_official 237:f3da66175598 425 static void HRTIM_DMATimerxCplt(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 426
mbed_official 237:f3da66175598 427 static void HRTIM_DMAError(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 428
mbed_official 237:f3da66175598 429 static void HRTIM_BurstDMACplt(DMA_HandleTypeDef *hdma);
mbed_official 237:f3da66175598 430
mbed_official 237:f3da66175598 431 /** @defgroup HRTIM_Private_Functions
mbed_official 237:f3da66175598 432 * @{
mbed_official 237:f3da66175598 433 */
mbed_official 237:f3da66175598 434
mbed_official 237:f3da66175598 435 /** @defgroup HAL_HRTIM_Group1 Initialization and de-initialization functions
mbed_official 237:f3da66175598 436 * @brief Initialization and Configuration functions
mbed_official 237:f3da66175598 437 *
mbed_official 237:f3da66175598 438 @verbatim
mbed_official 237:f3da66175598 439 ===============================================================================
mbed_official 237:f3da66175598 440 ##### Initialization and Time Base Configuration functions #####
mbed_official 237:f3da66175598 441 ===============================================================================
mbed_official 237:f3da66175598 442 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 443 (+) Initialize a HRTIM instance
mbed_official 237:f3da66175598 444 (+) De-initialize a HRTIM instance
mbed_official 237:f3da66175598 445 (+) Initialize the HRTIM MSP
mbed_official 237:f3da66175598 446 (+) De-initialize the HRTIM MSP
mbed_official 237:f3da66175598 447 (+) Start the high-resolution unit (start DLL calibration)
mbed_official 237:f3da66175598 448 (+) Check that the high resolution unit is ready (DLL calibration done)
mbed_official 237:f3da66175598 449 (+) Configure the time base unit of a HRTIM timer
mbed_official 237:f3da66175598 450
mbed_official 237:f3da66175598 451 @endverbatim
mbed_official 237:f3da66175598 452 * @{
mbed_official 237:f3da66175598 453 */
mbed_official 237:f3da66175598 454
mbed_official 237:f3da66175598 455 /**
mbed_official 237:f3da66175598 456 * @brief Initializes a HRTIM instance
mbed_official 237:f3da66175598 457 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 458 * @retval HAL status
mbed_official 237:f3da66175598 459 */
mbed_official 237:f3da66175598 460 HAL_StatusTypeDef HAL_HRTIM_Init(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 461 {
mbed_official 237:f3da66175598 462 uint8_t timer_idx;
mbed_official 237:f3da66175598 463 uint32_t hrtim_mcr;
mbed_official 237:f3da66175598 464
mbed_official 237:f3da66175598 465 /* Check the HRTIM handle allocation */
mbed_official 237:f3da66175598 466 if(hhrtim == NULL)
mbed_official 237:f3da66175598 467 {
mbed_official 237:f3da66175598 468 return HAL_ERROR;
mbed_official 237:f3da66175598 469 }
mbed_official 237:f3da66175598 470
mbed_official 237:f3da66175598 471 /* Check the parameters */
mbed_official 237:f3da66175598 472 assert_param(IS_HRTIM_ALL_INSTANCE(hhrtim->Instance));
mbed_official 237:f3da66175598 473 assert_param(IS_HRTIM_IT(hhrtim->Init.HRTIMInterruptResquests));
mbed_official 237:f3da66175598 474
mbed_official 237:f3da66175598 475 /* Set the HRTIM state */
mbed_official 237:f3da66175598 476 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 477
mbed_official 237:f3da66175598 478 /* Initialize the DMA handles */
mbed_official 237:f3da66175598 479 hhrtim->hdmaMaster = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 480 hhrtim->hdmaTimerA = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 481 hhrtim->hdmaTimerB = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 482 hhrtim->hdmaTimerC = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 483 hhrtim->hdmaTimerD = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 484 hhrtim->hdmaTimerE = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 485
mbed_official 237:f3da66175598 486 /* HRTIM output synchronization configuration (if required) */
mbed_official 237:f3da66175598 487 if ((hhrtim->Init.SyncOptions & HRTIM_SYNCOPTION_MASTER) != RESET)
mbed_official 237:f3da66175598 488 {
mbed_official 237:f3da66175598 489 /* Check parameters */
mbed_official 237:f3da66175598 490 assert_param(IS_HRTIM_SYNCOUTPUTSOURCE(hhrtim->Init.SyncOutputSource));
mbed_official 237:f3da66175598 491 assert_param(IS_HRTIM_SYNCOUTPUTPOLARITY(hhrtim->Init.SyncOutputPolarity));
mbed_official 237:f3da66175598 492
mbed_official 237:f3da66175598 493 /* The synchronization output initialization procedure must be done prior
mbed_official 237:f3da66175598 494 to the configuration of the MCU outputs (done within HAL_HRTIM_MspInit)
mbed_official 237:f3da66175598 495 */
mbed_official 237:f3da66175598 496 if (hhrtim->Instance == HRTIM1)
mbed_official 237:f3da66175598 497 {
mbed_official 237:f3da66175598 498 /* Enable the HRTIM peripheral clock */
mbed_official 237:f3da66175598 499 __HRTIM1_CLK_ENABLE();
mbed_official 237:f3da66175598 500 }
mbed_official 237:f3da66175598 501
mbed_official 237:f3da66175598 502 hrtim_mcr = hhrtim->Instance->sMasterRegs.MCR;
mbed_official 237:f3da66175598 503
mbed_official 237:f3da66175598 504 /* Set the event to be sent on the synchronization output */
mbed_official 237:f3da66175598 505 hrtim_mcr &= ~(HRTIM_MCR_SYNC_SRC);
mbed_official 237:f3da66175598 506 hrtim_mcr |= (hhrtim->Init.SyncOutputSource & HRTIM_MCR_SYNC_SRC);
mbed_official 237:f3da66175598 507
mbed_official 237:f3da66175598 508 /* Set the polarity of the synchronization output */
mbed_official 237:f3da66175598 509 hrtim_mcr &= ~(HRTIM_MCR_SYNC_OUT);
mbed_official 237:f3da66175598 510 hrtim_mcr |= (hhrtim->Init.SyncOutputPolarity & HRTIM_MCR_SYNC_OUT);
mbed_official 237:f3da66175598 511
mbed_official 237:f3da66175598 512 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 513 hhrtim->Instance->sMasterRegs.MCR = hrtim_mcr;
mbed_official 237:f3da66175598 514 }
mbed_official 237:f3da66175598 515
mbed_official 237:f3da66175598 516 /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
mbed_official 237:f3da66175598 517 HAL_HRTIM_MspInit(hhrtim);
mbed_official 237:f3da66175598 518
mbed_official 237:f3da66175598 519 /* HRTIM input synchronization configuration (if required) */
mbed_official 237:f3da66175598 520 if ((hhrtim->Init.SyncOptions & HRTIM_SYNCOPTION_SLAVE) != RESET)
mbed_official 237:f3da66175598 521 {
mbed_official 237:f3da66175598 522 /* Check parameters */
mbed_official 237:f3da66175598 523 assert_param(IS_HRTIM_SYNCINPUTSOURCE(hhrtim->Init.SyncInputSource));
mbed_official 237:f3da66175598 524
mbed_official 237:f3da66175598 525 hrtim_mcr = hhrtim->Instance->sMasterRegs.MCR;
mbed_official 237:f3da66175598 526
mbed_official 237:f3da66175598 527 /* Set the synchronization input source */
mbed_official 237:f3da66175598 528 hrtim_mcr &= ~(HRTIM_MCR_SYNC_IN);
mbed_official 237:f3da66175598 529 hrtim_mcr |= (hhrtim->Init.SyncInputSource & HRTIM_MCR_SYNC_IN);
mbed_official 237:f3da66175598 530
mbed_official 237:f3da66175598 531 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 532 hhrtim->Instance->sMasterRegs.MCR = hrtim_mcr;
mbed_official 237:f3da66175598 533 }
mbed_official 237:f3da66175598 534
mbed_official 237:f3da66175598 535 /* Initialize the HRTIM state*/
mbed_official 237:f3da66175598 536 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 537
mbed_official 237:f3da66175598 538 /* Initialize the lock status of the HRTIM HAL API */
mbed_official 237:f3da66175598 539 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 540
mbed_official 237:f3da66175598 541 /* Tnitialize timer related parameters */
mbed_official 237:f3da66175598 542 for (timer_idx = HRTIM_TIMERINDEX_TIMER_A ;
mbed_official 237:f3da66175598 543 timer_idx <= HRTIM_TIMERINDEX_MASTER ;
mbed_official 237:f3da66175598 544 timer_idx++)
mbed_official 237:f3da66175598 545 {
mbed_official 237:f3da66175598 546 hhrtim->TimerParam[timer_idx].CaptureTrigger1 = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 547 hhrtim->TimerParam[timer_idx].CaptureTrigger2 = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 548 hhrtim->TimerParam[timer_idx].InterruptRequests = HRTIM_IT_NONE;
mbed_official 237:f3da66175598 549 hhrtim->TimerParam[timer_idx].DMARequests = HRTIM_IT_NONE;
mbed_official 237:f3da66175598 550 hhrtim->TimerParam[timer_idx].DMASrcAddress = 0;
mbed_official 237:f3da66175598 551 hhrtim->TimerParam[timer_idx].DMASize = 0;
mbed_official 237:f3da66175598 552 }
mbed_official 237:f3da66175598 553
mbed_official 237:f3da66175598 554 return HAL_OK;
mbed_official 237:f3da66175598 555 }
mbed_official 237:f3da66175598 556
mbed_official 237:f3da66175598 557 /**
mbed_official 237:f3da66175598 558 * @brief De-initializes a timer operating in waveform mode
mbed_official 237:f3da66175598 559 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 560 * @retval HAL status
mbed_official 237:f3da66175598 561 */
mbed_official 237:f3da66175598 562 HAL_StatusTypeDef HAL_HRTIM_DeInit (HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 563 {
mbed_official 237:f3da66175598 564 /* Check the HRTIM handle allocation */
mbed_official 237:f3da66175598 565 if(hhrtim == NULL)
mbed_official 237:f3da66175598 566 {
mbed_official 237:f3da66175598 567 return HAL_ERROR;
mbed_official 237:f3da66175598 568 }
mbed_official 237:f3da66175598 569
mbed_official 237:f3da66175598 570 /* Check the parameters */
mbed_official 237:f3da66175598 571 assert_param(IS_HRTIM_ALL_INSTANCE(hhrtim->Instance));
mbed_official 237:f3da66175598 572
mbed_official 237:f3da66175598 573 /* Set the HRTIM state */
mbed_official 237:f3da66175598 574 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 575
mbed_official 237:f3da66175598 576 /* DeInit the low level hardware */
mbed_official 237:f3da66175598 577 HAL_HRTIM_MspDeInit(hhrtim);
mbed_official 237:f3da66175598 578
mbed_official 237:f3da66175598 579 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 580
mbed_official 237:f3da66175598 581 return HAL_OK;
mbed_official 237:f3da66175598 582 }
mbed_official 237:f3da66175598 583
mbed_official 237:f3da66175598 584 /**
mbed_official 237:f3da66175598 585 * @brief MSP initialization for a HRTIM instance
mbed_official 237:f3da66175598 586 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 587 * @retval None
mbed_official 237:f3da66175598 588 */
mbed_official 237:f3da66175598 589 __weak void HAL_HRTIM_MspInit(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 590 {
mbed_official 237:f3da66175598 591 /* NOTE: This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 592 the HAL_HRTIM_MspInit could be implemented in the user file
mbed_official 237:f3da66175598 593 */
mbed_official 237:f3da66175598 594 }
mbed_official 237:f3da66175598 595
mbed_official 237:f3da66175598 596 /**
mbed_official 237:f3da66175598 597 * @brief MSP initialization for a for a HRTIM instance
mbed_official 237:f3da66175598 598 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 599 * @retval None
mbed_official 237:f3da66175598 600 */
mbed_official 237:f3da66175598 601 __weak void HAL_HRTIM_MspDeInit(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 602 {
mbed_official 237:f3da66175598 603 /* NOTE: This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 604 the HAL_HRTIM_MspDeInit could be implemented in the user file
mbed_official 237:f3da66175598 605 */
mbed_official 237:f3da66175598 606 }
mbed_official 237:f3da66175598 607
mbed_official 237:f3da66175598 608 /**
mbed_official 237:f3da66175598 609 * @brief Starts the DLL calibration
mbed_official 237:f3da66175598 610 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 611 * @param CalibrationRate: DLL calibration period
mbed_official 237:f3da66175598 612 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 613 * @arg HRTIM_SINGLE_CALIBRATION: One shot DLL calibration
mbed_official 237:f3da66175598 614 * @arg HRTIM_CALIBRATIONRATE_7300: Periodic DLL calibration. T=7.3 ms
mbed_official 237:f3da66175598 615 * @arg HRTIM_CALIBRATIONRATE_910: Periodic DLL calibration. T=910 us
mbed_official 237:f3da66175598 616 * @arg HRTIM_CALIBRATIONRATE_114: Periodic DLL calibration. T=114 us
mbed_official 237:f3da66175598 617 * @arg HRTIM_CALIBRATIONRATE_14: Periodic DLL calibration. T=14 us
mbed_official 237:f3da66175598 618 * @retval HAL status
mbed_official 237:f3da66175598 619 * @note This function locks the HRTIM instance. HRTIM instance is unlocked
mbed_official 237:f3da66175598 620 * within the HAL_HRTIM_PollForDLLCalibration function, just before
mbed_official 237:f3da66175598 621 * exiting the function.
mbed_official 237:f3da66175598 622 */
mbed_official 237:f3da66175598 623 HAL_StatusTypeDef HAL_HRTIM_DLLCalibrationStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 624 uint32_t CalibrationRate)
mbed_official 237:f3da66175598 625 {
mbed_official 237:f3da66175598 626 uint32_t hrtim_dllcr;
mbed_official 237:f3da66175598 627
mbed_official 237:f3da66175598 628 /* Check the parameters */
mbed_official 237:f3da66175598 629 assert_param(IS_HRTIM_CALIBRATIONRATE(CalibrationRate));
mbed_official 237:f3da66175598 630
mbed_official 237:f3da66175598 631 /* Process Locked */
mbed_official 237:f3da66175598 632 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 633
mbed_official 237:f3da66175598 634 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 635
mbed_official 237:f3da66175598 636 /* Configure DLL Calibration */
mbed_official 237:f3da66175598 637 hrtim_dllcr = hhrtim->Instance->sCommonRegs.DLLCR;
mbed_official 237:f3da66175598 638
mbed_official 237:f3da66175598 639 if (CalibrationRate == HRTIM_SINGLE_CALIBRATION)
mbed_official 237:f3da66175598 640 {
mbed_official 237:f3da66175598 641 /* One shot DLL calibration */
mbed_official 237:f3da66175598 642 hrtim_dllcr &= ~(HRTIM_DLLCR_CALEN);
mbed_official 237:f3da66175598 643 hrtim_dllcr |= HRTIM_DLLCR_CAL;
mbed_official 237:f3da66175598 644 }
mbed_official 237:f3da66175598 645 else
mbed_official 237:f3da66175598 646 {
mbed_official 237:f3da66175598 647 /* Periodic DLL calibration */
mbed_official 237:f3da66175598 648 hrtim_dllcr &= ~(HRTIM_DLLCR_CALRTE | HRTIM_DLLCR_CAL);
mbed_official 237:f3da66175598 649 hrtim_dllcr |= (CalibrationRate | HRTIM_DLLCR_CALEN);
mbed_official 237:f3da66175598 650 }
mbed_official 237:f3da66175598 651
mbed_official 237:f3da66175598 652 /* Update HRTIM register */
mbed_official 237:f3da66175598 653 hhrtim->Instance->sCommonRegs.DLLCR = hrtim_dllcr;
mbed_official 237:f3da66175598 654
mbed_official 237:f3da66175598 655 return HAL_OK;
mbed_official 237:f3da66175598 656 }
mbed_official 237:f3da66175598 657
mbed_official 237:f3da66175598 658 /**
mbed_official 237:f3da66175598 659 * @brief Starts the DLL calibration
mbed_official 237:f3da66175598 660 * DLL ready interrupt is enabled
mbed_official 237:f3da66175598 661 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 662 * @param CalibrationRate: DLL calibration period
mbed_official 237:f3da66175598 663 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 664 * @arg HRTIM_SINGLE_CALIBRATION: One shot DLL calibration
mbed_official 237:f3da66175598 665 * @arg HRTIM_CALIBRATIONRATE_7300: Periodic DLL calibration. T=7.3 ms
mbed_official 237:f3da66175598 666 * @arg HRTIM_CALIBRATIONRATE_910: Periodic DLL calibration. T=910 us
mbed_official 237:f3da66175598 667 * @arg HRTIM_CALIBRATIONRATE_114: Periodic DLL calibration. T=114 us
mbed_official 237:f3da66175598 668 * @arg HRTIM_CALIBRATIONRATE_14: Periodic DLL calibration. T=14 us
mbed_official 237:f3da66175598 669 * @retval HAL status
mbed_official 237:f3da66175598 670 * @note This function locks the HRTIM instance. HRTIM instance is unlocked
mbed_official 237:f3da66175598 671 * within the IRQ processing function when processing the DLL ready
mbed_official 237:f3da66175598 672 * interrupt.
mbed_official 237:f3da66175598 673 * @note If this function is called for periodic calibration, the DLLRDY
mbed_official 237:f3da66175598 674 * interrupt is generated every time the calibration completes which
mbed_official 237:f3da66175598 675 * will significantly increases the overall interrupt rate.
mbed_official 237:f3da66175598 676 */
mbed_official 237:f3da66175598 677 HAL_StatusTypeDef HAL_HRTIM_DLLCalibrationStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 678 uint32_t CalibrationRate)
mbed_official 237:f3da66175598 679 {
mbed_official 237:f3da66175598 680 uint32_t hrtim_dllcr;
mbed_official 237:f3da66175598 681
mbed_official 237:f3da66175598 682 /* Check the parameters */
mbed_official 237:f3da66175598 683 assert_param(IS_HRTIM_CALIBRATIONRATE(CalibrationRate));
mbed_official 237:f3da66175598 684
mbed_official 237:f3da66175598 685 /* Process Locked */
mbed_official 237:f3da66175598 686 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 687
mbed_official 237:f3da66175598 688 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 689
mbed_official 237:f3da66175598 690 /* Enable DLL Ready interrupt flag */
mbed_official 237:f3da66175598 691 __HAL_HRTIM_ENABLE_IT(hhrtim, HRTIM_IT_DLLRDY);
mbed_official 237:f3da66175598 692
mbed_official 237:f3da66175598 693 /* Configure DLL Calibration */
mbed_official 237:f3da66175598 694 hrtim_dllcr = hhrtim->Instance->sCommonRegs.DLLCR;
mbed_official 237:f3da66175598 695
mbed_official 237:f3da66175598 696 if (CalibrationRate == HRTIM_SINGLE_CALIBRATION)
mbed_official 237:f3da66175598 697 {
mbed_official 237:f3da66175598 698 /* One shot DLL calibration */
mbed_official 237:f3da66175598 699 hrtim_dllcr &= ~(HRTIM_DLLCR_CALEN);
mbed_official 237:f3da66175598 700 hrtim_dllcr |= HRTIM_DLLCR_CAL;
mbed_official 237:f3da66175598 701 }
mbed_official 237:f3da66175598 702 else
mbed_official 237:f3da66175598 703 {
mbed_official 237:f3da66175598 704 /* Periodic DLL calibration */
mbed_official 237:f3da66175598 705 hrtim_dllcr &= ~(HRTIM_DLLCR_CALRTE | HRTIM_DLLCR_CAL);
mbed_official 237:f3da66175598 706 hrtim_dllcr |= (CalibrationRate | HRTIM_DLLCR_CALEN);
mbed_official 237:f3da66175598 707 }
mbed_official 237:f3da66175598 708
mbed_official 237:f3da66175598 709 /* Update HRTIM register */
mbed_official 237:f3da66175598 710 hhrtim->Instance->sCommonRegs.DLLCR = hrtim_dllcr;
mbed_official 237:f3da66175598 711
mbed_official 237:f3da66175598 712 return HAL_OK;
mbed_official 237:f3da66175598 713 }
mbed_official 237:f3da66175598 714
mbed_official 237:f3da66175598 715 /**
mbed_official 237:f3da66175598 716 * @brief Polls the DLL calibration ready flag and returns when the flag is
mbed_official 237:f3da66175598 717 * set (DLL calibration completed) or upon timeout expiration
mbed_official 237:f3da66175598 718 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 719 * @param Timeout: Timeout duration in millisecond
mbed_official 237:f3da66175598 720 * @retval HAL status
mbed_official 237:f3da66175598 721 */
mbed_official 237:f3da66175598 722 HAL_StatusTypeDef HAL_HRTIM_PollForDLLCalibration(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 723 uint32_t Timeout)
mbed_official 237:f3da66175598 724 {
mbed_official 237:f3da66175598 725 uint32_t tickstart=0;
mbed_official 237:f3da66175598 726
mbed_official 237:f3da66175598 727 tickstart = HAL_GetTick();
mbed_official 237:f3da66175598 728
mbed_official 237:f3da66175598 729 /* Check End of conversion flag */
mbed_official 237:f3da66175598 730 while(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_IT_DLLRDY) == RESET)
mbed_official 237:f3da66175598 731 {
mbed_official 237:f3da66175598 732 if (Timeout != HAL_MAX_DELAY)
mbed_official 237:f3da66175598 733 {
mbed_official 237:f3da66175598 734 if((Timeout == 0) || ((HAL_GetTick()-tickstart) > Timeout))
mbed_official 237:f3da66175598 735 {
mbed_official 237:f3da66175598 736 hhrtim->State = HAL_HRTIM_STATE_ERROR;
mbed_official 237:f3da66175598 737 return HAL_TIMEOUT;
mbed_official 237:f3da66175598 738 }
mbed_official 237:f3da66175598 739 }
mbed_official 237:f3da66175598 740 }
mbed_official 237:f3da66175598 741
mbed_official 237:f3da66175598 742 /* Set HRTIM State */
mbed_official 237:f3da66175598 743 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 744
mbed_official 237:f3da66175598 745 /* Process unlocked */
mbed_official 237:f3da66175598 746 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 747
mbed_official 237:f3da66175598 748 return HAL_OK;
mbed_official 237:f3da66175598 749 }
mbed_official 237:f3da66175598 750
mbed_official 237:f3da66175598 751 /**
mbed_official 237:f3da66175598 752 * @brief Configures the time base unit of a timer
mbed_official 237:f3da66175598 753 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 754 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 755 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 756 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 757 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 758 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 759 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 760 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 761 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 762 * @param pTimeBaseCfg: pointer to the time base configuration structure
mbed_official 237:f3da66175598 763 * @note This function must be called prior starting the timer
mbed_official 237:f3da66175598 764 * @note The time-base unit initialization parameters specify:
mbed_official 237:f3da66175598 765 * The timer counter operating mode (continuous, one shot)
mbed_official 237:f3da66175598 766 * The timer clock prescaler
mbed_official 237:f3da66175598 767 * The timer period
mbed_official 237:f3da66175598 768 * The timer repetition counter.
mbed_official 237:f3da66175598 769 * @retval HAL status
mbed_official 237:f3da66175598 770 */
mbed_official 237:f3da66175598 771 HAL_StatusTypeDef HAL_HRTIM_TimeBaseConfig(HRTIM_HandleTypeDef *hhrtim,
mbed_official 237:f3da66175598 772 uint32_t TimerIdx,
mbed_official 237:f3da66175598 773 HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg)
mbed_official 237:f3da66175598 774 {
mbed_official 237:f3da66175598 775 /* Check the parameters */
mbed_official 237:f3da66175598 776 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 777 assert_param(IS_HRTIM_PRESCALERRATIO(pTimeBaseCfg->PrescalerRatio));
mbed_official 237:f3da66175598 778 assert_param(IS_HRTIM_MODE(pTimeBaseCfg->Mode));
mbed_official 237:f3da66175598 779
mbed_official 237:f3da66175598 780 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 781 {
mbed_official 237:f3da66175598 782 return HAL_BUSY;
mbed_official 237:f3da66175598 783 }
mbed_official 237:f3da66175598 784
mbed_official 237:f3da66175598 785 /* Set the HRTIM state */
mbed_official 237:f3da66175598 786 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 787
mbed_official 237:f3da66175598 788 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 789 {
mbed_official 237:f3da66175598 790 /* Configure master timer time base unit */
mbed_official 237:f3da66175598 791 HRTIM_MasterBase_Config(hhrtim, pTimeBaseCfg);
mbed_official 237:f3da66175598 792 }
mbed_official 237:f3da66175598 793 else
mbed_official 237:f3da66175598 794 {
mbed_official 237:f3da66175598 795 /* Configure timing unit time base unit */
mbed_official 237:f3da66175598 796 HRTIM_TimingUnitBase_Config(hhrtim, TimerIdx, pTimeBaseCfg);
mbed_official 237:f3da66175598 797 }
mbed_official 237:f3da66175598 798
mbed_official 237:f3da66175598 799 /* Set HRTIM state */
mbed_official 237:f3da66175598 800 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 801
mbed_official 237:f3da66175598 802 return HAL_OK;
mbed_official 237:f3da66175598 803 }
mbed_official 237:f3da66175598 804
mbed_official 237:f3da66175598 805 /**
mbed_official 237:f3da66175598 806 * @}
mbed_official 237:f3da66175598 807 */
mbed_official 237:f3da66175598 808
mbed_official 237:f3da66175598 809 /** @defgroup HAL_HRTIM_Group2 Simple time base mode functions
mbed_official 237:f3da66175598 810 * @brief When à HRTIM timer operates in simple time base mode, the
mbed_official 237:f3da66175598 811 * timer counter counts from 0 to the period value.
mbed_official 237:f3da66175598 812 *
mbed_official 237:f3da66175598 813 @verbatim
mbed_official 237:f3da66175598 814 ===============================================================================
mbed_official 237:f3da66175598 815 ##### Simple time base mode functions #####
mbed_official 237:f3da66175598 816 ===============================================================================
mbed_official 237:f3da66175598 817 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 818 (+) Start simple time base
mbed_official 237:f3da66175598 819 (+) Stop simple time base
mbed_official 237:f3da66175598 820 (+) Start simple time base and enable interrupt
mbed_official 237:f3da66175598 821 (+) Stop simple time base and disable interrupt
mbed_official 237:f3da66175598 822 (+) Start simple time base and enable DMA transfer
mbed_official 237:f3da66175598 823 (+) Stop simple time base and disable DMA transfer
mbed_official 237:f3da66175598 824
mbed_official 237:f3da66175598 825 @endverbatim
mbed_official 237:f3da66175598 826 * @{
mbed_official 237:f3da66175598 827 */
mbed_official 237:f3da66175598 828
mbed_official 237:f3da66175598 829 /**
mbed_official 237:f3da66175598 830 * @brief Starts the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 831 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 832 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 833 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 834 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 835 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 836 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 837 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 838 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 839 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 840 * @retval HAL status
mbed_official 237:f3da66175598 841 */
mbed_official 237:f3da66175598 842 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 843 uint32_t TimerIdx)
mbed_official 237:f3da66175598 844 {
mbed_official 237:f3da66175598 845 /* Check the parameters */
mbed_official 237:f3da66175598 846 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 847
mbed_official 237:f3da66175598 848 /* Process Locked */
mbed_official 237:f3da66175598 849 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 850
mbed_official 237:f3da66175598 851 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 852
mbed_official 237:f3da66175598 853 /* Enable the timer counter */
mbed_official 237:f3da66175598 854 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 855
mbed_official 237:f3da66175598 856 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 857
mbed_official 237:f3da66175598 858 /* Process Unlocked */
mbed_official 237:f3da66175598 859 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 860
mbed_official 237:f3da66175598 861 return HAL_OK;
mbed_official 237:f3da66175598 862 }
mbed_official 237:f3da66175598 863
mbed_official 237:f3da66175598 864 /**
mbed_official 237:f3da66175598 865 * @brief Stops the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 866 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 867 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 868 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 869 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 870 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 871 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 872 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 873 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 874 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 875 * @retval HAL status
mbed_official 237:f3da66175598 876 */
mbed_official 237:f3da66175598 877 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 878 uint32_t TimerIdx)
mbed_official 237:f3da66175598 879 {
mbed_official 237:f3da66175598 880 /* Check the parameters */
mbed_official 237:f3da66175598 881 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 882
mbed_official 237:f3da66175598 883 /* Process Locked */
mbed_official 237:f3da66175598 884 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 885
mbed_official 237:f3da66175598 886 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 887
mbed_official 237:f3da66175598 888 /* Disable the timer counter */
mbed_official 237:f3da66175598 889 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 890
mbed_official 237:f3da66175598 891 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 892
mbed_official 237:f3da66175598 893 /* Process Unlocked */
mbed_official 237:f3da66175598 894 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 895
mbed_official 237:f3da66175598 896 return HAL_OK;
mbed_official 237:f3da66175598 897 }
mbed_official 237:f3da66175598 898
mbed_official 237:f3da66175598 899 /**
mbed_official 237:f3da66175598 900 * @brief Starts the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 901 * Timer repetition interrupt is enabled.
mbed_official 237:f3da66175598 902 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 903 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 904 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 905 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 906 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 907 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 908 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 909 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 910 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 911 * @retval HAL status
mbed_official 237:f3da66175598 912 */
mbed_official 237:f3da66175598 913 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 914 uint32_t TimerIdx)
mbed_official 237:f3da66175598 915 {
mbed_official 237:f3da66175598 916 /* Check the parameters */
mbed_official 237:f3da66175598 917 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 918
mbed_official 237:f3da66175598 919 /* Process Locked */
mbed_official 237:f3da66175598 920 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 921
mbed_official 237:f3da66175598 922 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 923
mbed_official 237:f3da66175598 924 /* Enable the repetition interrupt */
mbed_official 237:f3da66175598 925 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 926 {
mbed_official 237:f3da66175598 927 __HAL_HRTIM_MASTER_ENABLE_IT(hhrtim, HRTIM_MASTER_IT_MREP);
mbed_official 237:f3da66175598 928 }
mbed_official 237:f3da66175598 929 else
mbed_official 237:f3da66175598 930 {
mbed_official 237:f3da66175598 931 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_REP);
mbed_official 237:f3da66175598 932 }
mbed_official 237:f3da66175598 933
mbed_official 237:f3da66175598 934 /* Enable the timer counter */
mbed_official 237:f3da66175598 935 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 936
mbed_official 237:f3da66175598 937 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 938
mbed_official 237:f3da66175598 939 /* Process Unlocked */
mbed_official 237:f3da66175598 940 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 941
mbed_official 237:f3da66175598 942 return HAL_OK;
mbed_official 237:f3da66175598 943 }
mbed_official 237:f3da66175598 944
mbed_official 237:f3da66175598 945 /**
mbed_official 237:f3da66175598 946 * @brief Starts the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 947 * Timer repetition interrupt is disabled.
mbed_official 237:f3da66175598 948 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 949 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 950 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 951 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 952 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 953 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 954 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 955 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 956 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 957 * @retval HAL status
mbed_official 237:f3da66175598 958 */
mbed_official 237:f3da66175598 959 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 960 uint32_t TimerIdx)
mbed_official 237:f3da66175598 961 {
mbed_official 237:f3da66175598 962 /* Check the parameters */
mbed_official 237:f3da66175598 963 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 964
mbed_official 237:f3da66175598 965 /* Process Locked */
mbed_official 237:f3da66175598 966 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 967
mbed_official 237:f3da66175598 968 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 969
mbed_official 237:f3da66175598 970 /* Disable the repetition interrupt */
mbed_official 237:f3da66175598 971 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 972 {
mbed_official 237:f3da66175598 973 __HAL_HRTIM_MASTER_DISABLE_IT(hhrtim, HRTIM_MASTER_IT_MREP);
mbed_official 237:f3da66175598 974 }
mbed_official 237:f3da66175598 975 else
mbed_official 237:f3da66175598 976 {
mbed_official 237:f3da66175598 977 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_REP);
mbed_official 237:f3da66175598 978 }
mbed_official 237:f3da66175598 979
mbed_official 237:f3da66175598 980 /* Disable the timer counter */
mbed_official 237:f3da66175598 981 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 982
mbed_official 237:f3da66175598 983 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 984
mbed_official 237:f3da66175598 985 /* Process Unlocked */
mbed_official 237:f3da66175598 986 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 987
mbed_official 237:f3da66175598 988 return HAL_OK;
mbed_official 237:f3da66175598 989 }
mbed_official 237:f3da66175598 990
mbed_official 237:f3da66175598 991 /**
mbed_official 237:f3da66175598 992 * @brief Starts the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 993 * Timer repetition DMA request is enabled.
mbed_official 237:f3da66175598 994 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 995 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 996 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 997 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 998 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 999 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1000 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1001 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1002 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1003 * @param SrcAddr: DMA transfer source address
mbed_official 237:f3da66175598 1004 * @param DestAddr: DMA transfer destination address
mbed_official 237:f3da66175598 1005 * @param Length: The length of data items (data size) to be transferred
mbed_official 237:f3da66175598 1006 * from source to destination
mbed_official 237:f3da66175598 1007 */
mbed_official 237:f3da66175598 1008 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1009 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1010 uint32_t SrcAddr,
mbed_official 237:f3da66175598 1011 uint32_t DestAddr,
mbed_official 237:f3da66175598 1012 uint32_t Length)
mbed_official 237:f3da66175598 1013 {
mbed_official 237:f3da66175598 1014 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 1015
mbed_official 237:f3da66175598 1016 /* Check the parameters */
mbed_official 237:f3da66175598 1017 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 1018
mbed_official 237:f3da66175598 1019 if((hhrtim->State == HAL_HRTIM_STATE_BUSY))
mbed_official 237:f3da66175598 1020 {
mbed_official 237:f3da66175598 1021 return HAL_BUSY;
mbed_official 237:f3da66175598 1022 }
mbed_official 237:f3da66175598 1023 if((hhrtim->State == HAL_HRTIM_STATE_READY))
mbed_official 237:f3da66175598 1024 {
mbed_official 237:f3da66175598 1025 if((SrcAddr == 0 ) || (DestAddr == 0 ) || (Length == 0))
mbed_official 237:f3da66175598 1026 {
mbed_official 237:f3da66175598 1027 return HAL_ERROR;
mbed_official 237:f3da66175598 1028 }
mbed_official 237:f3da66175598 1029 else
mbed_official 237:f3da66175598 1030 {
mbed_official 237:f3da66175598 1031 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1032 }
mbed_official 237:f3da66175598 1033 }
mbed_official 237:f3da66175598 1034
mbed_official 237:f3da66175598 1035 /* Process Locked */
mbed_official 237:f3da66175598 1036 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1037
mbed_official 237:f3da66175598 1038 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 1039 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 1040
mbed_official 237:f3da66175598 1041 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 1042 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 1043 {
mbed_official 237:f3da66175598 1044 hdma->XferCpltCallback = HRTIM_DMAMasterCplt;
mbed_official 237:f3da66175598 1045 }
mbed_official 237:f3da66175598 1046 else
mbed_official 237:f3da66175598 1047 {
mbed_official 237:f3da66175598 1048 hdma->XferCpltCallback = HRTIM_DMATimerxCplt;
mbed_official 237:f3da66175598 1049 }
mbed_official 237:f3da66175598 1050
mbed_official 237:f3da66175598 1051 /* Set the DMA error callback */
mbed_official 237:f3da66175598 1052 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 1053
mbed_official 237:f3da66175598 1054 /* Enable the DMA channel */
mbed_official 237:f3da66175598 1055 HAL_DMA_Start_IT(hdma, SrcAddr, DestAddr, Length);
mbed_official 237:f3da66175598 1056
mbed_official 237:f3da66175598 1057 /* Enable the timer repetition DMA request */
mbed_official 237:f3da66175598 1058 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 1059 {
mbed_official 237:f3da66175598 1060 __HAL_HRTIM_MASTER_ENABLE_DMA(hhrtim, HRTIM_MASTER_DMA_MREP);
mbed_official 237:f3da66175598 1061 }
mbed_official 237:f3da66175598 1062 else
mbed_official 237:f3da66175598 1063 {
mbed_official 237:f3da66175598 1064 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_REP);
mbed_official 237:f3da66175598 1065 }
mbed_official 237:f3da66175598 1066
mbed_official 237:f3da66175598 1067 /* Enable the timer counter */
mbed_official 237:f3da66175598 1068 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1069
mbed_official 237:f3da66175598 1070 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1071
mbed_official 237:f3da66175598 1072 /* Process Unlocked */
mbed_official 237:f3da66175598 1073 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1074
mbed_official 237:f3da66175598 1075 return HAL_OK;
mbed_official 237:f3da66175598 1076 }
mbed_official 237:f3da66175598 1077
mbed_official 237:f3da66175598 1078 /**
mbed_official 237:f3da66175598 1079 * @brief Starts the counter of a timer operating in basic time base mode
mbed_official 237:f3da66175598 1080 * Timer repetition DMA request is disabled.
mbed_official 237:f3da66175598 1081 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1082 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1083 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1084 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 1085 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1086 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1087 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1088 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1089 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1090 * @retval HAL status
mbed_official 237:f3da66175598 1091 */
mbed_official 237:f3da66175598 1092 HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1093 uint32_t TimerIdx)
mbed_official 237:f3da66175598 1094 {
mbed_official 237:f3da66175598 1095 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 1096
mbed_official 237:f3da66175598 1097 /* Check the parameters */
mbed_official 237:f3da66175598 1098 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 1099
mbed_official 237:f3da66175598 1100 /* Process Locked */
mbed_official 237:f3da66175598 1101 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1102
mbed_official 237:f3da66175598 1103 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 1104 {
mbed_official 237:f3da66175598 1105 /* Disable the DMA */
mbed_official 237:f3da66175598 1106 HAL_DMA_Abort(hhrtim->hdmaMaster);
mbed_official 237:f3da66175598 1107
mbed_official 237:f3da66175598 1108 /* Disable the timer repetition DMA request */
mbed_official 237:f3da66175598 1109 __HAL_HRTIM_MASTER_DISABLE_DMA(hhrtim, HRTIM_MASTER_DMA_MREP);
mbed_official 237:f3da66175598 1110 }
mbed_official 237:f3da66175598 1111 else
mbed_official 237:f3da66175598 1112 {
mbed_official 237:f3da66175598 1113 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 1114 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 1115
mbed_official 237:f3da66175598 1116 /* Disable the DMA */
mbed_official 237:f3da66175598 1117 HAL_DMA_Abort(hdma);
mbed_official 237:f3da66175598 1118
mbed_official 237:f3da66175598 1119 /* Disable the timer repetition DMA request */
mbed_official 237:f3da66175598 1120 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_REP);
mbed_official 237:f3da66175598 1121 }
mbed_official 237:f3da66175598 1122
mbed_official 237:f3da66175598 1123 /* Disable the timer counter */
mbed_official 237:f3da66175598 1124 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1125
mbed_official 237:f3da66175598 1126 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1127
mbed_official 237:f3da66175598 1128 /* Process Unlocked */
mbed_official 237:f3da66175598 1129 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1130
mbed_official 237:f3da66175598 1131 return HAL_OK;
mbed_official 237:f3da66175598 1132 }
mbed_official 237:f3da66175598 1133
mbed_official 237:f3da66175598 1134 /**
mbed_official 237:f3da66175598 1135 * @}
mbed_official 237:f3da66175598 1136 */
mbed_official 237:f3da66175598 1137
mbed_official 237:f3da66175598 1138 /** @defgroup HAL_HRTIM_Group3 Simple output compare mode functions
mbed_official 237:f3da66175598 1139 * @brief When a HRTIM timer operates in simple output compare mode
mbed_official 237:f3da66175598 1140 * the output level is set to a programmable value when a match
mbed_official 237:f3da66175598 1141 * is found between the compare register and the counter.
mbed_official 237:f3da66175598 1142 * Compare unit 1 is automatically associated to output 1
mbed_official 237:f3da66175598 1143 * Compare unit 2 is automatically associated to output 2
mbed_official 237:f3da66175598 1144 *
mbed_official 237:f3da66175598 1145 @verbatim
mbed_official 237:f3da66175598 1146 ===============================================================================
mbed_official 237:f3da66175598 1147 ##### Simple output compare functions #####
mbed_official 237:f3da66175598 1148 ===============================================================================
mbed_official 237:f3da66175598 1149 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 1150 (+) Configure simple output channel
mbed_official 237:f3da66175598 1151 (+) Start simple output compare
mbed_official 237:f3da66175598 1152 (+) Stop simple output compare
mbed_official 237:f3da66175598 1153 (+) Start simple output compare and enable interrupt
mbed_official 237:f3da66175598 1154 (+) Stop simple output compare and disable interrupt
mbed_official 237:f3da66175598 1155 (+) Start simple output compare and enable DMA transfer
mbed_official 237:f3da66175598 1156 (+) Stop simple output compare and disable DMA transfer
mbed_official 237:f3da66175598 1157
mbed_official 237:f3da66175598 1158 @endverbatim
mbed_official 237:f3da66175598 1159 * @{
mbed_official 237:f3da66175598 1160 */
mbed_official 237:f3da66175598 1161
mbed_official 237:f3da66175598 1162 /**
mbed_official 237:f3da66175598 1163 * @brief Configures an output in basic output compare mode
mbed_official 237:f3da66175598 1164 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1165 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1166 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1167 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1168 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1169 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1170 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1171 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1172 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1173 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1174 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1175 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1176 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1177 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1178 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1179 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1180 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1181 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1182 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1183 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1184 * @param pSimpleOCChannelCfg: pointer to the basic output compare output configuration structure
mbed_official 237:f3da66175598 1185 * @note When the timer operates in basic output compare mode:
mbed_official 237:f3da66175598 1186 * Output 1 is implicitely controled by the compare unit 1
mbed_official 237:f3da66175598 1187 * Output 2 is implicitely controled by the compare unit 2
mbed_official 237:f3da66175598 1188 * Output Set/Reset crossbar is set according to the selected output compare mode:
mbed_official 237:f3da66175598 1189 * Toggle: SETxyR = RSTxyR = CMPy
mbed_official 237:f3da66175598 1190 * Active: SETxyR = CMPy, RSTxyR = 0
mbed_official 237:f3da66175598 1191 * Inactive: SETxy =0, RSTxy = CMPy
mbed_official 237:f3da66175598 1192 * @retval HAL status
mbed_official 237:f3da66175598 1193 */
mbed_official 237:f3da66175598 1194 HAL_StatusTypeDef HAL_HRTIM_SimpleOCChannelConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1195 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1196 uint32_t OCChannel,
mbed_official 237:f3da66175598 1197 HRTIM_SimpleOCChannelCfgTypeDef* pSimpleOCChannelCfg)
mbed_official 237:f3da66175598 1198 {
mbed_official 237:f3da66175598 1199 uint32_t CompareUnit = 0xFFFFFFFF;
mbed_official 237:f3da66175598 1200 HRTIM_CompareCfgTypeDef CompareCfg;
mbed_official 237:f3da66175598 1201 HRTIM_OutputCfgTypeDef OutputCfg;
mbed_official 237:f3da66175598 1202
mbed_official 237:f3da66175598 1203 /* Check parameters */
mbed_official 237:f3da66175598 1204 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1205 assert_param(IS_HRTIM_BASICOCMODE(pSimpleOCChannelCfg->Mode));
mbed_official 237:f3da66175598 1206 assert_param(IS_HRTIM_OUTPUTPOLARITY(pSimpleOCChannelCfg->Polarity));
mbed_official 237:f3da66175598 1207 assert_param(IS_HRTIM_OUTPUTIDLELEVEL(pSimpleOCChannelCfg->IdleLevel));
mbed_official 237:f3da66175598 1208
mbed_official 237:f3da66175598 1209 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 1210 {
mbed_official 237:f3da66175598 1211 return HAL_BUSY;
mbed_official 237:f3da66175598 1212 }
mbed_official 237:f3da66175598 1213
mbed_official 237:f3da66175598 1214 /* Set HRTIM state */
mbed_official 237:f3da66175598 1215 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1216
mbed_official 237:f3da66175598 1217 /* Configure timer compare unit */
mbed_official 237:f3da66175598 1218 switch (OCChannel)
mbed_official 237:f3da66175598 1219 {
mbed_official 237:f3da66175598 1220 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 1221 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 1222 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 1223 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 1224 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 1225 {
mbed_official 237:f3da66175598 1226 CompareUnit = HRTIM_COMPAREUNIT_1;
mbed_official 237:f3da66175598 1227 }
mbed_official 237:f3da66175598 1228 break;
mbed_official 237:f3da66175598 1229 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 1230 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 1231 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 1232 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 1233 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 1234 {
mbed_official 237:f3da66175598 1235 CompareUnit = HRTIM_COMPAREUNIT_2;
mbed_official 237:f3da66175598 1236 }
mbed_official 237:f3da66175598 1237 break;
mbed_official 237:f3da66175598 1238 }
mbed_official 237:f3da66175598 1239
mbed_official 237:f3da66175598 1240 CompareCfg.CompareValue = pSimpleOCChannelCfg->Pulse;
mbed_official 237:f3da66175598 1241 CompareCfg.AutoDelayedMode = HRTIM_AUTODELAYEDMODE_REGULAR;
mbed_official 237:f3da66175598 1242 CompareCfg.AutoDelayedTimeout = 0;
mbed_official 237:f3da66175598 1243
mbed_official 237:f3da66175598 1244 HRTIM_CompareUnitConfig(hhrtim,
mbed_official 237:f3da66175598 1245 TimerIdx,
mbed_official 237:f3da66175598 1246 CompareUnit,
mbed_official 237:f3da66175598 1247 &CompareCfg);
mbed_official 237:f3da66175598 1248
mbed_official 237:f3da66175598 1249 /* Configure timer output */
mbed_official 237:f3da66175598 1250 OutputCfg.Polarity = pSimpleOCChannelCfg->Polarity;
mbed_official 237:f3da66175598 1251 OutputCfg.IdleLevel = pSimpleOCChannelCfg->IdleLevel;
mbed_official 237:f3da66175598 1252 OutputCfg.FaultLevel = HRTIM_OUTPUTFAULTLEVEL_NONE;
mbed_official 237:f3da66175598 1253 OutputCfg.IdleMode = HRTIM_OUTPUTIDLEMODE_NONE;
mbed_official 237:f3da66175598 1254 OutputCfg.ChopperModeEnable = HRTIM_OUTPUTCHOPPERMODE_DISABLED;
mbed_official 237:f3da66175598 1255 OutputCfg.BurstModeEntryDelayed = HRTIM_OUTPUTBURSTMODEENTRY_REGULAR;
mbed_official 237:f3da66175598 1256
mbed_official 237:f3da66175598 1257 switch (pSimpleOCChannelCfg->Mode)
mbed_official 237:f3da66175598 1258 {
mbed_official 237:f3da66175598 1259 case HRTIM_BASICOCMODE_TOGGLE:
mbed_official 237:f3da66175598 1260 {
mbed_official 237:f3da66175598 1261 if (CompareUnit == HRTIM_COMPAREUNIT_1)
mbed_official 237:f3da66175598 1262 {
mbed_official 237:f3da66175598 1263 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP1;
mbed_official 237:f3da66175598 1264 }
mbed_official 237:f3da66175598 1265 else
mbed_official 237:f3da66175598 1266 {
mbed_official 237:f3da66175598 1267 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP2;
mbed_official 237:f3da66175598 1268 }
mbed_official 237:f3da66175598 1269 OutputCfg.ResetSource = OutputCfg.SetSource;
mbed_official 237:f3da66175598 1270 }
mbed_official 237:f3da66175598 1271 break;
mbed_official 237:f3da66175598 1272 case HRTIM_BASICOCMODE_ACTIVE:
mbed_official 237:f3da66175598 1273 {
mbed_official 237:f3da66175598 1274 if (CompareUnit == HRTIM_COMPAREUNIT_1)
mbed_official 237:f3da66175598 1275 {
mbed_official 237:f3da66175598 1276 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP1;
mbed_official 237:f3da66175598 1277 }
mbed_official 237:f3da66175598 1278 else
mbed_official 237:f3da66175598 1279 {
mbed_official 237:f3da66175598 1280 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP2;
mbed_official 237:f3da66175598 1281 }
mbed_official 237:f3da66175598 1282 OutputCfg.ResetSource = HRTIM_OUTPUTRESET_NONE;
mbed_official 237:f3da66175598 1283 }
mbed_official 237:f3da66175598 1284 break;
mbed_official 237:f3da66175598 1285 case HRTIM_BASICOCMODE_INACTIVE:
mbed_official 237:f3da66175598 1286 {
mbed_official 237:f3da66175598 1287 if (CompareUnit == HRTIM_COMPAREUNIT_1)
mbed_official 237:f3da66175598 1288 {
mbed_official 237:f3da66175598 1289 OutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP1;
mbed_official 237:f3da66175598 1290 }
mbed_official 237:f3da66175598 1291 else
mbed_official 237:f3da66175598 1292 {
mbed_official 237:f3da66175598 1293 OutputCfg.ResetSource = HRTIM_OUTPUTRESET_TIMCMP2;
mbed_official 237:f3da66175598 1294 }
mbed_official 237:f3da66175598 1295 OutputCfg.SetSource = HRTIM_OUTPUTSET_NONE;
mbed_official 237:f3da66175598 1296 }
mbed_official 237:f3da66175598 1297 break;
mbed_official 237:f3da66175598 1298 }
mbed_official 237:f3da66175598 1299
mbed_official 237:f3da66175598 1300 HRTIM_OutputConfig(hhrtim,
mbed_official 237:f3da66175598 1301 TimerIdx,
mbed_official 237:f3da66175598 1302 OCChannel,
mbed_official 237:f3da66175598 1303 &OutputCfg);
mbed_official 237:f3da66175598 1304
mbed_official 237:f3da66175598 1305 /* Set HRTIM state */
mbed_official 237:f3da66175598 1306 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1307
mbed_official 237:f3da66175598 1308 return HAL_OK;
mbed_official 237:f3da66175598 1309 }
mbed_official 237:f3da66175598 1310
mbed_official 237:f3da66175598 1311 /**
mbed_official 237:f3da66175598 1312 * @brief Starts the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1313 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1314 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1315 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1316 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1317 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1318 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1319 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1320 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1321 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1322 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1323 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1324 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1325 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1326 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1327 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1328 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1329 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1330 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1331 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1332 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1333 * @retval HAL status
mbed_official 237:f3da66175598 1334 */
mbed_official 237:f3da66175598 1335 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1336 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1337 uint32_t OCChannel)
mbed_official 237:f3da66175598 1338 {
mbed_official 237:f3da66175598 1339 /* Check the parameters */
mbed_official 237:f3da66175598 1340 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1341
mbed_official 237:f3da66175598 1342 /* Process Locked */
mbed_official 237:f3da66175598 1343 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1344
mbed_official 237:f3da66175598 1345 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1346
mbed_official 237:f3da66175598 1347 /* Enable the timer output */
mbed_official 237:f3da66175598 1348 hhrtim->Instance->sCommonRegs.OENR |= OCChannel;
mbed_official 237:f3da66175598 1349
mbed_official 237:f3da66175598 1350 /* Enable the timer counter */
mbed_official 237:f3da66175598 1351 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1352
mbed_official 237:f3da66175598 1353 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1354
mbed_official 237:f3da66175598 1355 /* Process Unlocked */
mbed_official 237:f3da66175598 1356 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1357
mbed_official 237:f3da66175598 1358 return HAL_OK;
mbed_official 237:f3da66175598 1359 }
mbed_official 237:f3da66175598 1360
mbed_official 237:f3da66175598 1361 /**
mbed_official 237:f3da66175598 1362 * @brief Stops the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1363 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1364 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1365 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1366 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1367 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1368 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1369 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1370 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1371 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1372 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1373 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1374 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1375 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1376 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1377 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1378 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1379 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1380 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1381 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1382 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1383 * @retval HAL status
mbed_official 237:f3da66175598 1384 */
mbed_official 237:f3da66175598 1385 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1386 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1387 uint32_t OCChannel)
mbed_official 237:f3da66175598 1388 {
mbed_official 237:f3da66175598 1389 /* Check the parameters */
mbed_official 237:f3da66175598 1390 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1391
mbed_official 237:f3da66175598 1392 /* Process Locked */
mbed_official 237:f3da66175598 1393 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1394
mbed_official 237:f3da66175598 1395 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1396
mbed_official 237:f3da66175598 1397 /* Disable the timer output */
mbed_official 237:f3da66175598 1398 hhrtim->Instance->sCommonRegs.ODISR |= OCChannel;
mbed_official 237:f3da66175598 1399
mbed_official 237:f3da66175598 1400 /* Disable the timer counter */
mbed_official 237:f3da66175598 1401 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1402
mbed_official 237:f3da66175598 1403 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1404
mbed_official 237:f3da66175598 1405 /* Process Unlocked */
mbed_official 237:f3da66175598 1406 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1407
mbed_official 237:f3da66175598 1408 return HAL_OK;
mbed_official 237:f3da66175598 1409 }
mbed_official 237:f3da66175598 1410
mbed_official 237:f3da66175598 1411 /**
mbed_official 237:f3da66175598 1412 * @brief Starts the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1413 * Interrupt is enabled (see note below)
mbed_official 237:f3da66175598 1414 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1415 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1416 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1417 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1418 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1419 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1420 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1421 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1422 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1423 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1424 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1425 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1426 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1427 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1428 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1429 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1430 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1431 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1432 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1433 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1434 * @note Interrupt enabling depends on the chosen output compare mode
mbed_official 237:f3da66175598 1435 * Output toggle: compare match interrupt is enabled
mbed_official 237:f3da66175598 1436 * Output set active: output set interrupt is enabled
mbed_official 237:f3da66175598 1437 * Output set inactive: output reset interrupt is enabled
mbed_official 237:f3da66175598 1438 * @retval HAL status
mbed_official 237:f3da66175598 1439 */
mbed_official 237:f3da66175598 1440 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1441 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1442 uint32_t OCChannel)
mbed_official 237:f3da66175598 1443 {
mbed_official 237:f3da66175598 1444 uint32_t interrupt;
mbed_official 237:f3da66175598 1445
mbed_official 237:f3da66175598 1446 /* Check the parameters */
mbed_official 237:f3da66175598 1447 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1448
mbed_official 237:f3da66175598 1449 /* Process Locked */
mbed_official 237:f3da66175598 1450 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1451
mbed_official 237:f3da66175598 1452 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1453
mbed_official 237:f3da66175598 1454 /* Get the interrupt to enable (depends on the output compare mode) */
mbed_official 237:f3da66175598 1455 interrupt = HRTIM_GetITFromOCMode(hhrtim, TimerIdx, OCChannel);
mbed_official 237:f3da66175598 1456
mbed_official 237:f3da66175598 1457 /* Enable the timer output */
mbed_official 237:f3da66175598 1458 hhrtim->Instance->sCommonRegs.OENR |= OCChannel;
mbed_official 237:f3da66175598 1459
mbed_official 237:f3da66175598 1460 /* Enable the timer interrupt (depends on the output compare mode) */
mbed_official 237:f3da66175598 1461 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, interrupt);
mbed_official 237:f3da66175598 1462
mbed_official 237:f3da66175598 1463 /* Enable the timer counter */
mbed_official 237:f3da66175598 1464 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1465
mbed_official 237:f3da66175598 1466 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1467
mbed_official 237:f3da66175598 1468 /* Process Unlocked */
mbed_official 237:f3da66175598 1469 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1470
mbed_official 237:f3da66175598 1471 return HAL_OK;
mbed_official 237:f3da66175598 1472 }
mbed_official 237:f3da66175598 1473
mbed_official 237:f3da66175598 1474 /**
mbed_official 237:f3da66175598 1475 * @brief Stops the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1476 * Interrupt is disabled
mbed_official 237:f3da66175598 1477 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1478 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1479 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1480 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1481 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1482 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1483 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1484 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1485 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1486 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1487 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1488 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1489 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1490 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1491 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1492 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1493 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1494 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1495 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1496 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1497 * @retval HAL status
mbed_official 237:f3da66175598 1498 */
mbed_official 237:f3da66175598 1499 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1500 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1501 uint32_t OCChannel)
mbed_official 237:f3da66175598 1502 {
mbed_official 237:f3da66175598 1503 uint32_t interrupt;
mbed_official 237:f3da66175598 1504
mbed_official 237:f3da66175598 1505 /* Check the parameters */
mbed_official 237:f3da66175598 1506 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1507
mbed_official 237:f3da66175598 1508 /* Process Locked */
mbed_official 237:f3da66175598 1509 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1510
mbed_official 237:f3da66175598 1511 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1512
mbed_official 237:f3da66175598 1513 /* Disable the timer output */
mbed_official 237:f3da66175598 1514 hhrtim->Instance->sCommonRegs.ODISR |= OCChannel;
mbed_official 237:f3da66175598 1515
mbed_official 237:f3da66175598 1516 /* Get the interrupt to disable (depends on the output compare mode) */
mbed_official 237:f3da66175598 1517 interrupt = HRTIM_GetITFromOCMode(hhrtim, TimerIdx, OCChannel);
mbed_official 237:f3da66175598 1518
mbed_official 237:f3da66175598 1519 /* Disable the timer interrupt */
mbed_official 237:f3da66175598 1520 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, interrupt);
mbed_official 237:f3da66175598 1521
mbed_official 237:f3da66175598 1522 /* Disable the timer counter */
mbed_official 237:f3da66175598 1523 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1524
mbed_official 237:f3da66175598 1525 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1526
mbed_official 237:f3da66175598 1527 /* Process Unlocked */
mbed_official 237:f3da66175598 1528 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1529
mbed_official 237:f3da66175598 1530 return HAL_OK;
mbed_official 237:f3da66175598 1531 }
mbed_official 237:f3da66175598 1532
mbed_official 237:f3da66175598 1533 /**
mbed_official 237:f3da66175598 1534 * @brief Starts the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1535 * DMA request is enabled (see note below)
mbed_official 237:f3da66175598 1536 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1537 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1538 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1539 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1540 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1541 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1542 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1543 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1544 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1545 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1546 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1547 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1548 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1549 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1550 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1551 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1552 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1553 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1554 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1555 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1556 * @param SrcAddr: DMA transfer source address
mbed_official 237:f3da66175598 1557 * @param DestAddr: DMA transfer destination address
mbed_official 237:f3da66175598 1558 * @param Length: The length of data items (data size) to be transferred
mbed_official 237:f3da66175598 1559 * from source to destination
mbed_official 237:f3da66175598 1560 * @note DMA request enabling depends on the chosen output compare mode
mbed_official 237:f3da66175598 1561 * Output toggle: compare match DMA request is enabled
mbed_official 237:f3da66175598 1562 * Output set active: output set DMA request is enabled
mbed_official 237:f3da66175598 1563 * Output set inactive: output reset DMA request is enabled
mbed_official 237:f3da66175598 1564 * @retval HAL status
mbed_official 237:f3da66175598 1565 */
mbed_official 237:f3da66175598 1566 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1567 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1568 uint32_t OCChannel,
mbed_official 237:f3da66175598 1569 uint32_t SrcAddr,
mbed_official 237:f3da66175598 1570 uint32_t DestAddr,
mbed_official 237:f3da66175598 1571 uint32_t Length)
mbed_official 237:f3da66175598 1572 {
mbed_official 237:f3da66175598 1573 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 1574 uint32_t dma_request;
mbed_official 237:f3da66175598 1575
mbed_official 237:f3da66175598 1576 /* Check the parameters */
mbed_official 237:f3da66175598 1577 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1578
mbed_official 237:f3da66175598 1579 if((hhrtim->State == HAL_HRTIM_STATE_BUSY))
mbed_official 237:f3da66175598 1580 {
mbed_official 237:f3da66175598 1581 return HAL_BUSY;
mbed_official 237:f3da66175598 1582 }
mbed_official 237:f3da66175598 1583 if((hhrtim->State == HAL_HRTIM_STATE_READY))
mbed_official 237:f3da66175598 1584 {
mbed_official 237:f3da66175598 1585 if((SrcAddr == 0 ) || (DestAddr == 0 ) || (Length == 0))
mbed_official 237:f3da66175598 1586 {
mbed_official 237:f3da66175598 1587 return HAL_ERROR;
mbed_official 237:f3da66175598 1588 }
mbed_official 237:f3da66175598 1589 else
mbed_official 237:f3da66175598 1590 {
mbed_official 237:f3da66175598 1591 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1592 }
mbed_official 237:f3da66175598 1593 }
mbed_official 237:f3da66175598 1594
mbed_official 237:f3da66175598 1595 /* Process Locked */
mbed_official 237:f3da66175598 1596 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1597
mbed_official 237:f3da66175598 1598 /* Enable the timer output */
mbed_official 237:f3da66175598 1599 hhrtim->Instance->sCommonRegs.OENR |= OCChannel;
mbed_official 237:f3da66175598 1600
mbed_official 237:f3da66175598 1601 /* Get the DMA request to enable */
mbed_official 237:f3da66175598 1602 dma_request = HRTIM_GetDMAFromOCMode(hhrtim, TimerIdx, OCChannel);
mbed_official 237:f3da66175598 1603
mbed_official 237:f3da66175598 1604 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 1605 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 1606
mbed_official 237:f3da66175598 1607 /* Set the DMA error callback */
mbed_official 237:f3da66175598 1608 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 1609
mbed_official 237:f3da66175598 1610 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 1611 hdma->XferCpltCallback = HRTIM_DMATimerxCplt;
mbed_official 237:f3da66175598 1612
mbed_official 237:f3da66175598 1613 /* Enable the DMA channel */
mbed_official 237:f3da66175598 1614 HAL_DMA_Start_IT(hdma, SrcAddr, DestAddr, Length);
mbed_official 237:f3da66175598 1615
mbed_official 237:f3da66175598 1616 /* Enable the timer DMA request */
mbed_official 237:f3da66175598 1617 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, dma_request);
mbed_official 237:f3da66175598 1618
mbed_official 237:f3da66175598 1619 /* Enable the timer counter */
mbed_official 237:f3da66175598 1620 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1621
mbed_official 237:f3da66175598 1622 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1623
mbed_official 237:f3da66175598 1624 /* Process Unlocked */
mbed_official 237:f3da66175598 1625 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1626
mbed_official 237:f3da66175598 1627 return HAL_OK;
mbed_official 237:f3da66175598 1628 }
mbed_official 237:f3da66175598 1629
mbed_official 237:f3da66175598 1630 /**
mbed_official 237:f3da66175598 1631 * @brief Stops the output compare signal generation on the designed timer output
mbed_official 237:f3da66175598 1632 * DMA request is disabled
mbed_official 237:f3da66175598 1633 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1634 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1635 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1636 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1637 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1638 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1639 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1640 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1641 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 1642 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1643 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1644 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1645 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1646 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1647 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1648 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1649 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1650 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1651 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1652 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1653 * @retval HAL status
mbed_official 237:f3da66175598 1654 */
mbed_official 237:f3da66175598 1655 HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1656 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1657 uint32_t OCChannel)
mbed_official 237:f3da66175598 1658 {
mbed_official 237:f3da66175598 1659 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 1660 uint32_t dma_request;
mbed_official 237:f3da66175598 1661
mbed_official 237:f3da66175598 1662 /* Check the parameters */
mbed_official 237:f3da66175598 1663 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OCChannel));
mbed_official 237:f3da66175598 1664
mbed_official 237:f3da66175598 1665 /* Process Locked */
mbed_official 237:f3da66175598 1666 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1667
mbed_official 237:f3da66175598 1668 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1669
mbed_official 237:f3da66175598 1670 /* Disable the timer output */
mbed_official 237:f3da66175598 1671 hhrtim->Instance->sCommonRegs.ODISR |= OCChannel;
mbed_official 237:f3da66175598 1672
mbed_official 237:f3da66175598 1673 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 1674 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 1675
mbed_official 237:f3da66175598 1676 /* Disable the DMA */
mbed_official 237:f3da66175598 1677 HAL_DMA_Abort(hdma);
mbed_official 237:f3da66175598 1678
mbed_official 237:f3da66175598 1679 /* Get the DMA request to disable */
mbed_official 237:f3da66175598 1680 dma_request = HRTIM_GetDMAFromOCMode(hhrtim, TimerIdx, OCChannel);
mbed_official 237:f3da66175598 1681
mbed_official 237:f3da66175598 1682 /* Disable the timer DMA request */
mbed_official 237:f3da66175598 1683 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, dma_request);
mbed_official 237:f3da66175598 1684
mbed_official 237:f3da66175598 1685 /* Disable the timer counter */
mbed_official 237:f3da66175598 1686 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1687
mbed_official 237:f3da66175598 1688 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1689
mbed_official 237:f3da66175598 1690 /* Process Unlocked */
mbed_official 237:f3da66175598 1691 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1692
mbed_official 237:f3da66175598 1693 return HAL_OK;
mbed_official 237:f3da66175598 1694 }
mbed_official 237:f3da66175598 1695
mbed_official 237:f3da66175598 1696 /**
mbed_official 237:f3da66175598 1697 * @}
mbed_official 237:f3da66175598 1698 */
mbed_official 237:f3da66175598 1699
mbed_official 237:f3da66175598 1700 /** @defgroup HAL_HRTIM_Group4 Simple PWM output mode functions
mbed_official 237:f3da66175598 1701 * @brief When a HRTIM timer operates in simple PWM output mode
mbed_official 237:f3da66175598 1702 * the output level is set to a programmable value when a match is
mbed_official 237:f3da66175598 1703 * found between the compare register and the counter and reset when
mbed_official 237:f3da66175598 1704 * the timer period is reached. Duty cycle is determined by the
mbed_official 237:f3da66175598 1705 * comparison value.
mbed_official 237:f3da66175598 1706 * Compare unit 1 is automatically associated to output 1
mbed_official 237:f3da66175598 1707 * Compare unit 2 is automatically associated to output 2
mbed_official 237:f3da66175598 1708 *
mbed_official 237:f3da66175598 1709 @verbatim
mbed_official 237:f3da66175598 1710 ===============================================================================
mbed_official 237:f3da66175598 1711 ##### Simple PWM output functions #####
mbed_official 237:f3da66175598 1712 ===============================================================================
mbed_official 237:f3da66175598 1713 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 1714 (+) Configure simple PWM output channel
mbed_official 237:f3da66175598 1715 (+) Start simple PWM output
mbed_official 237:f3da66175598 1716 (+) Stop simple PWM output
mbed_official 237:f3da66175598 1717 (+) Start simple PWM output and enable interrupt
mbed_official 237:f3da66175598 1718 (+) Stop simple PWM output and disable interrupt
mbed_official 237:f3da66175598 1719 (+) Start simple PWM output and enable DMA transfer
mbed_official 237:f3da66175598 1720 (+) Stop simple PWM output and disable DMA transfer
mbed_official 237:f3da66175598 1721
mbed_official 237:f3da66175598 1722 @endverbatim
mbed_official 237:f3da66175598 1723 * @{
mbed_official 237:f3da66175598 1724 */
mbed_official 237:f3da66175598 1725
mbed_official 237:f3da66175598 1726 /**
mbed_official 237:f3da66175598 1727 * @brief Configures an output in basic PWM mode
mbed_official 237:f3da66175598 1728 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1729 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1730 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1731 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1732 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1733 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1734 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1735 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1736 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 1737 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1738 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1739 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1740 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1741 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1742 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1743 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1744 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1745 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1746 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1747 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1748 * @param pSimplePWMChannelCfg: pointer to the basic PWM output configuration structure
mbed_official 237:f3da66175598 1749 * @note When the timer operates in basic PWM output mode:
mbed_official 237:f3da66175598 1750 * Output 1 is implicitely controled by the compare unit 1
mbed_official 237:f3da66175598 1751 * Output 2 is implicitely controled by the compare unit 2
mbed_official 237:f3da66175598 1752 * Output Set/Reset crossbar is set as follows:
mbed_official 237:f3da66175598 1753 * Ouput 1: SETx1R = CMP1, RSTx1R = PER
mbed_official 237:f3da66175598 1754 * Output 2: SETx2R = CMP2, RST2R = PER
mbed_official 237:f3da66175598 1755 * @retval HAL status
mbed_official 237:f3da66175598 1756 */
mbed_official 237:f3da66175598 1757 HAL_StatusTypeDef HAL_HRTIM_SimplePWMChannelConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1758 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1759 uint32_t PWMChannel,
mbed_official 237:f3da66175598 1760 HRTIM_SimplePWMChannelCfgTypeDef* pSimplePWMChannelCfg)
mbed_official 237:f3da66175598 1761 {
mbed_official 237:f3da66175598 1762 uint32_t CompareUnit = 0xFFFFFFFF;
mbed_official 237:f3da66175598 1763 HRTIM_CompareCfgTypeDef CompareCfg;
mbed_official 237:f3da66175598 1764 HRTIM_OutputCfgTypeDef OutputCfg;
mbed_official 237:f3da66175598 1765
mbed_official 237:f3da66175598 1766 /* Check parameters */
mbed_official 237:f3da66175598 1767 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 1768 assert_param(IS_HRTIM_OUTPUTPOLARITY(pSimplePWMChannelCfg->Polarity));
mbed_official 237:f3da66175598 1769 assert_param(IS_HRTIM_OUTPUTIDLELEVEL(pSimplePWMChannelCfg->IdleLevel));
mbed_official 237:f3da66175598 1770
mbed_official 237:f3da66175598 1771 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 1772 {
mbed_official 237:f3da66175598 1773 return HAL_BUSY;
mbed_official 237:f3da66175598 1774 }
mbed_official 237:f3da66175598 1775
mbed_official 237:f3da66175598 1776 /* Process Locked */
mbed_official 237:f3da66175598 1777 __HAL_LOCK(hhrtim); hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1778
mbed_official 237:f3da66175598 1779 /* Configure timer compare unit */
mbed_official 237:f3da66175598 1780 switch (PWMChannel)
mbed_official 237:f3da66175598 1781 {
mbed_official 237:f3da66175598 1782 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 1783 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 1784 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 1785 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 1786 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 1787 {
mbed_official 237:f3da66175598 1788 CompareUnit = HRTIM_COMPAREUNIT_1;
mbed_official 237:f3da66175598 1789 }
mbed_official 237:f3da66175598 1790 break;
mbed_official 237:f3da66175598 1791 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 1792 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 1793 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 1794 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 1795 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 1796 {
mbed_official 237:f3da66175598 1797 CompareUnit = HRTIM_COMPAREUNIT_2;
mbed_official 237:f3da66175598 1798 }
mbed_official 237:f3da66175598 1799 break;
mbed_official 237:f3da66175598 1800 }
mbed_official 237:f3da66175598 1801
mbed_official 237:f3da66175598 1802 CompareCfg.CompareValue = pSimplePWMChannelCfg->Pulse;
mbed_official 237:f3da66175598 1803 CompareCfg.AutoDelayedMode = HRTIM_AUTODELAYEDMODE_REGULAR;
mbed_official 237:f3da66175598 1804 CompareCfg.AutoDelayedTimeout = 0;
mbed_official 237:f3da66175598 1805
mbed_official 237:f3da66175598 1806 HRTIM_CompareUnitConfig(hhrtim,
mbed_official 237:f3da66175598 1807 TimerIdx,
mbed_official 237:f3da66175598 1808 CompareUnit,
mbed_official 237:f3da66175598 1809 &CompareCfg);
mbed_official 237:f3da66175598 1810
mbed_official 237:f3da66175598 1811 /* Configure timer output */
mbed_official 237:f3da66175598 1812 OutputCfg.Polarity = pSimplePWMChannelCfg->Polarity;
mbed_official 237:f3da66175598 1813 OutputCfg.IdleLevel = pSimplePWMChannelCfg->IdleLevel;
mbed_official 237:f3da66175598 1814 OutputCfg.FaultLevel = HRTIM_OUTPUTFAULTLEVEL_NONE;
mbed_official 237:f3da66175598 1815 OutputCfg.IdleMode = HRTIM_OUTPUTIDLEMODE_NONE;
mbed_official 237:f3da66175598 1816 OutputCfg.ChopperModeEnable = HRTIM_OUTPUTCHOPPERMODE_DISABLED;
mbed_official 237:f3da66175598 1817 OutputCfg.BurstModeEntryDelayed = HRTIM_OUTPUTBURSTMODEENTRY_REGULAR;
mbed_official 237:f3da66175598 1818
mbed_official 237:f3da66175598 1819 if (CompareUnit == HRTIM_COMPAREUNIT_1)
mbed_official 237:f3da66175598 1820 {
mbed_official 237:f3da66175598 1821 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP1;
mbed_official 237:f3da66175598 1822 }
mbed_official 237:f3da66175598 1823 else
mbed_official 237:f3da66175598 1824 {
mbed_official 237:f3da66175598 1825 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP2;
mbed_official 237:f3da66175598 1826 }
mbed_official 237:f3da66175598 1827 OutputCfg.ResetSource = HRTIM_OUTPUTSET_TIMPER;
mbed_official 237:f3da66175598 1828
mbed_official 237:f3da66175598 1829 HRTIM_OutputConfig(hhrtim,
mbed_official 237:f3da66175598 1830 TimerIdx,
mbed_official 237:f3da66175598 1831 PWMChannel,
mbed_official 237:f3da66175598 1832 &OutputCfg);
mbed_official 237:f3da66175598 1833
mbed_official 237:f3da66175598 1834 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1835
mbed_official 237:f3da66175598 1836 /* Process Unlocked */
mbed_official 237:f3da66175598 1837 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1838
mbed_official 237:f3da66175598 1839 return HAL_OK;
mbed_official 237:f3da66175598 1840 }
mbed_official 237:f3da66175598 1841
mbed_official 237:f3da66175598 1842 /**
mbed_official 237:f3da66175598 1843 * @brief Starts the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 1844 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1845 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1846 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1847 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1848 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1849 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1850 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1851 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1852 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 1853 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1854 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1855 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1856 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1857 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1858 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1859 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1860 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1861 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1862 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1863 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1864 * @retval HAL status
mbed_official 237:f3da66175598 1865 */
mbed_official 237:f3da66175598 1866 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1867 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1868 uint32_t PWMChannel)
mbed_official 237:f3da66175598 1869 {
mbed_official 237:f3da66175598 1870 /* Check the parameters */
mbed_official 237:f3da66175598 1871 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 1872
mbed_official 237:f3da66175598 1873 /* Process Locked */
mbed_official 237:f3da66175598 1874 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1875
mbed_official 237:f3da66175598 1876 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1877
mbed_official 237:f3da66175598 1878 /* Enable the timer output */
mbed_official 237:f3da66175598 1879 hhrtim->Instance->sCommonRegs.OENR |= PWMChannel;
mbed_official 237:f3da66175598 1880
mbed_official 237:f3da66175598 1881 /* Enable the timer counter */
mbed_official 237:f3da66175598 1882 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1883
mbed_official 237:f3da66175598 1884 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1885
mbed_official 237:f3da66175598 1886 /* Process Unlocked */
mbed_official 237:f3da66175598 1887 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1888
mbed_official 237:f3da66175598 1889 return HAL_OK;
mbed_official 237:f3da66175598 1890 }
mbed_official 237:f3da66175598 1891
mbed_official 237:f3da66175598 1892 /**
mbed_official 237:f3da66175598 1893 * @brief Stops the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 1894 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1895 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1896 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1897 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1898 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1899 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1900 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1901 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1902 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 1903 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1904 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1905 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1906 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1907 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1908 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1909 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1910 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1911 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1912 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1913 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1914 * @retval HAL status
mbed_official 237:f3da66175598 1915 */
mbed_official 237:f3da66175598 1916 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1917 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1918 uint32_t PWMChannel)
mbed_official 237:f3da66175598 1919 {
mbed_official 237:f3da66175598 1920 /* Check the parameters */
mbed_official 237:f3da66175598 1921 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 1922
mbed_official 237:f3da66175598 1923 /* Process Locked */
mbed_official 237:f3da66175598 1924 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1925
mbed_official 237:f3da66175598 1926 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1927
mbed_official 237:f3da66175598 1928 /* Disable the timer output */
mbed_official 237:f3da66175598 1929 hhrtim->Instance->sCommonRegs.ODISR |= PWMChannel;
mbed_official 237:f3da66175598 1930
mbed_official 237:f3da66175598 1931 /* Disable the timer counter */
mbed_official 237:f3da66175598 1932 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 1933
mbed_official 237:f3da66175598 1934 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 1935
mbed_official 237:f3da66175598 1936 /* Process Unlocked */
mbed_official 237:f3da66175598 1937 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 1938
mbed_official 237:f3da66175598 1939 return HAL_OK;
mbed_official 237:f3da66175598 1940 }
mbed_official 237:f3da66175598 1941
mbed_official 237:f3da66175598 1942 /**
mbed_official 237:f3da66175598 1943 * @brief Starts the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 1944 * The compare interrupt is enabled.
mbed_official 237:f3da66175598 1945 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 1946 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 1947 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1948 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 1949 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 1950 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 1951 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 1952 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 1953 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 1954 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 1955 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 1956 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 1957 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 1958 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 1959 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 1960 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 1961 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 1962 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 1963 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 1964 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 1965 * @retval HAL status
mbed_official 237:f3da66175598 1966 */
mbed_official 237:f3da66175598 1967 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 1968 uint32_t TimerIdx,
mbed_official 237:f3da66175598 1969 uint32_t PWMChannel)
mbed_official 237:f3da66175598 1970 {
mbed_official 237:f3da66175598 1971 /* Check the parameters */
mbed_official 237:f3da66175598 1972 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 1973
mbed_official 237:f3da66175598 1974 /* Process Locked */
mbed_official 237:f3da66175598 1975 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 1976
mbed_official 237:f3da66175598 1977 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 1978
mbed_official 237:f3da66175598 1979 /* Enable the timer output */
mbed_official 237:f3da66175598 1980 hhrtim->Instance->sCommonRegs.OENR |= PWMChannel;
mbed_official 237:f3da66175598 1981
mbed_official 237:f3da66175598 1982 /* Enable the timer interrupt (depends on the PWM output) */
mbed_official 237:f3da66175598 1983 switch (PWMChannel)
mbed_official 237:f3da66175598 1984 {
mbed_official 237:f3da66175598 1985 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 1986 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 1987 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 1988 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 1989 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 1990 {
mbed_official 237:f3da66175598 1991 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1);
mbed_official 237:f3da66175598 1992 }
mbed_official 237:f3da66175598 1993 break;
mbed_official 237:f3da66175598 1994 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 1995 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 1996 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 1997 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 1998 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 1999 {
mbed_official 237:f3da66175598 2000 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2);
mbed_official 237:f3da66175598 2001 }
mbed_official 237:f3da66175598 2002 break;
mbed_official 237:f3da66175598 2003 }
mbed_official 237:f3da66175598 2004
mbed_official 237:f3da66175598 2005 /* Enable the timer counter */
mbed_official 237:f3da66175598 2006 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2007
mbed_official 237:f3da66175598 2008 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2009
mbed_official 237:f3da66175598 2010 /* Process Unlocked */
mbed_official 237:f3da66175598 2011 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2012
mbed_official 237:f3da66175598 2013 return HAL_OK;
mbed_official 237:f3da66175598 2014 }
mbed_official 237:f3da66175598 2015
mbed_official 237:f3da66175598 2016 /**
mbed_official 237:f3da66175598 2017 * @brief Stops the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 2018 * The compare interrupt is disabled.
mbed_official 237:f3da66175598 2019 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2020 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2021 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2022 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2023 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2024 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2025 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2026 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2027 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 2028 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2029 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 2030 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 2031 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 2032 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 2033 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 2034 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 2035 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 2036 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 2037 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 2038 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 2039 * @retval HAL status
mbed_official 237:f3da66175598 2040 */
mbed_official 237:f3da66175598 2041 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2042 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2043 uint32_t PWMChannel)
mbed_official 237:f3da66175598 2044 {
mbed_official 237:f3da66175598 2045 /* Check the parameters */
mbed_official 237:f3da66175598 2046 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 2047
mbed_official 237:f3da66175598 2048 /* Process Locked */
mbed_official 237:f3da66175598 2049 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2050
mbed_official 237:f3da66175598 2051 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2052
mbed_official 237:f3da66175598 2053 /* Disable the timer output */
mbed_official 237:f3da66175598 2054 hhrtim->Instance->sCommonRegs.ODISR |= PWMChannel;
mbed_official 237:f3da66175598 2055
mbed_official 237:f3da66175598 2056 /* Disable the timer interrupt (depends on the PWM output) */
mbed_official 237:f3da66175598 2057 switch (PWMChannel)
mbed_official 237:f3da66175598 2058 {
mbed_official 237:f3da66175598 2059 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 2060 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 2061 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 2062 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 2063 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 2064 {
mbed_official 237:f3da66175598 2065 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1);
mbed_official 237:f3da66175598 2066 }
mbed_official 237:f3da66175598 2067 break;
mbed_official 237:f3da66175598 2068 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 2069 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 2070 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 2071 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 2072 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 2073 {
mbed_official 237:f3da66175598 2074 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2);
mbed_official 237:f3da66175598 2075 }
mbed_official 237:f3da66175598 2076 break;
mbed_official 237:f3da66175598 2077 }
mbed_official 237:f3da66175598 2078
mbed_official 237:f3da66175598 2079 /* Disable the timer counter */
mbed_official 237:f3da66175598 2080 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2081
mbed_official 237:f3da66175598 2082 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2083
mbed_official 237:f3da66175598 2084 /* Process Unlocked */
mbed_official 237:f3da66175598 2085 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2086
mbed_official 237:f3da66175598 2087 return HAL_OK;
mbed_official 237:f3da66175598 2088 }
mbed_official 237:f3da66175598 2089
mbed_official 237:f3da66175598 2090 /**
mbed_official 237:f3da66175598 2091 * @brief Starts the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 2092 * The compare DMA request is enabled.
mbed_official 237:f3da66175598 2093 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2094 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2095 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2096 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2097 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2098 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2099 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2100 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2101 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 2102 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2103 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 2104 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 2105 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 2106 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 2107 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 2108 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 2109 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 2110 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 2111 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 2112 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 2113 * @param SrcAddr: DMA transfer source address
mbed_official 237:f3da66175598 2114 * @param DestAddr: DMA transfer destination address
mbed_official 237:f3da66175598 2115 * @param Length: The length of data items (data size) to be transferred
mbed_official 237:f3da66175598 2116 * from source to destination
mbed_official 237:f3da66175598 2117 * @retval HAL status
mbed_official 237:f3da66175598 2118 */
mbed_official 237:f3da66175598 2119 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2120 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2121 uint32_t PWMChannel,
mbed_official 237:f3da66175598 2122 uint32_t SrcAddr,
mbed_official 237:f3da66175598 2123 uint32_t DestAddr,
mbed_official 237:f3da66175598 2124 uint32_t Length)
mbed_official 237:f3da66175598 2125 {
mbed_official 237:f3da66175598 2126 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 2127
mbed_official 237:f3da66175598 2128 /* Check the parameters */
mbed_official 237:f3da66175598 2129 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 2130
mbed_official 237:f3da66175598 2131 if((hhrtim->State == HAL_HRTIM_STATE_BUSY))
mbed_official 237:f3da66175598 2132 {
mbed_official 237:f3da66175598 2133 return HAL_BUSY;
mbed_official 237:f3da66175598 2134 }
mbed_official 237:f3da66175598 2135 if((hhrtim->State == HAL_HRTIM_STATE_READY))
mbed_official 237:f3da66175598 2136 {
mbed_official 237:f3da66175598 2137 if((SrcAddr == 0 ) || (DestAddr == 0 ) || (Length == 0))
mbed_official 237:f3da66175598 2138 {
mbed_official 237:f3da66175598 2139 return HAL_ERROR;
mbed_official 237:f3da66175598 2140 }
mbed_official 237:f3da66175598 2141 else
mbed_official 237:f3da66175598 2142 {
mbed_official 237:f3da66175598 2143 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2144 }
mbed_official 237:f3da66175598 2145 }
mbed_official 237:f3da66175598 2146
mbed_official 237:f3da66175598 2147 /* Process Locked */
mbed_official 237:f3da66175598 2148 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2149
mbed_official 237:f3da66175598 2150 /* Enable the timer output */
mbed_official 237:f3da66175598 2151 hhrtim->Instance->sCommonRegs.OENR |= PWMChannel;
mbed_official 237:f3da66175598 2152
mbed_official 237:f3da66175598 2153 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 2154 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 2155
mbed_official 237:f3da66175598 2156 /* Set the DMA error callback */
mbed_official 237:f3da66175598 2157 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 2158
mbed_official 237:f3da66175598 2159 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 2160 hdma->XferCpltCallback = HRTIM_DMATimerxCplt;
mbed_official 237:f3da66175598 2161
mbed_official 237:f3da66175598 2162 /* Enable the DMA channel */
mbed_official 237:f3da66175598 2163 HAL_DMA_Start_IT(hdma, SrcAddr, DestAddr, Length);
mbed_official 237:f3da66175598 2164
mbed_official 237:f3da66175598 2165 /* Enable the timer DMA request */
mbed_official 237:f3da66175598 2166 switch (PWMChannel)
mbed_official 237:f3da66175598 2167 {
mbed_official 237:f3da66175598 2168 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 2169 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 2170 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 2171 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 2172 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 2173 {
mbed_official 237:f3da66175598 2174 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CMP1);
mbed_official 237:f3da66175598 2175 }
mbed_official 237:f3da66175598 2176 break;
mbed_official 237:f3da66175598 2177 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 2178 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 2179 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 2180 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 2181 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 2182 {
mbed_official 237:f3da66175598 2183 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CMP2);
mbed_official 237:f3da66175598 2184 }
mbed_official 237:f3da66175598 2185 break;
mbed_official 237:f3da66175598 2186 }
mbed_official 237:f3da66175598 2187
mbed_official 237:f3da66175598 2188 /* Enable the timer counter */
mbed_official 237:f3da66175598 2189 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2190
mbed_official 237:f3da66175598 2191 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2192
mbed_official 237:f3da66175598 2193 /* Process Unlocked */
mbed_official 237:f3da66175598 2194 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2195
mbed_official 237:f3da66175598 2196 return HAL_OK;
mbed_official 237:f3da66175598 2197 }
mbed_official 237:f3da66175598 2198
mbed_official 237:f3da66175598 2199 /**
mbed_official 237:f3da66175598 2200 * @brief Stops the PWM output signal generation on the designed timer output
mbed_official 237:f3da66175598 2201 * The compare DMA request is disabled.
mbed_official 237:f3da66175598 2202 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2203 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2204 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2205 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2206 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2207 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2208 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2209 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2210 * @param PWMChannel: Timer output
mbed_official 237:f3da66175598 2211 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2212 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 2213 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 2214 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 2215 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 2216 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 2217 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 2218 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 2219 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 2220 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 2221 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 2222 * @retval HAL status
mbed_official 237:f3da66175598 2223 */
mbed_official 237:f3da66175598 2224 HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2225 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2226 uint32_t PWMChannel)
mbed_official 237:f3da66175598 2227 {
mbed_official 237:f3da66175598 2228 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 2229
mbed_official 237:f3da66175598 2230 /* Check the parameters */
mbed_official 237:f3da66175598 2231 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, PWMChannel));
mbed_official 237:f3da66175598 2232
mbed_official 237:f3da66175598 2233 /* Process Locked */
mbed_official 237:f3da66175598 2234 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2235
mbed_official 237:f3da66175598 2236 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2237
mbed_official 237:f3da66175598 2238 /* Disable the timer output */
mbed_official 237:f3da66175598 2239 hhrtim->Instance->sCommonRegs.ODISR |= PWMChannel;
mbed_official 237:f3da66175598 2240
mbed_official 237:f3da66175598 2241 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 2242 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 2243
mbed_official 237:f3da66175598 2244 /* Disable the DMA */
mbed_official 237:f3da66175598 2245 HAL_DMA_Abort(hdma);
mbed_official 237:f3da66175598 2246
mbed_official 237:f3da66175598 2247 /* Disable the timer DMA request */
mbed_official 237:f3da66175598 2248 switch (PWMChannel)
mbed_official 237:f3da66175598 2249 {
mbed_official 237:f3da66175598 2250 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 2251 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 2252 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 2253 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 2254 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 2255 {
mbed_official 237:f3da66175598 2256 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CMP1);
mbed_official 237:f3da66175598 2257 }
mbed_official 237:f3da66175598 2258 break;
mbed_official 237:f3da66175598 2259 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 2260 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 2261 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 2262 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 2263 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 2264 {
mbed_official 237:f3da66175598 2265 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CMP2);
mbed_official 237:f3da66175598 2266 }
mbed_official 237:f3da66175598 2267 break;
mbed_official 237:f3da66175598 2268 }
mbed_official 237:f3da66175598 2269
mbed_official 237:f3da66175598 2270 /* Disable the timer counter */
mbed_official 237:f3da66175598 2271 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2272
mbed_official 237:f3da66175598 2273 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2274
mbed_official 237:f3da66175598 2275 /* Process Unlocked */
mbed_official 237:f3da66175598 2276 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2277
mbed_official 237:f3da66175598 2278 return HAL_OK;
mbed_official 237:f3da66175598 2279 }
mbed_official 237:f3da66175598 2280
mbed_official 237:f3da66175598 2281 /**
mbed_official 237:f3da66175598 2282 * @}
mbed_official 237:f3da66175598 2283 */
mbed_official 237:f3da66175598 2284
mbed_official 237:f3da66175598 2285 /** @defgroup HAL_HRTIM_Group5 Simple input capture functions
mbed_official 237:f3da66175598 2286 * @brief When a HRTIM timer operates in simple input capture mode
mbed_official 237:f3da66175598 2287 * the Capture Register (HRTIM_CPT1/2xR) is used to latch the
mbed_official 237:f3da66175598 2288 * value of the timer counter counter after a transition detected
mbed_official 237:f3da66175598 2289 * on a given external event input.
mbed_official 237:f3da66175598 2290 *
mbed_official 237:f3da66175598 2291 @verbatim
mbed_official 237:f3da66175598 2292 ===============================================================================
mbed_official 237:f3da66175598 2293 ##### Simple input capture functions #####
mbed_official 237:f3da66175598 2294 ===============================================================================
mbed_official 237:f3da66175598 2295 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 2296 (+) Configure simple input capture channel
mbed_official 237:f3da66175598 2297 (+) Start simple input capture
mbed_official 237:f3da66175598 2298 (+) Stop simple input capture
mbed_official 237:f3da66175598 2299 (+) Start simple input capture and enable interrupt
mbed_official 237:f3da66175598 2300 (+) Stop simple input capture and disable interrupt
mbed_official 237:f3da66175598 2301 (+) Start simple input capture and enable DMA transfer
mbed_official 237:f3da66175598 2302 (+) Stop simple input capture and disable DMA transfer
mbed_official 237:f3da66175598 2303
mbed_official 237:f3da66175598 2304 @endverbatim
mbed_official 237:f3da66175598 2305 * @{
mbed_official 237:f3da66175598 2306 */
mbed_official 237:f3da66175598 2307
mbed_official 237:f3da66175598 2308 /**
mbed_official 237:f3da66175598 2309 * @brief Configures a basic capture
mbed_official 237:f3da66175598 2310 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2311 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2312 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2313 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2314 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2315 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2316 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2317 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2318 * @param CaptureChannel: Capture unit
mbed_official 237:f3da66175598 2319 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2320 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2321 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2322 * @param pSimpleCaptureChannelCfg: pointer to the basic capture configuration structure
mbed_official 237:f3da66175598 2323 * @note When the timer operates in basic capture mode the capture is trigerred
mbed_official 237:f3da66175598 2324 * by the designated external event and GPIO input is implicitely used as event source.
mbed_official 237:f3da66175598 2325 * The cature can be triggered by a rising edge, a falling edge or both
mbed_official 237:f3da66175598 2326 * edges on event channel.
mbed_official 237:f3da66175598 2327 * @retval HAL status
mbed_official 237:f3da66175598 2328 */
mbed_official 237:f3da66175598 2329 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureChannelConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2330 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2331 uint32_t CaptureChannel,
mbed_official 237:f3da66175598 2332 HRTIM_SimpleCaptureChannelCfgTypeDef* pSimpleCaptureChannelCfg)
mbed_official 237:f3da66175598 2333 {
mbed_official 237:f3da66175598 2334 HRTIM_EventCfgTypeDef EventCfg;
mbed_official 237:f3da66175598 2335
mbed_official 237:f3da66175598 2336 /* Check parameters */
mbed_official 237:f3da66175598 2337 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2338 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2339 assert_param(IS_HRTIM_EVENT(pSimpleCaptureChannelCfg->Event));
mbed_official 237:f3da66175598 2340 assert_param(IS_HRTIM_EVENTPOLARITY(pSimpleCaptureChannelCfg->EventSensitivity,
mbed_official 237:f3da66175598 2341 pSimpleCaptureChannelCfg->EventPolarity));
mbed_official 237:f3da66175598 2342 assert_param(IS_HRTIM_EVENTSENSITIVITY(pSimpleCaptureChannelCfg->EventSensitivity));
mbed_official 237:f3da66175598 2343 assert_param(IS_HRTIM_EVENTFILTER(pSimpleCaptureChannelCfg->Event,
mbed_official 237:f3da66175598 2344 pSimpleCaptureChannelCfg->EventFilter));
mbed_official 237:f3da66175598 2345
mbed_official 237:f3da66175598 2346 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 2347 {
mbed_official 237:f3da66175598 2348 return HAL_BUSY;
mbed_official 237:f3da66175598 2349 }
mbed_official 237:f3da66175598 2350
mbed_official 237:f3da66175598 2351 /* Process Locked */
mbed_official 237:f3da66175598 2352 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2353
mbed_official 237:f3da66175598 2354 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2355
mbed_official 237:f3da66175598 2356 /* Configure external event channel */
mbed_official 237:f3da66175598 2357 EventCfg.FastMode = HRTIM_EVENTFASTMODE_DISABLE;
mbed_official 237:f3da66175598 2358 EventCfg.Filter = pSimpleCaptureChannelCfg->EventFilter;
mbed_official 237:f3da66175598 2359 EventCfg.Polarity = pSimpleCaptureChannelCfg->EventPolarity;
mbed_official 237:f3da66175598 2360 EventCfg.Sensitivity = pSimpleCaptureChannelCfg->EventSensitivity;
mbed_official 237:f3da66175598 2361 EventCfg.Source = HRTIM_EVENTSRC_1;
mbed_official 237:f3da66175598 2362
mbed_official 237:f3da66175598 2363 HRTIM_EventConfig(hhrtim,
mbed_official 237:f3da66175598 2364 pSimpleCaptureChannelCfg->Event,
mbed_official 237:f3da66175598 2365 &EventCfg);
mbed_official 237:f3da66175598 2366
mbed_official 237:f3da66175598 2367 /* Memorize capture trigger (will be configured when the capture is started */
mbed_official 237:f3da66175598 2368 HRTIM_CaptureUnitConfig(hhrtim,
mbed_official 237:f3da66175598 2369 TimerIdx,
mbed_official 237:f3da66175598 2370 CaptureChannel,
mbed_official 237:f3da66175598 2371 pSimpleCaptureChannelCfg->Event);
mbed_official 237:f3da66175598 2372
mbed_official 237:f3da66175598 2373 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2374
mbed_official 237:f3da66175598 2375 /* Process Unlocked */
mbed_official 237:f3da66175598 2376 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2377
mbed_official 237:f3da66175598 2378 return HAL_OK;
mbed_official 237:f3da66175598 2379 }
mbed_official 237:f3da66175598 2380
mbed_official 237:f3da66175598 2381 /**
mbed_official 237:f3da66175598 2382 * @brief Enables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2383 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2384 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2385 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2386 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2387 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2388 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2389 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2390 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2391 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2392 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2393 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2394 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2395 * @retval HAL status
mbed_official 237:f3da66175598 2396 * @note The external event triggering the capture is available for all timing
mbed_official 237:f3da66175598 2397 * units. It can be used directly and is active as soon as the timing
mbed_official 237:f3da66175598 2398 * unit counter is enabled.
mbed_official 237:f3da66175598 2399 */
mbed_official 237:f3da66175598 2400 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2401 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2402 uint32_t CaptureChannel)
mbed_official 237:f3da66175598 2403 {
mbed_official 237:f3da66175598 2404 /* Check the parameters */
mbed_official 237:f3da66175598 2405 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2406 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2407
mbed_official 237:f3da66175598 2408 /* Process Locked */
mbed_official 237:f3da66175598 2409 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2410
mbed_official 237:f3da66175598 2411 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2412
mbed_official 237:f3da66175598 2413 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2414 switch (CaptureChannel)
mbed_official 237:f3da66175598 2415 {
mbed_official 237:f3da66175598 2416 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2417 {
mbed_official 237:f3da66175598 2418 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger1;
mbed_official 237:f3da66175598 2419 }
mbed_official 237:f3da66175598 2420 break;
mbed_official 237:f3da66175598 2421 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2422 {
mbed_official 237:f3da66175598 2423 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger2;
mbed_official 237:f3da66175598 2424 }
mbed_official 237:f3da66175598 2425 break;
mbed_official 237:f3da66175598 2426 }
mbed_official 237:f3da66175598 2427
mbed_official 237:f3da66175598 2428 /* Enable the timer counter */
mbed_official 237:f3da66175598 2429 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2430
mbed_official 237:f3da66175598 2431 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2432
mbed_official 237:f3da66175598 2433 /* Process Unlocked */
mbed_official 237:f3da66175598 2434 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2435
mbed_official 237:f3da66175598 2436 return HAL_OK;
mbed_official 237:f3da66175598 2437 }
mbed_official 237:f3da66175598 2438
mbed_official 237:f3da66175598 2439 /**
mbed_official 237:f3da66175598 2440 * @brief Disables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2441 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2442 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2443 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2444 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2445 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2446 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2447 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2448 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2449 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2450 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2451 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2452 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2453 * @retval HAL status
mbed_official 237:f3da66175598 2454 */
mbed_official 237:f3da66175598 2455 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2456 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2457 uint32_t CaptureChannel)
mbed_official 237:f3da66175598 2458 {
mbed_official 237:f3da66175598 2459 /* Check the parameters */
mbed_official 237:f3da66175598 2460 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2461 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2462
mbed_official 237:f3da66175598 2463 /* Process Locked */
mbed_official 237:f3da66175598 2464 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2465
mbed_official 237:f3da66175598 2466 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2467
mbed_official 237:f3da66175598 2468 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2469 switch (CaptureChannel)
mbed_official 237:f3da66175598 2470 {
mbed_official 237:f3da66175598 2471 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2472 {
mbed_official 237:f3da66175598 2473 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2474 }
mbed_official 237:f3da66175598 2475 break;
mbed_official 237:f3da66175598 2476 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2477 {
mbed_official 237:f3da66175598 2478 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2479 }
mbed_official 237:f3da66175598 2480 break;
mbed_official 237:f3da66175598 2481 }
mbed_official 237:f3da66175598 2482
mbed_official 237:f3da66175598 2483 /* Disable the timer counter */
mbed_official 237:f3da66175598 2484 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR == HRTIM_CAPTURETRIGGER_NONE) &&
mbed_official 237:f3da66175598 2485 (hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR == HRTIM_CAPTURETRIGGER_NONE))
mbed_official 237:f3da66175598 2486 {
mbed_official 237:f3da66175598 2487 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2488 }
mbed_official 237:f3da66175598 2489
mbed_official 237:f3da66175598 2490 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2491
mbed_official 237:f3da66175598 2492 /* Process Unlocked */
mbed_official 237:f3da66175598 2493 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2494
mbed_official 237:f3da66175598 2495 return HAL_OK;
mbed_official 237:f3da66175598 2496 }
mbed_official 237:f3da66175598 2497
mbed_official 237:f3da66175598 2498 /**
mbed_official 237:f3da66175598 2499 * @brief Enables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2500 * Capture interrupt is enabled
mbed_official 237:f3da66175598 2501 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2502 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2503 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2504 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2505 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2506 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2507 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2508 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2509 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2510 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2511 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2512 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2513 * @retval HAL status
mbed_official 237:f3da66175598 2514 */
mbed_official 237:f3da66175598 2515 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2516 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2517 uint32_t CaptureChannel)
mbed_official 237:f3da66175598 2518 {
mbed_official 237:f3da66175598 2519 /* Check the parameters */
mbed_official 237:f3da66175598 2520 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2521 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2522
mbed_official 237:f3da66175598 2523 /* Process Locked */
mbed_official 237:f3da66175598 2524 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2525
mbed_official 237:f3da66175598 2526 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2527
mbed_official 237:f3da66175598 2528 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2529 switch (CaptureChannel)
mbed_official 237:f3da66175598 2530 {
mbed_official 237:f3da66175598 2531 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2532 {
mbed_official 237:f3da66175598 2533 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger1;
mbed_official 237:f3da66175598 2534
mbed_official 237:f3da66175598 2535 /* Enable the capture unit 1 interrupt */
mbed_official 237:f3da66175598 2536 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT1);
mbed_official 237:f3da66175598 2537 }
mbed_official 237:f3da66175598 2538 break;
mbed_official 237:f3da66175598 2539 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2540 {
mbed_official 237:f3da66175598 2541 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger2;
mbed_official 237:f3da66175598 2542
mbed_official 237:f3da66175598 2543 /* Enable the capture unit 2 interrupt */
mbed_official 237:f3da66175598 2544 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT2);
mbed_official 237:f3da66175598 2545 }
mbed_official 237:f3da66175598 2546 break;
mbed_official 237:f3da66175598 2547 }
mbed_official 237:f3da66175598 2548
mbed_official 237:f3da66175598 2549 /* Enable the timer counter */
mbed_official 237:f3da66175598 2550 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2551
mbed_official 237:f3da66175598 2552 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2553
mbed_official 237:f3da66175598 2554 /* Process Unlocked */
mbed_official 237:f3da66175598 2555 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2556
mbed_official 237:f3da66175598 2557 return HAL_OK;
mbed_official 237:f3da66175598 2558 }
mbed_official 237:f3da66175598 2559
mbed_official 237:f3da66175598 2560 /**
mbed_official 237:f3da66175598 2561 * @brief Disables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2562 * Capture interrupt is disabled
mbed_official 237:f3da66175598 2563 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2564 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2565 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2566 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2567 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2568 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2569 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2570 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2571 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2572 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2573 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2574 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2575 * @retval HAL status
mbed_official 237:f3da66175598 2576 */
mbed_official 237:f3da66175598 2577 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2578 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2579 uint32_t CaptureChannel)
mbed_official 237:f3da66175598 2580 {
mbed_official 237:f3da66175598 2581 /* Check the parameters */
mbed_official 237:f3da66175598 2582 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2583 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2584
mbed_official 237:f3da66175598 2585 /* Process Locked */
mbed_official 237:f3da66175598 2586 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2587
mbed_official 237:f3da66175598 2588 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2589
mbed_official 237:f3da66175598 2590 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2591 switch (CaptureChannel)
mbed_official 237:f3da66175598 2592 {
mbed_official 237:f3da66175598 2593 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2594 {
mbed_official 237:f3da66175598 2595 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2596
mbed_official 237:f3da66175598 2597 /* Disable the capture unit 1 interrupt */
mbed_official 237:f3da66175598 2598 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT1);
mbed_official 237:f3da66175598 2599 }
mbed_official 237:f3da66175598 2600 break;
mbed_official 237:f3da66175598 2601 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2602 {
mbed_official 237:f3da66175598 2603 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2604
mbed_official 237:f3da66175598 2605 /* Disable the capture unit 2 interrupt */
mbed_official 237:f3da66175598 2606 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT2);
mbed_official 237:f3da66175598 2607 }
mbed_official 237:f3da66175598 2608 break;
mbed_official 237:f3da66175598 2609 }
mbed_official 237:f3da66175598 2610
mbed_official 237:f3da66175598 2611 /* Disable the timer counter */
mbed_official 237:f3da66175598 2612 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR == HRTIM_CAPTURETRIGGER_NONE) &&
mbed_official 237:f3da66175598 2613 (hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR == HRTIM_CAPTURETRIGGER_NONE))
mbed_official 237:f3da66175598 2614 {
mbed_official 237:f3da66175598 2615 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2616 }
mbed_official 237:f3da66175598 2617
mbed_official 237:f3da66175598 2618 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2619
mbed_official 237:f3da66175598 2620 /* Process Unlocked */
mbed_official 237:f3da66175598 2621 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2622
mbed_official 237:f3da66175598 2623 return HAL_OK;
mbed_official 237:f3da66175598 2624 }
mbed_official 237:f3da66175598 2625
mbed_official 237:f3da66175598 2626 /**
mbed_official 237:f3da66175598 2627 * @brief Enables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2628 * Capture DMA request is enabled
mbed_official 237:f3da66175598 2629 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2630 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2631 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2632 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2633 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2634 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2635 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2636 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2637 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2638 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2639 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2640 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2641 * @param SrcAddr: DMA transfer source address
mbed_official 237:f3da66175598 2642 * @param DestAddr: DMA transfer destination address
mbed_official 237:f3da66175598 2643 * @param Length: The length of data items (data size) to be transferred
mbed_official 237:f3da66175598 2644 * from source to destination
mbed_official 237:f3da66175598 2645 * @retval HAL status
mbed_official 237:f3da66175598 2646 */
mbed_official 237:f3da66175598 2647 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2648 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2649 uint32_t CaptureChannel,
mbed_official 237:f3da66175598 2650 uint32_t SrcAddr,
mbed_official 237:f3da66175598 2651 uint32_t DestAddr,
mbed_official 237:f3da66175598 2652 uint32_t Length)
mbed_official 237:f3da66175598 2653 {
mbed_official 237:f3da66175598 2654 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 2655
mbed_official 237:f3da66175598 2656 /* Check the parameters */
mbed_official 237:f3da66175598 2657 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2658 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2659
mbed_official 237:f3da66175598 2660 /* Process Locked */
mbed_official 237:f3da66175598 2661 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2662
mbed_official 237:f3da66175598 2663 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2664
mbed_official 237:f3da66175598 2665 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 2666 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 2667
mbed_official 237:f3da66175598 2668 /* Set the DMA error callback */
mbed_official 237:f3da66175598 2669 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 2670
mbed_official 237:f3da66175598 2671 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 2672 hdma->XferCpltCallback = HRTIM_DMATimerxCplt;
mbed_official 237:f3da66175598 2673
mbed_official 237:f3da66175598 2674 /* Enable the DMA channel */
mbed_official 237:f3da66175598 2675 HAL_DMA_Start_IT(hdma, SrcAddr, DestAddr, Length);
mbed_official 237:f3da66175598 2676
mbed_official 237:f3da66175598 2677 switch (CaptureChannel)
mbed_official 237:f3da66175598 2678 {
mbed_official 237:f3da66175598 2679 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2680 {
mbed_official 237:f3da66175598 2681 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2682 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger1;
mbed_official 237:f3da66175598 2683
mbed_official 237:f3da66175598 2684 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CPT1);
mbed_official 237:f3da66175598 2685 }
mbed_official 237:f3da66175598 2686 break;
mbed_official 237:f3da66175598 2687 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2688 {
mbed_official 237:f3da66175598 2689 /* Set the capture unit trigger */
mbed_official 237:f3da66175598 2690 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = hhrtim->TimerParam[TimerIdx].CaptureTrigger2;
mbed_official 237:f3da66175598 2691
mbed_official 237:f3da66175598 2692 /* Enable the timer DMA request */
mbed_official 237:f3da66175598 2693 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CPT2);
mbed_official 237:f3da66175598 2694 }
mbed_official 237:f3da66175598 2695 break;
mbed_official 237:f3da66175598 2696 }
mbed_official 237:f3da66175598 2697
mbed_official 237:f3da66175598 2698 /* Enable the timer counter */
mbed_official 237:f3da66175598 2699 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2700
mbed_official 237:f3da66175598 2701 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2702
mbed_official 237:f3da66175598 2703 /* Process Unlocked */
mbed_official 237:f3da66175598 2704 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2705
mbed_official 237:f3da66175598 2706 return HAL_OK;
mbed_official 237:f3da66175598 2707 }
mbed_official 237:f3da66175598 2708
mbed_official 237:f3da66175598 2709 /**
mbed_official 237:f3da66175598 2710 * @brief Disables a basic capture on the designed capture unit
mbed_official 237:f3da66175598 2711 * Capture DMA request is disabled
mbed_official 237:f3da66175598 2712 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2713 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2714 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2715 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2716 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2717 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2718 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2719 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2720 * @param CaptureChannel: Timer output
mbed_official 237:f3da66175598 2721 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2722 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 2723 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 2724 * @retval HAL status
mbed_official 237:f3da66175598 2725 */
mbed_official 237:f3da66175598 2726 HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2727 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2728 uint32_t CaptureChannel)
mbed_official 237:f3da66175598 2729 {
mbed_official 237:f3da66175598 2730 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 2731
mbed_official 237:f3da66175598 2732 /* Check the parameters */
mbed_official 237:f3da66175598 2733 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 2734 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureChannel));
mbed_official 237:f3da66175598 2735
mbed_official 237:f3da66175598 2736 /* Process Locked */
mbed_official 237:f3da66175598 2737 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2738
mbed_official 237:f3da66175598 2739 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2740
mbed_official 237:f3da66175598 2741 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 2742 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 2743
mbed_official 237:f3da66175598 2744 /* Disable the DMA */
mbed_official 237:f3da66175598 2745 HAL_DMA_Abort(hdma);
mbed_official 237:f3da66175598 2746
mbed_official 237:f3da66175598 2747 switch (CaptureChannel)
mbed_official 237:f3da66175598 2748 {
mbed_official 237:f3da66175598 2749 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 2750 {
mbed_official 237:f3da66175598 2751 /* Reset the capture unit trigger */
mbed_official 237:f3da66175598 2752 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2753
mbed_official 237:f3da66175598 2754 /* Disable the capture unit 1 DMA request */
mbed_official 237:f3da66175598 2755 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CPT1);
mbed_official 237:f3da66175598 2756 }
mbed_official 237:f3da66175598 2757 break;
mbed_official 237:f3da66175598 2758 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 2759 {
mbed_official 237:f3da66175598 2760 /* Reset the capture unit trigger */
mbed_official 237:f3da66175598 2761 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = HRTIM_CAPTURETRIGGER_NONE;
mbed_official 237:f3da66175598 2762
mbed_official 237:f3da66175598 2763 /* Disable the capture unit 2 DMA request */
mbed_official 237:f3da66175598 2764 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim, TimerIdx, HRTIM_TIM_DMA_CPT2);
mbed_official 237:f3da66175598 2765 }
mbed_official 237:f3da66175598 2766 break;
mbed_official 237:f3da66175598 2767 }
mbed_official 237:f3da66175598 2768
mbed_official 237:f3da66175598 2769 /* Disable the timer counter */
mbed_official 237:f3da66175598 2770 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR == HRTIM_CAPTURETRIGGER_NONE) &&
mbed_official 237:f3da66175598 2771 (hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR == HRTIM_CAPTURETRIGGER_NONE))
mbed_official 237:f3da66175598 2772 {
mbed_official 237:f3da66175598 2773 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2774 }
mbed_official 237:f3da66175598 2775
mbed_official 237:f3da66175598 2776 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2777
mbed_official 237:f3da66175598 2778 /* Process Unlocked */
mbed_official 237:f3da66175598 2779 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2780
mbed_official 237:f3da66175598 2781 return HAL_OK;
mbed_official 237:f3da66175598 2782 }
mbed_official 237:f3da66175598 2783
mbed_official 237:f3da66175598 2784 /**
mbed_official 237:f3da66175598 2785 * @}
mbed_official 237:f3da66175598 2786 */
mbed_official 237:f3da66175598 2787
mbed_official 237:f3da66175598 2788 /** @defgroup HAL_HRTIM_Group6 Simple one pulse functions
mbed_official 237:f3da66175598 2789 * @brief When a HRTIM timer operates in simple one pulse mode
mbed_official 237:f3da66175598 2790 * the timer counter is started in response to transition detected
mbed_official 237:f3da66175598 2791 * on a given external event input to generate a pulse with a
mbed_official 237:f3da66175598 2792 * programmable length after a programmable delay.
mbed_official 237:f3da66175598 2793 *
mbed_official 237:f3da66175598 2794 @verbatim
mbed_official 237:f3da66175598 2795 ===============================================================================
mbed_official 237:f3da66175598 2796 ##### Simple one pulse functions #####
mbed_official 237:f3da66175598 2797 ===============================================================================
mbed_official 237:f3da66175598 2798 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 2799 (+) Configure one pulse channel
mbed_official 237:f3da66175598 2800 (+) Start one pulse generation
mbed_official 237:f3da66175598 2801 (+) Stop one pulse generation
mbed_official 237:f3da66175598 2802 (+) Start one pulse generation and enable interrupt
mbed_official 237:f3da66175598 2803 (+) Stop one pulse generation and disable interrupt
mbed_official 237:f3da66175598 2804
mbed_official 237:f3da66175598 2805 @endverbatim
mbed_official 237:f3da66175598 2806 * @{
mbed_official 237:f3da66175598 2807 */
mbed_official 237:f3da66175598 2808
mbed_official 237:f3da66175598 2809 /**
mbed_official 237:f3da66175598 2810 * @brief Configures an output basic one pulse mode
mbed_official 237:f3da66175598 2811 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2812 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2813 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2814 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2815 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2816 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2817 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2818 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2819 * @param OnePulseChannel: Timer output
mbed_official 237:f3da66175598 2820 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2821 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 2822 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 2823 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 2824 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 2825 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 2826 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 2827 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 2828 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 2829 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 2830 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 2831 * @param pSimpleOnePulseChannelCfg: pointer to the basic one pulse output configuration structure
mbed_official 237:f3da66175598 2832 * @note When the timer operates in basic one pulse mode:
mbed_official 237:f3da66175598 2833 * the timer counter is implicitely started by the reset event,
mbed_official 237:f3da66175598 2834 * the reset of the timer counter is triggered by the designated external event
mbed_official 237:f3da66175598 2835 * GPIO input is implicitely used as event source,
mbed_official 237:f3da66175598 2836 * Output 1 is implicitely controled by the compare unit 1,
mbed_official 237:f3da66175598 2837 * Output 2 is implicitely controled by the compare unit 2.
mbed_official 237:f3da66175598 2838 * Output Set/Reset crossbar is set as follows:
mbed_official 237:f3da66175598 2839 * Ouput 1: SETx1R = CMP1, RSTx1R = PER
mbed_official 237:f3da66175598 2840 * Output 2: SETx2R = CMP2, RST2R = PER
mbed_official 237:f3da66175598 2841 * @retval HAL status
mbed_official 237:f3da66175598 2842 * @note If HAL_HRTIM_SimpleOnePulseChannelConfig is called for both timer
mbed_official 237:f3da66175598 2843 * outputs, the reset event related configuration data provided in the
mbed_official 237:f3da66175598 2844 * second call will override the reset event related configuration data
mbed_official 237:f3da66175598 2845 * provided in the first call.
mbed_official 237:f3da66175598 2846 */
mbed_official 237:f3da66175598 2847 HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseChannelConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2848 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2849 uint32_t OnePulseChannel,
mbed_official 237:f3da66175598 2850 HRTIM_SimpleOnePulseChannelCfgTypeDef* pSimpleOnePulseChannelCfg)
mbed_official 237:f3da66175598 2851 {
mbed_official 237:f3da66175598 2852 uint32_t CompareUnit = 0xFFFFFFFF;
mbed_official 237:f3da66175598 2853 HRTIM_CompareCfgTypeDef CompareCfg;
mbed_official 237:f3da66175598 2854 HRTIM_OutputCfgTypeDef OutputCfg;
mbed_official 237:f3da66175598 2855 HRTIM_EventCfgTypeDef EventCfg;
mbed_official 237:f3da66175598 2856
mbed_official 237:f3da66175598 2857 /* Check parameters */
mbed_official 237:f3da66175598 2858 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OnePulseChannel));
mbed_official 237:f3da66175598 2859 assert_param(IS_HRTIM_OUTPUTPOLARITY(pSimpleOnePulseChannelCfg->OutputPolarity));
mbed_official 237:f3da66175598 2860 assert_param(IS_HRTIM_OUTPUTIDLELEVEL(pSimpleOnePulseChannelCfg->OutputIdleLevel));
mbed_official 237:f3da66175598 2861 assert_param(IS_HRTIM_EVENT(pSimpleOnePulseChannelCfg->Event));
mbed_official 237:f3da66175598 2862 assert_param(IS_HRTIM_EVENTPOLARITY(pSimpleOnePulseChannelCfg->EventSensitivity,
mbed_official 237:f3da66175598 2863 pSimpleOnePulseChannelCfg->EventPolarity));
mbed_official 237:f3da66175598 2864 assert_param(IS_HRTIM_EVENTSENSITIVITY(pSimpleOnePulseChannelCfg->EventSensitivity));
mbed_official 237:f3da66175598 2865 assert_param(IS_HRTIM_EVENTFILTER(pSimpleOnePulseChannelCfg->Event,
mbed_official 237:f3da66175598 2866 pSimpleOnePulseChannelCfg->EventFilter));
mbed_official 237:f3da66175598 2867
mbed_official 237:f3da66175598 2868 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 2869 {
mbed_official 237:f3da66175598 2870 return HAL_BUSY;
mbed_official 237:f3da66175598 2871 }
mbed_official 237:f3da66175598 2872
mbed_official 237:f3da66175598 2873 /* Process Locked */
mbed_official 237:f3da66175598 2874 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2875
mbed_official 237:f3da66175598 2876 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2877
mbed_official 237:f3da66175598 2878 /* Configure timer compare unit */
mbed_official 237:f3da66175598 2879 switch (OnePulseChannel)
mbed_official 237:f3da66175598 2880 {
mbed_official 237:f3da66175598 2881 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 2882 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 2883 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 2884 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 2885 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 2886 {
mbed_official 237:f3da66175598 2887 CompareUnit = HRTIM_COMPAREUNIT_1;
mbed_official 237:f3da66175598 2888 }
mbed_official 237:f3da66175598 2889 break;
mbed_official 237:f3da66175598 2890 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 2891 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 2892 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 2893 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 2894 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 2895 {
mbed_official 237:f3da66175598 2896 CompareUnit = HRTIM_COMPAREUNIT_2;
mbed_official 237:f3da66175598 2897 }
mbed_official 237:f3da66175598 2898 break;
mbed_official 237:f3da66175598 2899 }
mbed_official 237:f3da66175598 2900
mbed_official 237:f3da66175598 2901 CompareCfg.CompareValue = pSimpleOnePulseChannelCfg->Pulse;
mbed_official 237:f3da66175598 2902 CompareCfg.AutoDelayedMode = HRTIM_AUTODELAYEDMODE_REGULAR;
mbed_official 237:f3da66175598 2903 CompareCfg.AutoDelayedTimeout = 0;
mbed_official 237:f3da66175598 2904
mbed_official 237:f3da66175598 2905 HRTIM_CompareUnitConfig(hhrtim,
mbed_official 237:f3da66175598 2906 TimerIdx,
mbed_official 237:f3da66175598 2907 CompareUnit,
mbed_official 237:f3da66175598 2908 &CompareCfg);
mbed_official 237:f3da66175598 2909
mbed_official 237:f3da66175598 2910 /* Configure timer output */
mbed_official 237:f3da66175598 2911 OutputCfg.Polarity = pSimpleOnePulseChannelCfg->OutputPolarity;
mbed_official 237:f3da66175598 2912 OutputCfg.IdleLevel = pSimpleOnePulseChannelCfg->OutputIdleLevel;
mbed_official 237:f3da66175598 2913 OutputCfg.FaultLevel = HRTIM_OUTPUTFAULTLEVEL_NONE;
mbed_official 237:f3da66175598 2914 OutputCfg.IdleMode = HRTIM_OUTPUTIDLEMODE_NONE;
mbed_official 237:f3da66175598 2915 OutputCfg.ChopperModeEnable = HRTIM_OUTPUTCHOPPERMODE_DISABLED;
mbed_official 237:f3da66175598 2916 OutputCfg.BurstModeEntryDelayed = HRTIM_OUTPUTBURSTMODEENTRY_REGULAR;
mbed_official 237:f3da66175598 2917
mbed_official 237:f3da66175598 2918 if (CompareUnit == HRTIM_COMPAREUNIT_1)
mbed_official 237:f3da66175598 2919 {
mbed_official 237:f3da66175598 2920 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP1;
mbed_official 237:f3da66175598 2921 }
mbed_official 237:f3da66175598 2922 else
mbed_official 237:f3da66175598 2923 {
mbed_official 237:f3da66175598 2924 OutputCfg.SetSource = HRTIM_OUTPUTSET_TIMCMP2;
mbed_official 237:f3da66175598 2925 }
mbed_official 237:f3da66175598 2926 OutputCfg.ResetSource = HRTIM_OUTPUTSET_TIMPER;
mbed_official 237:f3da66175598 2927
mbed_official 237:f3da66175598 2928 HRTIM_OutputConfig(hhrtim,
mbed_official 237:f3da66175598 2929 TimerIdx,
mbed_official 237:f3da66175598 2930 OnePulseChannel,
mbed_official 237:f3da66175598 2931 &OutputCfg);
mbed_official 237:f3da66175598 2932
mbed_official 237:f3da66175598 2933 /* Configure external event channel */
mbed_official 237:f3da66175598 2934 EventCfg.FastMode = HRTIM_EVENTFASTMODE_DISABLE;
mbed_official 237:f3da66175598 2935 EventCfg.Filter = pSimpleOnePulseChannelCfg->EventFilter;
mbed_official 237:f3da66175598 2936 EventCfg.Polarity = pSimpleOnePulseChannelCfg->EventPolarity;
mbed_official 237:f3da66175598 2937 EventCfg.Sensitivity = pSimpleOnePulseChannelCfg->EventSensitivity;
mbed_official 237:f3da66175598 2938 EventCfg.Source = HRTIM_EVENTSRC_1;
mbed_official 237:f3da66175598 2939
mbed_official 237:f3da66175598 2940 HRTIM_EventConfig(hhrtim,
mbed_official 237:f3da66175598 2941 pSimpleOnePulseChannelCfg->Event,
mbed_official 237:f3da66175598 2942 &EventCfg);
mbed_official 237:f3da66175598 2943
mbed_official 237:f3da66175598 2944 /* Configure the timer reset register */
mbed_official 237:f3da66175598 2945 HRTIM_TIM_ResetConfig(hhrtim,
mbed_official 237:f3da66175598 2946 TimerIdx,
mbed_official 237:f3da66175598 2947 pSimpleOnePulseChannelCfg->Event);
mbed_official 237:f3da66175598 2948
mbed_official 237:f3da66175598 2949 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 2950
mbed_official 237:f3da66175598 2951 /* Process Unlocked */
mbed_official 237:f3da66175598 2952 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 2953
mbed_official 237:f3da66175598 2954 return HAL_OK;
mbed_official 237:f3da66175598 2955 }
mbed_official 237:f3da66175598 2956
mbed_official 237:f3da66175598 2957 /**
mbed_official 237:f3da66175598 2958 * @brief Enables the basic one pulse signal generation on the designed output
mbed_official 237:f3da66175598 2959 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 2960 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 2961 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2962 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 2963 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 2964 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 2965 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 2966 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 2967 * @param OnePulseChannel: Timer output
mbed_official 237:f3da66175598 2968 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 2969 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 2970 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 2971 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 2972 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 2973 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 2974 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 2975 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 2976 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 2977 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 2978 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 2979 * @retval HAL status
mbed_official 237:f3da66175598 2980 */
mbed_official 237:f3da66175598 2981 HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 2982 uint32_t TimerIdx,
mbed_official 237:f3da66175598 2983 uint32_t OnePulseChannel)
mbed_official 237:f3da66175598 2984 {
mbed_official 237:f3da66175598 2985 /* Check the parameters */
mbed_official 237:f3da66175598 2986 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OnePulseChannel));
mbed_official 237:f3da66175598 2987
mbed_official 237:f3da66175598 2988 /* Process Locked */
mbed_official 237:f3da66175598 2989 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 2990
mbed_official 237:f3da66175598 2991 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 2992
mbed_official 237:f3da66175598 2993 /* Enable the timer output */
mbed_official 237:f3da66175598 2994 hhrtim->Instance->sCommonRegs.OENR |= OnePulseChannel;
mbed_official 237:f3da66175598 2995
mbed_official 237:f3da66175598 2996 /* Enable the timer counter */
mbed_official 237:f3da66175598 2997 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 2998
mbed_official 237:f3da66175598 2999 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3000
mbed_official 237:f3da66175598 3001 /* Process Unlocked */
mbed_official 237:f3da66175598 3002 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3003
mbed_official 237:f3da66175598 3004 return HAL_OK;
mbed_official 237:f3da66175598 3005 }
mbed_official 237:f3da66175598 3006
mbed_official 237:f3da66175598 3007 /**
mbed_official 237:f3da66175598 3008 * @brief Disables the basic one pulse signal generation on the designed output
mbed_official 237:f3da66175598 3009 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3010 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3011 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3012 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3013 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3014 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3015 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3016 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3017 * @param OnePulseChannel: Timer output
mbed_official 237:f3da66175598 3018 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3019 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 3020 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 3021 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 3022 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 3023 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 3024 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 3025 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 3026 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 3027 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 3028 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 3029 * @retval HAL status
mbed_official 237:f3da66175598 3030 */
mbed_official 237:f3da66175598 3031 HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3032 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3033 uint32_t OnePulseChannel)
mbed_official 237:f3da66175598 3034 {
mbed_official 237:f3da66175598 3035 /* Check the parameters */
mbed_official 237:f3da66175598 3036 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OnePulseChannel));
mbed_official 237:f3da66175598 3037
mbed_official 237:f3da66175598 3038 /* Process Locked */
mbed_official 237:f3da66175598 3039 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3040
mbed_official 237:f3da66175598 3041 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3042
mbed_official 237:f3da66175598 3043 /* Disable the timer output */
mbed_official 237:f3da66175598 3044 hhrtim->Instance->sCommonRegs.ODISR |= OnePulseChannel;
mbed_official 237:f3da66175598 3045
mbed_official 237:f3da66175598 3046 /* Disable the timer counter */
mbed_official 237:f3da66175598 3047 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 3048
mbed_official 237:f3da66175598 3049 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3050
mbed_official 237:f3da66175598 3051 /* Process Unlocked */
mbed_official 237:f3da66175598 3052 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3053
mbed_official 237:f3da66175598 3054 return HAL_OK;
mbed_official 237:f3da66175598 3055 }
mbed_official 237:f3da66175598 3056
mbed_official 237:f3da66175598 3057 /**
mbed_official 237:f3da66175598 3058 * @brief Enables the basic one pulse signal generation on the designed output
mbed_official 237:f3da66175598 3059 * The compare interrupt is enabled (pulse start)
mbed_official 237:f3da66175598 3060 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3061 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3062 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3063 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3064 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3065 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3066 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3067 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3068 * @param OnePulseChannel: Timer output
mbed_official 237:f3da66175598 3069 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3070 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 3071 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 3072 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 3073 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 3074 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 3075 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 3076 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 3077 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 3078 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 3079 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 3080 * @retval HAL status
mbed_official 237:f3da66175598 3081 */
mbed_official 237:f3da66175598 3082 HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3083 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3084 uint32_t OnePulseChannel)
mbed_official 237:f3da66175598 3085 {
mbed_official 237:f3da66175598 3086 /* Check the parameters */
mbed_official 237:f3da66175598 3087 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OnePulseChannel));
mbed_official 237:f3da66175598 3088
mbed_official 237:f3da66175598 3089 /* Process Locked */
mbed_official 237:f3da66175598 3090 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3091
mbed_official 237:f3da66175598 3092 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3093
mbed_official 237:f3da66175598 3094 /* Enable the timer output */
mbed_official 237:f3da66175598 3095 hhrtim->Instance->sCommonRegs.OENR |= OnePulseChannel;
mbed_official 237:f3da66175598 3096
mbed_official 237:f3da66175598 3097 /* Enable the timer interrupt (depends on the OnePulse output) */
mbed_official 237:f3da66175598 3098 switch (OnePulseChannel)
mbed_official 237:f3da66175598 3099 {
mbed_official 237:f3da66175598 3100 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 3101 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 3102 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 3103 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 3104 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 3105 {
mbed_official 237:f3da66175598 3106 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1);
mbed_official 237:f3da66175598 3107 }
mbed_official 237:f3da66175598 3108 break;
mbed_official 237:f3da66175598 3109 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 3110 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 3111 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 3112 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 3113 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 3114 {
mbed_official 237:f3da66175598 3115 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2);
mbed_official 237:f3da66175598 3116 }
mbed_official 237:f3da66175598 3117 break;
mbed_official 237:f3da66175598 3118 }
mbed_official 237:f3da66175598 3119
mbed_official 237:f3da66175598 3120 /* Enable the timer counter */
mbed_official 237:f3da66175598 3121 __HAL_HRTIM_ENABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 3122
mbed_official 237:f3da66175598 3123 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3124
mbed_official 237:f3da66175598 3125 /* Process Unlocked */
mbed_official 237:f3da66175598 3126 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3127
mbed_official 237:f3da66175598 3128 return HAL_OK;
mbed_official 237:f3da66175598 3129 }
mbed_official 237:f3da66175598 3130
mbed_official 237:f3da66175598 3131 /**
mbed_official 237:f3da66175598 3132 * @brief Disables the basic one pulse signal generation on the designed output
mbed_official 237:f3da66175598 3133 * The compare interrupt is disabled
mbed_official 237:f3da66175598 3134 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3135 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3136 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3137 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3138 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3139 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3140 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3141 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3142 * @param OnePulseChannel: Timer output
mbed_official 237:f3da66175598 3143 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3144 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 3145 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 3146 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 3147 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 3148 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 3149 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 3150 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 3151 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 3152 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 3153 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 3154 * @retval HAL status
mbed_official 237:f3da66175598 3155 */
mbed_official 237:f3da66175598 3156 HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3157 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3158 uint32_t OnePulseChannel)
mbed_official 237:f3da66175598 3159 {
mbed_official 237:f3da66175598 3160 /* Check the parameters */
mbed_official 237:f3da66175598 3161 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, OnePulseChannel));
mbed_official 237:f3da66175598 3162
mbed_official 237:f3da66175598 3163 /* Process Locked */
mbed_official 237:f3da66175598 3164 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3165
mbed_official 237:f3da66175598 3166 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3167
mbed_official 237:f3da66175598 3168 /* Disable the timer output */
mbed_official 237:f3da66175598 3169 hhrtim->Instance->sCommonRegs.ODISR |= OnePulseChannel;
mbed_official 237:f3da66175598 3170
mbed_official 237:f3da66175598 3171 /* Disable the timer interrupt (depends on the OnePulse output) */
mbed_official 237:f3da66175598 3172 switch (OnePulseChannel)
mbed_official 237:f3da66175598 3173 {
mbed_official 237:f3da66175598 3174 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 3175 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 3176 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 3177 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 3178 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 3179 {
mbed_official 237:f3da66175598 3180 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1);
mbed_official 237:f3da66175598 3181 }
mbed_official 237:f3da66175598 3182 break;
mbed_official 237:f3da66175598 3183 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 3184 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 3185 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 3186 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 3187 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 3188 {
mbed_official 237:f3da66175598 3189 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2);
mbed_official 237:f3da66175598 3190 }
mbed_official 237:f3da66175598 3191 break;
mbed_official 237:f3da66175598 3192 }
mbed_official 237:f3da66175598 3193
mbed_official 237:f3da66175598 3194 /* Disable the timer counter */
mbed_official 237:f3da66175598 3195 __HAL_HRTIM_DISABLE(hhrtim, TimerIdxToTimerId[TimerIdx]);
mbed_official 237:f3da66175598 3196
mbed_official 237:f3da66175598 3197 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3198
mbed_official 237:f3da66175598 3199 /* Process Unlocked */
mbed_official 237:f3da66175598 3200 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3201
mbed_official 237:f3da66175598 3202 return HAL_OK;
mbed_official 237:f3da66175598 3203 }
mbed_official 237:f3da66175598 3204
mbed_official 237:f3da66175598 3205 /**
mbed_official 237:f3da66175598 3206 * @}
mbed_official 237:f3da66175598 3207 */
mbed_official 237:f3da66175598 3208
mbed_official 237:f3da66175598 3209 /** @defgroup HAL_HRTIM_Group7 HRTIM configuration functions
mbed_official 237:f3da66175598 3210 * @brief Functions configuring the HRTIM resources shared by all the
mbed_official 237:f3da66175598 3211 * HRTIM timers operating in waveform mode.
mbed_official 237:f3da66175598 3212 *
mbed_official 237:f3da66175598 3213 @verbatim
mbed_official 237:f3da66175598 3214 ===============================================================================
mbed_official 237:f3da66175598 3215 ##### HRTIM configuration functions #####
mbed_official 237:f3da66175598 3216 ===============================================================================
mbed_official 237:f3da66175598 3217 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 3218 (+) Configure the burst mode controller
mbed_official 237:f3da66175598 3219 (+) Configure an external event conditionning
mbed_official 237:f3da66175598 3220 (+) Configure the external events sampling clock
mbed_official 237:f3da66175598 3221 (+) Configure a fault conditionning
mbed_official 237:f3da66175598 3222 (+) Enable or disable fault inputs
mbed_official 237:f3da66175598 3223 (+) Configure the faults sampling clock
mbed_official 237:f3da66175598 3224 (+) Configure an ADC trigger
mbed_official 237:f3da66175598 3225
mbed_official 237:f3da66175598 3226 @endverbatim
mbed_official 237:f3da66175598 3227 * @{
mbed_official 237:f3da66175598 3228 */
mbed_official 237:f3da66175598 3229
mbed_official 237:f3da66175598 3230 /**
mbed_official 237:f3da66175598 3231 * @brief Configures the burst mode feature of the HRTIM
mbed_official 237:f3da66175598 3232 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3233 * @param pBurstModeCfg: pointer to the burst mode configuration structure
mbed_official 237:f3da66175598 3234 * @retval HAL status
mbed_official 237:f3da66175598 3235 * @note This function must be called before starting the burst mode
mbed_official 237:f3da66175598 3236 * controller
mbed_official 237:f3da66175598 3237 */
mbed_official 237:f3da66175598 3238 HAL_StatusTypeDef HAL_HRTIM_BurstModeConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3239 HRTIM_BurstModeCfgTypeDef* pBurstModeCfg)
mbed_official 237:f3da66175598 3240 {
mbed_official 237:f3da66175598 3241 uint32_t hrtim_bmcr;
mbed_official 237:f3da66175598 3242
mbed_official 237:f3da66175598 3243 /* Check parameters */
mbed_official 237:f3da66175598 3244 assert_param(IS_HRTIM_BURSTMODE(pBurstModeCfg->Mode));
mbed_official 237:f3da66175598 3245 assert_param(IS_HRTIM_BURSTMODECLOCKSOURCE(pBurstModeCfg->ClockSource));
mbed_official 237:f3da66175598 3246 assert_param(IS_HRTIM_HRTIM_BURSTMODEPRESCALER(pBurstModeCfg->Prescaler));
mbed_official 237:f3da66175598 3247 assert_param(IS_HRTIM_BURSTMODEPRELOAD(pBurstModeCfg->PreloadEnable));
mbed_official 237:f3da66175598 3248
mbed_official 237:f3da66175598 3249 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3250 {
mbed_official 237:f3da66175598 3251 return HAL_BUSY;
mbed_official 237:f3da66175598 3252 }
mbed_official 237:f3da66175598 3253
mbed_official 237:f3da66175598 3254 /* Process Locked */
mbed_official 237:f3da66175598 3255 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3256
mbed_official 237:f3da66175598 3257 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3258
mbed_official 237:f3da66175598 3259 hrtim_bmcr = hhrtim->Instance->sCommonRegs.BMCR;
mbed_official 237:f3da66175598 3260
mbed_official 237:f3da66175598 3261 /* Set the burst mode operating mode */
mbed_official 237:f3da66175598 3262 hrtim_bmcr &= ~(HRTIM_BMCR_BMOM);
mbed_official 237:f3da66175598 3263 hrtim_bmcr |= pBurstModeCfg->Mode;
mbed_official 237:f3da66175598 3264
mbed_official 237:f3da66175598 3265 /* Set the burst mode clock source */
mbed_official 237:f3da66175598 3266 hrtim_bmcr &= ~(HRTIM_BMCR_BMCLK);
mbed_official 237:f3da66175598 3267 hrtim_bmcr |= pBurstModeCfg->ClockSource;
mbed_official 237:f3da66175598 3268
mbed_official 237:f3da66175598 3269 /* Set the burst mode prescaler */
mbed_official 237:f3da66175598 3270 hrtim_bmcr &= ~(HRTIM_BMCR_BMPRSC);
mbed_official 237:f3da66175598 3271 hrtim_bmcr |= pBurstModeCfg->Prescaler;
mbed_official 237:f3da66175598 3272
mbed_official 237:f3da66175598 3273 /* Enable/disable burst mode registers preload */
mbed_official 237:f3da66175598 3274 hrtim_bmcr &= ~(HRTIM_BMCR_BMPREN);
mbed_official 237:f3da66175598 3275 hrtim_bmcr |= pBurstModeCfg->PreloadEnable;
mbed_official 237:f3da66175598 3276
mbed_official 237:f3da66175598 3277 /* Set the burst mode trigger */
mbed_official 237:f3da66175598 3278 hhrtim->Instance->sCommonRegs.BMTRGR = pBurstModeCfg->Trigger;
mbed_official 237:f3da66175598 3279
mbed_official 237:f3da66175598 3280 /* Set the burst mode compare value */
mbed_official 237:f3da66175598 3281 hhrtim->Instance->sCommonRegs.BMCMPR = pBurstModeCfg->IdleDuration;
mbed_official 237:f3da66175598 3282
mbed_official 237:f3da66175598 3283 /* Set the burst mode period */
mbed_official 237:f3da66175598 3284 hhrtim->Instance->sCommonRegs.BMPER = pBurstModeCfg->Period;
mbed_official 237:f3da66175598 3285
mbed_official 237:f3da66175598 3286 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 3287 hhrtim->Instance->sCommonRegs.BMCR = hrtim_bmcr;
mbed_official 237:f3da66175598 3288
mbed_official 237:f3da66175598 3289 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3290
mbed_official 237:f3da66175598 3291 /* Process Unlocked */
mbed_official 237:f3da66175598 3292 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3293
mbed_official 237:f3da66175598 3294 return HAL_OK;
mbed_official 237:f3da66175598 3295 }
mbed_official 237:f3da66175598 3296
mbed_official 237:f3da66175598 3297 /**
mbed_official 237:f3da66175598 3298 * @brief Configures the conditioning of an external event
mbed_official 237:f3da66175598 3299 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3300 * @param Event: external event to configure
mbed_official 237:f3da66175598 3301 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3302 * @arg HRTIM_EVENT_1: External event 1
mbed_official 237:f3da66175598 3303 * @arg HRTIM_EVENT_2: External event 2
mbed_official 237:f3da66175598 3304 * @arg HRTIM_EVENT_3: External event 3
mbed_official 237:f3da66175598 3305 * @arg HRTIM_EVENT_4: External event 4
mbed_official 237:f3da66175598 3306 * @arg HRTIM_EVENT_5: External event 5
mbed_official 237:f3da66175598 3307 * @arg HRTIM_EVENT_6: External event 6
mbed_official 237:f3da66175598 3308 * @arg HRTIM_EVENT_7: External event 7
mbed_official 237:f3da66175598 3309 * @arg HRTIM_EVENT_8: External event 8
mbed_official 237:f3da66175598 3310 * @arg HRTIM_EVENT_9: External event 9
mbed_official 237:f3da66175598 3311 * @arg HRTIM_EVENT_10: External event 10
mbed_official 237:f3da66175598 3312 * @param pEventCfg: pointer to the event conditioning configuration structure
mbed_official 237:f3da66175598 3313 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3314 * @retval HAL status
mbed_official 237:f3da66175598 3315 */
mbed_official 237:f3da66175598 3316 HAL_StatusTypeDef HAL_HRTIM_EventConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3317 uint32_t Event,
mbed_official 237:f3da66175598 3318 HRTIM_EventCfgTypeDef* pEventCfg)
mbed_official 237:f3da66175598 3319 {
mbed_official 237:f3da66175598 3320 /* Check parameters */
mbed_official 237:f3da66175598 3321 assert_param(IS_HRTIM_EVENTSRC(pEventCfg->Source));
mbed_official 237:f3da66175598 3322 assert_param(IS_HRTIM_EVENTPOLARITY(pEventCfg->Sensitivity, pEventCfg->Polarity));
mbed_official 237:f3da66175598 3323 assert_param(IS_HRTIM_EVENTSENSITIVITY(pEventCfg->Sensitivity));
mbed_official 237:f3da66175598 3324 assert_param(IS_HRTIM_EVENTFASTMODE(Event, pEventCfg->FastMode));
mbed_official 237:f3da66175598 3325 assert_param(IS_HRTIM_EVENTFILTER(Event, pEventCfg->Filter));
mbed_official 237:f3da66175598 3326
mbed_official 237:f3da66175598 3327 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3328 {
mbed_official 237:f3da66175598 3329 return HAL_BUSY;
mbed_official 237:f3da66175598 3330 }
mbed_official 237:f3da66175598 3331
mbed_official 237:f3da66175598 3332 /* Process Locked */
mbed_official 237:f3da66175598 3333 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3334
mbed_official 237:f3da66175598 3335 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3336
mbed_official 237:f3da66175598 3337 /* Configure the event channel */
mbed_official 237:f3da66175598 3338 HRTIM_EventConfig(hhrtim, Event, pEventCfg);
mbed_official 237:f3da66175598 3339
mbed_official 237:f3da66175598 3340 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3341
mbed_official 237:f3da66175598 3342 /* Process Unlocked */
mbed_official 237:f3da66175598 3343 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3344
mbed_official 237:f3da66175598 3345 return HAL_OK;
mbed_official 237:f3da66175598 3346 }
mbed_official 237:f3da66175598 3347
mbed_official 237:f3da66175598 3348 /**
mbed_official 237:f3da66175598 3349 * @brief Configures the external event conditioning block prescaler
mbed_official 237:f3da66175598 3350 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3351 * @param Prescaler: Prescaler value
mbed_official 237:f3da66175598 3352 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3353 * @arg HRTIM_EVENTPRESCALER_DIV1: fEEVS=fHRTIM
mbed_official 237:f3da66175598 3354 * @arg HRTIM_EVENTPRESCALER_DIV2: fEEVS=fHRTIM / 2
mbed_official 237:f3da66175598 3355 * @arg HRTIM_EVENTPRESCALER_DIV4: fEEVS=fHRTIM / 4
mbed_official 237:f3da66175598 3356 * @arg HRTIM_EVENTPRESCALER_DIV8: fEEVS=fHRTIM / 8
mbed_official 237:f3da66175598 3357 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3358 * @retval HAL status
mbed_official 237:f3da66175598 3359 */
mbed_official 237:f3da66175598 3360 HAL_StatusTypeDef HAL_HRTIM_EventPrescalerConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3361 uint32_t Prescaler)
mbed_official 237:f3da66175598 3362 {
mbed_official 237:f3da66175598 3363 uint32_t hrtim_eecr3;
mbed_official 237:f3da66175598 3364
mbed_official 237:f3da66175598 3365 /* Check parameters */
mbed_official 237:f3da66175598 3366 assert_param(IS_HRTIM_EVENTPRESCALER(Prescaler));
mbed_official 237:f3da66175598 3367
mbed_official 237:f3da66175598 3368 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3369 {
mbed_official 237:f3da66175598 3370 return HAL_BUSY;
mbed_official 237:f3da66175598 3371 }
mbed_official 237:f3da66175598 3372
mbed_official 237:f3da66175598 3373 /* Process Locked */
mbed_official 237:f3da66175598 3374 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3375
mbed_official 237:f3da66175598 3376 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3377
mbed_official 237:f3da66175598 3378 /* Set the external event prescaler */
mbed_official 237:f3da66175598 3379 hrtim_eecr3 = hhrtim->Instance->sCommonRegs.EECR3;
mbed_official 237:f3da66175598 3380 hrtim_eecr3 &= ~(HRTIM_EECR3_EEVSD);
mbed_official 237:f3da66175598 3381 hrtim_eecr3 |= Prescaler;
mbed_official 237:f3da66175598 3382
mbed_official 237:f3da66175598 3383 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 3384 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 3385
mbed_official 237:f3da66175598 3386 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3387
mbed_official 237:f3da66175598 3388 /* Process Unlocked */
mbed_official 237:f3da66175598 3389 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3390
mbed_official 237:f3da66175598 3391 return HAL_OK;
mbed_official 237:f3da66175598 3392 }
mbed_official 237:f3da66175598 3393
mbed_official 237:f3da66175598 3394 /**
mbed_official 237:f3da66175598 3395 * @brief Configures the conditioning of fault input
mbed_official 237:f3da66175598 3396 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3397 * @param Fault: fault input to configure
mbed_official 237:f3da66175598 3398 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3399 * @arg HRTIM_FAULT_1: Fault input 1
mbed_official 237:f3da66175598 3400 * @arg HRTIM_FAULT_2: Fault input 2
mbed_official 237:f3da66175598 3401 * @arg HRTIM_FAULT_3: Fault input 3
mbed_official 237:f3da66175598 3402 * @arg HRTIM_FAULT_4: Fault input 4
mbed_official 237:f3da66175598 3403 * @arg HRTIM_FAULT_5: Fault input 5
mbed_official 237:f3da66175598 3404 * @param pFaultCfg: pointer to the fault conditioning configuration structure
mbed_official 237:f3da66175598 3405 * @note This function must be called before starting the timer and before
mbed_official 237:f3da66175598 3406 * enabling faults inputs
mbed_official 237:f3da66175598 3407 * @retval HAL status
mbed_official 237:f3da66175598 3408 */
mbed_official 237:f3da66175598 3409 HAL_StatusTypeDef HAL_HRTIM_FaultConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3410 uint32_t Fault,
mbed_official 237:f3da66175598 3411 HRTIM_FaultCfgTypeDef* pFaultCfg)
mbed_official 237:f3da66175598 3412 {
mbed_official 237:f3da66175598 3413 uint32_t hrtim_fltinr1;
mbed_official 237:f3da66175598 3414 uint32_t hrtim_fltinr2;
mbed_official 237:f3da66175598 3415
mbed_official 237:f3da66175598 3416 /* Check parameters */
mbed_official 237:f3da66175598 3417 assert_param(IS_HRTIM_FAULT(Fault));
mbed_official 237:f3da66175598 3418 assert_param(IS_HRTIM_FAULTSOURCE(pFaultCfg->Source));
mbed_official 237:f3da66175598 3419 assert_param(IS_HRTIM_FAULTPOLARITY(pFaultCfg->Polarity));
mbed_official 237:f3da66175598 3420 assert_param(IS_HRTIM_FAULTFILTER(pFaultCfg->Filter));
mbed_official 237:f3da66175598 3421 assert_param(IS_HRTIM_FAULTLOCK(pFaultCfg->Lock));
mbed_official 237:f3da66175598 3422
mbed_official 237:f3da66175598 3423 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3424 {
mbed_official 237:f3da66175598 3425 return HAL_BUSY;
mbed_official 237:f3da66175598 3426 }
mbed_official 237:f3da66175598 3427
mbed_official 237:f3da66175598 3428 /* Process Locked */
mbed_official 237:f3da66175598 3429 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3430
mbed_official 237:f3da66175598 3431 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3432
mbed_official 237:f3da66175598 3433 /* Configure fault channel */
mbed_official 237:f3da66175598 3434 hrtim_fltinr1 = hhrtim->Instance->sCommonRegs.FLTINR1;
mbed_official 237:f3da66175598 3435 hrtim_fltinr2 = hhrtim->Instance->sCommonRegs.FLTINR2;
mbed_official 237:f3da66175598 3436
mbed_official 237:f3da66175598 3437 switch (Fault)
mbed_official 237:f3da66175598 3438 {
mbed_official 237:f3da66175598 3439 case HRTIM_FAULT_1:
mbed_official 237:f3da66175598 3440 {
mbed_official 237:f3da66175598 3441 hrtim_fltinr1 &= ~(HRTIM_FLTINR1_FLT1P | HRTIM_FLTINR1_FLT1SRC | HRTIM_FLTINR1_FLT1F | HRTIM_FLTINR1_FLT1LCK);
mbed_official 237:f3da66175598 3442 hrtim_fltinr1 |= pFaultCfg->Polarity;
mbed_official 237:f3da66175598 3443 hrtim_fltinr1 |= pFaultCfg->Source;
mbed_official 237:f3da66175598 3444 hrtim_fltinr1 |= pFaultCfg->Filter;
mbed_official 237:f3da66175598 3445 hrtim_fltinr1 |= pFaultCfg->Lock;
mbed_official 237:f3da66175598 3446 }
mbed_official 237:f3da66175598 3447 break;
mbed_official 237:f3da66175598 3448 case HRTIM_FAULT_2:
mbed_official 237:f3da66175598 3449 {
mbed_official 237:f3da66175598 3450 hrtim_fltinr1 &= ~(HRTIM_FLTINR1_FLT2P | HRTIM_FLTINR1_FLT2SRC | HRTIM_FLTINR1_FLT2F | HRTIM_FLTINR1_FLT2LCK);
mbed_official 237:f3da66175598 3451 hrtim_fltinr1 |= (pFaultCfg->Polarity << 8);
mbed_official 237:f3da66175598 3452 hrtim_fltinr1 |= (pFaultCfg->Source << 8);
mbed_official 237:f3da66175598 3453 hrtim_fltinr1 |= (pFaultCfg->Filter << 8);
mbed_official 237:f3da66175598 3454 hrtim_fltinr1 |= (pFaultCfg->Lock << 8);
mbed_official 237:f3da66175598 3455 }
mbed_official 237:f3da66175598 3456 break;
mbed_official 237:f3da66175598 3457 case HRTIM_FAULT_3:
mbed_official 237:f3da66175598 3458 {
mbed_official 237:f3da66175598 3459 hrtim_fltinr1 &= ~(HRTIM_FLTINR1_FLT3P | HRTIM_FLTINR1_FLT3SRC | HRTIM_FLTINR1_FLT3F | HRTIM_FLTINR1_FLT3LCK);
mbed_official 237:f3da66175598 3460 hrtim_fltinr1 |= (pFaultCfg->Polarity << 16);
mbed_official 237:f3da66175598 3461 hrtim_fltinr1 |= (pFaultCfg->Source << 16);
mbed_official 237:f3da66175598 3462 hrtim_fltinr1 |= (pFaultCfg->Filter << 16);
mbed_official 237:f3da66175598 3463 hrtim_fltinr1 |= (pFaultCfg->Lock << 16);
mbed_official 237:f3da66175598 3464 }
mbed_official 237:f3da66175598 3465 break;
mbed_official 237:f3da66175598 3466 case HRTIM_FAULT_4:
mbed_official 237:f3da66175598 3467 {
mbed_official 237:f3da66175598 3468 hrtim_fltinr1 &= ~(HRTIM_FLTINR1_FLT4P | HRTIM_FLTINR1_FLT4SRC | HRTIM_FLTINR1_FLT4F | HRTIM_FLTINR1_FLT4LCK);
mbed_official 237:f3da66175598 3469 hrtim_fltinr1 |= (pFaultCfg->Polarity << 24);
mbed_official 237:f3da66175598 3470 hrtim_fltinr1 |= (pFaultCfg->Source << 24);
mbed_official 237:f3da66175598 3471 hrtim_fltinr1 |= (pFaultCfg->Filter << 24);
mbed_official 237:f3da66175598 3472 hrtim_fltinr1 |= (pFaultCfg->Lock << 24);
mbed_official 237:f3da66175598 3473 }
mbed_official 237:f3da66175598 3474 break;
mbed_official 237:f3da66175598 3475 case HRTIM_FAULT_5:
mbed_official 237:f3da66175598 3476 {
mbed_official 237:f3da66175598 3477 hrtim_fltinr2 &= ~(HRTIM_FLTINR2_FLT5P | HRTIM_FLTINR2_FLT5SRC | HRTIM_FLTINR2_FLT5F | HRTIM_FLTINR2_FLT5LCK);
mbed_official 237:f3da66175598 3478 hrtim_fltinr2 |= pFaultCfg->Polarity;
mbed_official 237:f3da66175598 3479 hrtim_fltinr2 |= pFaultCfg->Source;
mbed_official 237:f3da66175598 3480 hrtim_fltinr2 |= pFaultCfg->Filter;
mbed_official 237:f3da66175598 3481 hrtim_fltinr2 |= pFaultCfg->Lock;
mbed_official 237:f3da66175598 3482 }
mbed_official 237:f3da66175598 3483 break;
mbed_official 237:f3da66175598 3484 default:
mbed_official 237:f3da66175598 3485 break;
mbed_official 237:f3da66175598 3486 }
mbed_official 237:f3da66175598 3487
mbed_official 237:f3da66175598 3488 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 3489 hhrtim->Instance->sCommonRegs.FLTINR1 = hrtim_fltinr1;
mbed_official 237:f3da66175598 3490 hhrtim->Instance->sCommonRegs.FLTINR2 = hrtim_fltinr2;
mbed_official 237:f3da66175598 3491
mbed_official 237:f3da66175598 3492 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3493
mbed_official 237:f3da66175598 3494 /* Process Unlocked */
mbed_official 237:f3da66175598 3495 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3496
mbed_official 237:f3da66175598 3497 return HAL_OK;
mbed_official 237:f3da66175598 3498 }
mbed_official 237:f3da66175598 3499
mbed_official 237:f3da66175598 3500 /**
mbed_official 237:f3da66175598 3501 * @brief Configures the fault conditioning block prescaler
mbed_official 237:f3da66175598 3502 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3503 * @param Prescaler: Prescaler value
mbed_official 237:f3da66175598 3504 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3505 * @arg HRTIM_FAULTPRESCALER_DIV1: fFLTS=fHRTIM
mbed_official 237:f3da66175598 3506 * @arg HRTIM_FAULTPRESCALER_DIV2: fFLTS=fHRTIM / 2
mbed_official 237:f3da66175598 3507 * @arg HRTIM_FAULTPRESCALER_DIV4: fFLTS=fHRTIM / 4
mbed_official 237:f3da66175598 3508 * @arg HRTIM_FAULTPRESCALER_DIV8: fFLTS=fHRTIM / 8
mbed_official 237:f3da66175598 3509 * @retval HAL status
mbed_official 237:f3da66175598 3510 * @note This function must be called before starting the timer and before
mbed_official 237:f3da66175598 3511 * enabling faults inputs
mbed_official 237:f3da66175598 3512 */
mbed_official 237:f3da66175598 3513 HAL_StatusTypeDef HAL_HRTIM_FaultPrescalerConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3514 uint32_t Prescaler)
mbed_official 237:f3da66175598 3515 {
mbed_official 237:f3da66175598 3516 uint32_t hrtim_fltinr2;
mbed_official 237:f3da66175598 3517
mbed_official 237:f3da66175598 3518 /* Check parameters */
mbed_official 237:f3da66175598 3519 assert_param(IS_HRTIM_FAULTPRESCALER(Prescaler));
mbed_official 237:f3da66175598 3520
mbed_official 237:f3da66175598 3521 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3522 {
mbed_official 237:f3da66175598 3523 return HAL_BUSY;
mbed_official 237:f3da66175598 3524 }
mbed_official 237:f3da66175598 3525
mbed_official 237:f3da66175598 3526 /* Process Locked */
mbed_official 237:f3da66175598 3527 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3528
mbed_official 237:f3da66175598 3529 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3530
mbed_official 237:f3da66175598 3531 /* Set the external event prescaler */
mbed_official 237:f3da66175598 3532 hrtim_fltinr2 = hhrtim->Instance->sCommonRegs.FLTINR2;
mbed_official 237:f3da66175598 3533 hrtim_fltinr2 &= ~(HRTIM_FLTINR2_FLTSD);
mbed_official 237:f3da66175598 3534 hrtim_fltinr2 |= Prescaler;
mbed_official 237:f3da66175598 3535
mbed_official 237:f3da66175598 3536 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 3537 hhrtim->Instance->sCommonRegs.FLTINR2 = hrtim_fltinr2;
mbed_official 237:f3da66175598 3538
mbed_official 237:f3da66175598 3539 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3540
mbed_official 237:f3da66175598 3541 /* Process Unlocked */
mbed_official 237:f3da66175598 3542 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3543
mbed_official 237:f3da66175598 3544 return HAL_OK;
mbed_official 237:f3da66175598 3545 }
mbed_official 237:f3da66175598 3546
mbed_official 237:f3da66175598 3547 /**
mbed_official 237:f3da66175598 3548 * @brief Enables or disables the HRTIMx Fault mode.
mbed_official 237:f3da66175598 3549 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3550 * @param Faults: fault input(s) to enable or disable
mbed_official 237:f3da66175598 3551 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 3552 * @arg HRTIM_FAULT_1: Fault input 1
mbed_official 237:f3da66175598 3553 * @arg HRTIM_FAULT_2: Fault input 2
mbed_official 237:f3da66175598 3554 * @arg HRTIM_FAULT_3: Fault input 3
mbed_official 237:f3da66175598 3555 * @arg HRTIM_FAULT_4: Fault input 4
mbed_official 237:f3da66175598 3556 * @arg HRTIM_FAULT_5: Fault input 5
mbed_official 237:f3da66175598 3557 * @param Enable: Fault(s) enabling
mbed_official 237:f3da66175598 3558 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3559 * @arg HRTIM_FAULTMODECTL_ENABLED: Fault(s) enabled
mbed_official 237:f3da66175598 3560 * @arg HRTIM_FAULTMODECTL_DISABLED: Fault(s) disabled
mbed_official 237:f3da66175598 3561 * @retval None
mbed_official 237:f3da66175598 3562 */
mbed_official 237:f3da66175598 3563 void HAL_HRTIM_FaultModeCtl(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3564 uint32_t Faults,
mbed_official 237:f3da66175598 3565 uint32_t Enable)
mbed_official 237:f3da66175598 3566 {
mbed_official 237:f3da66175598 3567 uint32_t hrtim_fltinr1;
mbed_official 237:f3da66175598 3568 uint32_t hrtim_fltinr2;
mbed_official 237:f3da66175598 3569
mbed_official 237:f3da66175598 3570 /* Check parameters */
mbed_official 237:f3da66175598 3571 assert_param(IS_HRTIM_FAULT(Faults));
mbed_official 237:f3da66175598 3572 assert_param(IS_HRTIM_FAULTMODECTL(Enable));
mbed_official 237:f3da66175598 3573
mbed_official 237:f3da66175598 3574 /* Configure fault channel */
mbed_official 237:f3da66175598 3575 hrtim_fltinr1 = hhrtim->Instance->sCommonRegs.FLTINR1;
mbed_official 237:f3da66175598 3576 hrtim_fltinr2 = hhrtim->Instance->sCommonRegs.FLTINR2;
mbed_official 237:f3da66175598 3577
mbed_official 237:f3da66175598 3578 if ((Faults & HRTIM_FAULT_1) != RESET)
mbed_official 237:f3da66175598 3579 {
mbed_official 237:f3da66175598 3580 hrtim_fltinr1 &= ~HRTIM_FLTINR1_FLT1E;
mbed_official 237:f3da66175598 3581 hrtim_fltinr1 |= Enable;
mbed_official 237:f3da66175598 3582 }
mbed_official 237:f3da66175598 3583 if ((Faults & HRTIM_FAULT_2) != RESET)
mbed_official 237:f3da66175598 3584 {
mbed_official 237:f3da66175598 3585 hrtim_fltinr1 &= ~HRTIM_FLTINR1_FLT2E;
mbed_official 237:f3da66175598 3586 hrtim_fltinr1 |= (Enable << 8);
mbed_official 237:f3da66175598 3587 }
mbed_official 237:f3da66175598 3588 if ((Faults & HRTIM_FAULT_3) != RESET)
mbed_official 237:f3da66175598 3589 {
mbed_official 237:f3da66175598 3590 hrtim_fltinr1 &= ~HRTIM_FLTINR1_FLT3E;
mbed_official 237:f3da66175598 3591 hrtim_fltinr1 |= (Enable << 16);
mbed_official 237:f3da66175598 3592 }
mbed_official 237:f3da66175598 3593 if ((Faults & HRTIM_FAULT_4) != RESET)
mbed_official 237:f3da66175598 3594 {
mbed_official 237:f3da66175598 3595 hrtim_fltinr1 &= ~HRTIM_FLTINR1_FLT4E;
mbed_official 237:f3da66175598 3596 hrtim_fltinr1 |= (Enable << 24);
mbed_official 237:f3da66175598 3597 }
mbed_official 237:f3da66175598 3598 if ((Faults & HRTIM_FAULT_5) != RESET)
mbed_official 237:f3da66175598 3599 {
mbed_official 237:f3da66175598 3600 hrtim_fltinr2 &= ~HRTIM_FLTINR2_FLT5E;
mbed_official 237:f3da66175598 3601 hrtim_fltinr2 |= Enable;
mbed_official 237:f3da66175598 3602 }
mbed_official 237:f3da66175598 3603
mbed_official 237:f3da66175598 3604 /* Update the HRTIMx registers */
mbed_official 237:f3da66175598 3605 hhrtim->Instance->sCommonRegs.FLTINR1 = hrtim_fltinr1;
mbed_official 237:f3da66175598 3606 hhrtim->Instance->sCommonRegs.FLTINR2 = hrtim_fltinr2;
mbed_official 237:f3da66175598 3607 }
mbed_official 237:f3da66175598 3608
mbed_official 237:f3da66175598 3609 /**
mbed_official 237:f3da66175598 3610 * @brief Configures both the ADC trigger register update source and the ADC
mbed_official 237:f3da66175598 3611 * trigger source.
mbed_official 237:f3da66175598 3612 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3613 * @param ADCTrigger: ADC trigger to configure
mbed_official 237:f3da66175598 3614 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3615 * @arg HRTIM_ADCTRIGGER_1: ADC trigger 1
mbed_official 237:f3da66175598 3616 * @arg HRTIM_ADCTRIGGER_2: ADC trigger 2
mbed_official 237:f3da66175598 3617 * @arg HRTIM_ADCTRIGGER_3: ADC trigger 3
mbed_official 237:f3da66175598 3618 * @arg HRTIM_ADCTRIGGER_4: ADC trigger 4
mbed_official 237:f3da66175598 3619 * @param pADCTriggerCfg: pointer to the ADC trigger configuration structure
mbed_official 237:f3da66175598 3620 * @retval HAL status
mbed_official 237:f3da66175598 3621 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3622 */
mbed_official 237:f3da66175598 3623 HAL_StatusTypeDef HAL_HRTIM_ADCTriggerConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3624 uint32_t ADCTrigger,
mbed_official 237:f3da66175598 3625 HRTIM_ADCTriggerCfgTypeDef* pADCTriggerCfg)
mbed_official 237:f3da66175598 3626 {
mbed_official 237:f3da66175598 3627 uint32_t hrtim_cr1;
mbed_official 237:f3da66175598 3628
mbed_official 237:f3da66175598 3629 /* Check parameters */
mbed_official 237:f3da66175598 3630 assert_param(IS_HRTIM_ADCTRIGGER(ADCTrigger));
mbed_official 237:f3da66175598 3631 assert_param(IS_HRTIM_ADCTRIGGERUPDATE(pADCTriggerCfg->UpdateSource));
mbed_official 237:f3da66175598 3632
mbed_official 237:f3da66175598 3633 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3634 {
mbed_official 237:f3da66175598 3635 return HAL_BUSY;
mbed_official 237:f3da66175598 3636 }
mbed_official 237:f3da66175598 3637
mbed_official 237:f3da66175598 3638 /* Process Locked */
mbed_official 237:f3da66175598 3639 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3640
mbed_official 237:f3da66175598 3641 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3642
mbed_official 237:f3da66175598 3643 /* Set the ADC trigger update source */
mbed_official 237:f3da66175598 3644 hrtim_cr1 = hhrtim->Instance->sCommonRegs.CR1;
mbed_official 237:f3da66175598 3645
mbed_official 237:f3da66175598 3646 switch (ADCTrigger)
mbed_official 237:f3da66175598 3647 {
mbed_official 237:f3da66175598 3648 case HRTIM_ADCTRIGGER_1:
mbed_official 237:f3da66175598 3649 {
mbed_official 237:f3da66175598 3650 hrtim_cr1 &= ~(HRTIM_CR1_ADC1USRC);
mbed_official 237:f3da66175598 3651 hrtim_cr1 |= (pADCTriggerCfg->UpdateSource & HRTIM_CR1_ADC1USRC);
mbed_official 237:f3da66175598 3652
mbed_official 237:f3da66175598 3653 /* Set the ADC trigger 1 source */
mbed_official 237:f3da66175598 3654 hhrtim->Instance->sCommonRegs.ADC1R = pADCTriggerCfg->Trigger;
mbed_official 237:f3da66175598 3655 }
mbed_official 237:f3da66175598 3656 break;
mbed_official 237:f3da66175598 3657 case HRTIM_ADCTRIGGER_2:
mbed_official 237:f3da66175598 3658 {
mbed_official 237:f3da66175598 3659 hrtim_cr1 &= ~(HRTIM_CR1_ADC2USRC);
mbed_official 237:f3da66175598 3660 hrtim_cr1 |= ((pADCTriggerCfg->UpdateSource << 3) & HRTIM_CR1_ADC2USRC);
mbed_official 237:f3da66175598 3661
mbed_official 237:f3da66175598 3662 /* Set the ADC trigger 2 source */
mbed_official 237:f3da66175598 3663 hhrtim->Instance->sCommonRegs.ADC2R = pADCTriggerCfg->Trigger;
mbed_official 237:f3da66175598 3664 }
mbed_official 237:f3da66175598 3665 break;
mbed_official 237:f3da66175598 3666 case HRTIM_ADCTRIGGER_3:
mbed_official 237:f3da66175598 3667 {
mbed_official 237:f3da66175598 3668 hrtim_cr1 &= ~(HRTIM_CR1_ADC3USRC);
mbed_official 237:f3da66175598 3669 hrtim_cr1 |= ((pADCTriggerCfg->UpdateSource << 6) & HRTIM_CR1_ADC3USRC);
mbed_official 237:f3da66175598 3670
mbed_official 237:f3da66175598 3671 /* Set the ADC trigger 3 source */
mbed_official 237:f3da66175598 3672 hhrtim->Instance->sCommonRegs.ADC3R = pADCTriggerCfg->Trigger;
mbed_official 237:f3da66175598 3673 }
mbed_official 237:f3da66175598 3674 break;
mbed_official 237:f3da66175598 3675 case HRTIM_ADCTRIGGER_4:
mbed_official 237:f3da66175598 3676 {
mbed_official 237:f3da66175598 3677 hrtim_cr1 &= ~(HRTIM_CR1_ADC4USRC);
mbed_official 237:f3da66175598 3678 hrtim_cr1 |= ((pADCTriggerCfg->UpdateSource << 9) & HRTIM_CR1_ADC4USRC);
mbed_official 237:f3da66175598 3679
mbed_official 237:f3da66175598 3680 /* Set the ADC trigger 4 source */
mbed_official 237:f3da66175598 3681 hhrtim->Instance->sCommonRegs.ADC4R = pADCTriggerCfg->Trigger;
mbed_official 237:f3da66175598 3682 }
mbed_official 237:f3da66175598 3683 break;
mbed_official 237:f3da66175598 3684 }
mbed_official 237:f3da66175598 3685
mbed_official 237:f3da66175598 3686 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 3687 hhrtim->Instance->sCommonRegs.CR1 = hrtim_cr1;
mbed_official 237:f3da66175598 3688
mbed_official 237:f3da66175598 3689 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3690
mbed_official 237:f3da66175598 3691 /* Process Unlocked */
mbed_official 237:f3da66175598 3692 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3693
mbed_official 237:f3da66175598 3694 return HAL_OK;
mbed_official 237:f3da66175598 3695 }
mbed_official 237:f3da66175598 3696
mbed_official 237:f3da66175598 3697 /**
mbed_official 237:f3da66175598 3698 * @}
mbed_official 237:f3da66175598 3699 */
mbed_official 237:f3da66175598 3700
mbed_official 237:f3da66175598 3701 /** @defgroup HAL_HRTIM_Group8 HRTIM timer configuration and functions
mbed_official 237:f3da66175598 3702 * @brief Functions used to configure and control a HRTIM timer
mbed_official 237:f3da66175598 3703 * operating in waveform mode.
mbed_official 237:f3da66175598 3704 *
mbed_official 237:f3da66175598 3705 @verbatim
mbed_official 237:f3da66175598 3706 ===============================================================================
mbed_official 237:f3da66175598 3707 ##### HRTIM timer configuration and control functions #####
mbed_official 237:f3da66175598 3708 ===============================================================================
mbed_official 237:f3da66175598 3709 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 3710 (+) Configure HRTIM timer general behavior
mbed_official 237:f3da66175598 3711 (+) Configure HRTIM timer event filtering
mbed_official 237:f3da66175598 3712 (+) Configure HRTIM timer deadtime insertion
mbed_official 237:f3da66175598 3713 (+) Configure HRTIM timer chopper mode
mbed_official 237:f3da66175598 3714 (+) Configure HRTIM timer burst DMA
mbed_official 237:f3da66175598 3715 (+) Configure HRTIM timer compare unit
mbed_official 237:f3da66175598 3716 (+) Configure HRTIM timer capture unit
mbed_official 237:f3da66175598 3717 (+) Configure HRTIM timer output
mbed_official 237:f3da66175598 3718 (+) Set HRTIM timer output level
mbed_official 237:f3da66175598 3719 (+) Enable HRTIM timer output
mbed_official 237:f3da66175598 3720 (+) Disable HRTIM timer output
mbed_official 237:f3da66175598 3721 (+) Start HRTIM timer
mbed_official 237:f3da66175598 3722 (+) Stop HRTIM timer
mbed_official 237:f3da66175598 3723 (+) Start HRTIM timer and enable interrupt
mbed_official 237:f3da66175598 3724 (+) Stop HRTIM timer and disable interrupt
mbed_official 237:f3da66175598 3725 (+) Start HRTIM timer and enable DMA transfer
mbed_official 237:f3da66175598 3726 (+) Stop HRTIM timer and disable DMA transfer
mbed_official 237:f3da66175598 3727 (+) Enable or disable the burst mode controller
mbed_official 237:f3da66175598 3728 (+) Start the burst mode controller (by software)
mbed_official 237:f3da66175598 3729 (+) Trigger a Capture (by software)
mbed_official 237:f3da66175598 3730 (+) Update the HRTIM timer preloadable registers (by software)
mbed_official 237:f3da66175598 3731 (+) Reset the HRTIM timer counter (by software)
mbed_official 237:f3da66175598 3732 (+) Start a burst DMA transfer
mbed_official 237:f3da66175598 3733 (+) Enable timer register update
mbed_official 237:f3da66175598 3734 (+) Disable timer register update
mbed_official 237:f3da66175598 3735
mbed_official 237:f3da66175598 3736 @endverbatim
mbed_official 237:f3da66175598 3737 * @{
mbed_official 237:f3da66175598 3738 */
mbed_official 237:f3da66175598 3739
mbed_official 237:f3da66175598 3740 /**
mbed_official 237:f3da66175598 3741 * @brief Configures the general behavior of a timer operating in waveform mode
mbed_official 237:f3da66175598 3742 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3743 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3744 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3745 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 3746 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3747 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3748 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3749 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3750 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3751 * @param pTimerCfg: pointer to the timer configuration structure
mbed_official 237:f3da66175598 3752 * @note When the timer operates in waveform mode, all the features supported by
mbed_official 237:f3da66175598 3753 * the HRTIM are available without any limitation.
mbed_official 237:f3da66175598 3754 * @retval HAL status
mbed_official 237:f3da66175598 3755 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3756 */
mbed_official 237:f3da66175598 3757 HAL_StatusTypeDef HAL_HRTIM_WaveformTimerConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3758 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3759 HRTIM_TimerCfgTypeDef * pTimerCfg)
mbed_official 237:f3da66175598 3760 {
mbed_official 237:f3da66175598 3761 /* Check parameters */
mbed_official 237:f3da66175598 3762 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 3763
mbed_official 237:f3da66175598 3764 /* Relevant for all HRTIM timers, including the master */
mbed_official 237:f3da66175598 3765 assert_param(IS_HRTIM_HALFMODE(pTimerCfg->HalfModeEnable));
mbed_official 237:f3da66175598 3766 assert_param(IS_HRTIM_SYNCSTART(pTimerCfg->StartOnSync));
mbed_official 237:f3da66175598 3767 assert_param(IS_HRTIM_SYNCRESET(pTimerCfg->ResetOnSync));
mbed_official 237:f3da66175598 3768 assert_param(IS_HHRTIM_DACSYNC(pTimerCfg->DACSynchro));
mbed_official 237:f3da66175598 3769 assert_param(IS_HRTIM_PRELOAD(pTimerCfg->PreloadEnable));
mbed_official 237:f3da66175598 3770 assert_param(IS_HRTIM_TIMERBURSTMODE(pTimerCfg->BurstMode));
mbed_official 237:f3da66175598 3771 assert_param(IS_HRTIM_UPDATEONREPETITION(pTimerCfg->RepetitionUpdate));
mbed_official 237:f3da66175598 3772
mbed_official 237:f3da66175598 3773 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3774 {
mbed_official 237:f3da66175598 3775 return HAL_BUSY;
mbed_official 237:f3da66175598 3776 }
mbed_official 237:f3da66175598 3777
mbed_official 237:f3da66175598 3778 /* Process Locked */
mbed_official 237:f3da66175598 3779 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3780
mbed_official 237:f3da66175598 3781 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3782
mbed_official 237:f3da66175598 3783 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 3784 {
mbed_official 237:f3da66175598 3785 /* Check parameters */
mbed_official 237:f3da66175598 3786 assert_param(IS_HRTIM_UPDATEGATING_MASTER(pTimerCfg->UpdateGating));
mbed_official 237:f3da66175598 3787 assert_param(IS_HRTIM_MASTER_IT(pTimerCfg->InterruptRequests));
mbed_official 237:f3da66175598 3788 assert_param(IS_HRTIM_MASTER_DMA(pTimerCfg->DMARequests));
mbed_official 237:f3da66175598 3789
mbed_official 237:f3da66175598 3790 /* Configure master timer */
mbed_official 237:f3da66175598 3791 HRTIM_MasterWaveform_Config(hhrtim, pTimerCfg);
mbed_official 237:f3da66175598 3792 }
mbed_official 237:f3da66175598 3793 else
mbed_official 237:f3da66175598 3794 {
mbed_official 237:f3da66175598 3795 /* Check parameters */
mbed_official 237:f3da66175598 3796 assert_param(IS_HRTIM_UPDATEGATING_TIM(pTimerCfg->UpdateGating));
mbed_official 237:f3da66175598 3797 assert_param(IS_HRTIM_TIM_IT(pTimerCfg->InterruptRequests));
mbed_official 237:f3da66175598 3798 assert_param(IS_HRTIM_TIM_DMA(pTimerCfg->DMARequests));
mbed_official 237:f3da66175598 3799 assert_param(IS_HRTIM_TIMPUSHPULLMODE(pTimerCfg->PushPull));
mbed_official 237:f3da66175598 3800 assert_param(IS_HRTIM_TIMFAULTENABLE(pTimerCfg->FaultEnable));
mbed_official 237:f3da66175598 3801 assert_param(IS_HRTIM_TIMFAULTLOCK(pTimerCfg->FaultLock));
mbed_official 237:f3da66175598 3802 assert_param(IS_HRTIM_TIMDEADTIMEINSERTION(pTimerCfg->PushPull,
mbed_official 237:f3da66175598 3803 pTimerCfg->DeadTimeInsertion));
mbed_official 237:f3da66175598 3804 assert_param(IS_HRTIM_TIMDELAYEDPROTECTION(pTimerCfg->PushPull,
mbed_official 237:f3da66175598 3805 pTimerCfg->DelayedProtectionMode));
mbed_official 237:f3da66175598 3806 assert_param(IS_HRTIM_TIMUPDATETRIGGER(pTimerCfg->UpdateTrigger));
mbed_official 237:f3da66175598 3807 assert_param(IS_HRTIM_TIMRESETTRIGGER(pTimerCfg->ResetTrigger));
mbed_official 237:f3da66175598 3808 assert_param(IS_HRTIM_TIMUPDATEONRESET(pTimerCfg->ResetUpdate));
mbed_official 237:f3da66175598 3809
mbed_official 237:f3da66175598 3810 /* Configure timing unit */
mbed_official 237:f3da66175598 3811 HRTIM_TimingUnitWaveform_Config(hhrtim, TimerIdx, pTimerCfg);
mbed_official 237:f3da66175598 3812 }
mbed_official 237:f3da66175598 3813
mbed_official 237:f3da66175598 3814 /* Update timer parameters */
mbed_official 237:f3da66175598 3815 hhrtim->TimerParam[TimerIdx].InterruptRequests = pTimerCfg->InterruptRequests;
mbed_official 237:f3da66175598 3816 hhrtim->TimerParam[TimerIdx].DMARequests = pTimerCfg->DMARequests;
mbed_official 237:f3da66175598 3817 hhrtim->TimerParam[TimerIdx].DMASrcAddress = pTimerCfg->DMASrcAddress;
mbed_official 237:f3da66175598 3818 hhrtim->TimerParam[TimerIdx].DMADstAddress = pTimerCfg->DMADstAddress;
mbed_official 237:f3da66175598 3819 hhrtim->TimerParam[TimerIdx].DMASize = pTimerCfg->DMASize;
mbed_official 237:f3da66175598 3820
mbed_official 237:f3da66175598 3821 /* Force a software update */
mbed_official 237:f3da66175598 3822 HRTIM_ForceRegistersUpdate(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 3823
mbed_official 237:f3da66175598 3824 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3825
mbed_official 237:f3da66175598 3826 /* Process Unlocked */
mbed_official 237:f3da66175598 3827 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3828
mbed_official 237:f3da66175598 3829 return HAL_OK;
mbed_official 237:f3da66175598 3830 }
mbed_official 237:f3da66175598 3831
mbed_official 237:f3da66175598 3832 /**
mbed_official 237:f3da66175598 3833 * @brief Configures the event filtering capabilities of a timer (blanking, windowing)
mbed_official 237:f3da66175598 3834 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3835 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3836 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3837 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3838 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3839 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3840 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3841 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3842 * @param Event: external event for which timer event filtering must be configured
mbed_official 237:f3da66175598 3843 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3844 * @arg HRTIM_EVENT_NONE: Reset timer event filtering configuration
mbed_official 237:f3da66175598 3845 * @arg HRTIM_EVENT_1: External event 1
mbed_official 237:f3da66175598 3846 * @arg HRTIM_EVENT_2: External event 2
mbed_official 237:f3da66175598 3847 * @arg HRTIM_EVENT_3: External event 3
mbed_official 237:f3da66175598 3848 * @arg HRTIM_EVENT_4: External event 4
mbed_official 237:f3da66175598 3849 * @arg HRTIM_EVENT_5: External event 5
mbed_official 237:f3da66175598 3850 * @arg HRTIM_EVENT_6: External event 6
mbed_official 237:f3da66175598 3851 * @arg HRTIM_EVENT_7: External event 7
mbed_official 237:f3da66175598 3852 * @arg HRTIM_EVENT_8: External event 8
mbed_official 237:f3da66175598 3853 * @arg HRTIM_EVENT_9: External event 9
mbed_official 237:f3da66175598 3854 * @arg HRTIM_EVENT_10: External event 10
mbed_official 237:f3da66175598 3855 * @param pTimerEventFilteringCfg: pointer to the timer event filtering configuration structure
mbed_official 237:f3da66175598 3856 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3857 * @retval HAL status
mbed_official 237:f3da66175598 3858 */
mbed_official 237:f3da66175598 3859 HAL_StatusTypeDef HAL_HRTIM_TimerEventFilteringConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3860 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3861 uint32_t Event,
mbed_official 237:f3da66175598 3862 HRTIM_TimerEventFilteringCfgTypeDef* pTimerEventFilteringCfg)
mbed_official 237:f3da66175598 3863 {
mbed_official 237:f3da66175598 3864 uint32_t hrtim_eefr;
mbed_official 237:f3da66175598 3865
mbed_official 237:f3da66175598 3866 /* Check parameters */
mbed_official 237:f3da66175598 3867 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 3868 assert_param(IS_HRTIM_EVENT(Event));
mbed_official 237:f3da66175598 3869 assert_param(IS_HRTIM_TIMEVENTFILTER(pTimerEventFilteringCfg->Filter));
mbed_official 237:f3da66175598 3870 assert_param(IS_HRTIM_TIMEVENTLATCH(pTimerEventFilteringCfg->Latch));
mbed_official 237:f3da66175598 3871
mbed_official 237:f3da66175598 3872 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 3873 {
mbed_official 237:f3da66175598 3874 return HAL_BUSY;
mbed_official 237:f3da66175598 3875 }
mbed_official 237:f3da66175598 3876
mbed_official 237:f3da66175598 3877 /* Process Locked */
mbed_official 237:f3da66175598 3878 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 3879
mbed_official 237:f3da66175598 3880 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 3881
mbed_official 237:f3da66175598 3882 /* Configure timer event filtering capabilities */
mbed_official 237:f3da66175598 3883 switch (Event)
mbed_official 237:f3da66175598 3884 {
mbed_official 237:f3da66175598 3885 case HRTIM_EVENT_NONE:
mbed_official 237:f3da66175598 3886 {
mbed_official 237:f3da66175598 3887 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = 0;
mbed_official 237:f3da66175598 3888 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = 0;
mbed_official 237:f3da66175598 3889 }
mbed_official 237:f3da66175598 3890 break;
mbed_official 237:f3da66175598 3891 case HRTIM_EVENT_1:
mbed_official 237:f3da66175598 3892 {
mbed_official 237:f3da66175598 3893 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1;
mbed_official 237:f3da66175598 3894 hrtim_eefr &= ~(HRTIM_EEFR1_EE1FLTR | HRTIM_EEFR1_EE1LTCH);
mbed_official 237:f3da66175598 3895 hrtim_eefr |= (pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch);
mbed_official 237:f3da66175598 3896 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = hrtim_eefr;
mbed_official 237:f3da66175598 3897 }
mbed_official 237:f3da66175598 3898 break;
mbed_official 237:f3da66175598 3899 case HRTIM_EVENT_2:
mbed_official 237:f3da66175598 3900 {
mbed_official 237:f3da66175598 3901 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1;
mbed_official 237:f3da66175598 3902 hrtim_eefr &= ~(HRTIM_EEFR1_EE2FLTR | HRTIM_EEFR1_EE2LTCH);
mbed_official 237:f3da66175598 3903 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 6);
mbed_official 237:f3da66175598 3904 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = hrtim_eefr;
mbed_official 237:f3da66175598 3905 }
mbed_official 237:f3da66175598 3906 break;
mbed_official 237:f3da66175598 3907 case HRTIM_EVENT_3:
mbed_official 237:f3da66175598 3908 {
mbed_official 237:f3da66175598 3909 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1;
mbed_official 237:f3da66175598 3910 hrtim_eefr &= ~(HRTIM_EEFR1_EE3FLTR | HRTIM_EEFR1_EE3LTCH);
mbed_official 237:f3da66175598 3911 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 12);
mbed_official 237:f3da66175598 3912 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = hrtim_eefr;
mbed_official 237:f3da66175598 3913 }
mbed_official 237:f3da66175598 3914 break;
mbed_official 237:f3da66175598 3915 case HRTIM_EVENT_4:
mbed_official 237:f3da66175598 3916 {
mbed_official 237:f3da66175598 3917 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1;
mbed_official 237:f3da66175598 3918 hrtim_eefr &= ~(HRTIM_EEFR1_EE4FLTR | HRTIM_EEFR1_EE4LTCH);
mbed_official 237:f3da66175598 3919 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 18);
mbed_official 237:f3da66175598 3920 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = hrtim_eefr;
mbed_official 237:f3da66175598 3921 }
mbed_official 237:f3da66175598 3922 break;
mbed_official 237:f3da66175598 3923 case HRTIM_EVENT_5:
mbed_official 237:f3da66175598 3924 {
mbed_official 237:f3da66175598 3925 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1;
mbed_official 237:f3da66175598 3926 hrtim_eefr &= ~(HRTIM_EEFR1_EE5FLTR | HRTIM_EEFR1_EE5LTCH);
mbed_official 237:f3da66175598 3927 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 24);
mbed_official 237:f3da66175598 3928 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR1 = hrtim_eefr;
mbed_official 237:f3da66175598 3929 }
mbed_official 237:f3da66175598 3930 break;
mbed_official 237:f3da66175598 3931 case HRTIM_EVENT_6:
mbed_official 237:f3da66175598 3932 {
mbed_official 237:f3da66175598 3933 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2;
mbed_official 237:f3da66175598 3934 hrtim_eefr &= ~(HRTIM_EEFR2_EE6FLTR | HRTIM_EEFR2_EE6LTCH);
mbed_official 237:f3da66175598 3935 hrtim_eefr |= (pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch);
mbed_official 237:f3da66175598 3936 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = hrtim_eefr;
mbed_official 237:f3da66175598 3937 }
mbed_official 237:f3da66175598 3938 break;
mbed_official 237:f3da66175598 3939 case HRTIM_EVENT_7:
mbed_official 237:f3da66175598 3940 {
mbed_official 237:f3da66175598 3941 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2;
mbed_official 237:f3da66175598 3942 hrtim_eefr &= ~(HRTIM_EEFR2_EE7FLTR | HRTIM_EEFR2_EE7LTCH);
mbed_official 237:f3da66175598 3943 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 6);
mbed_official 237:f3da66175598 3944 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = hrtim_eefr;
mbed_official 237:f3da66175598 3945 }
mbed_official 237:f3da66175598 3946 break;
mbed_official 237:f3da66175598 3947 case HRTIM_EVENT_8:
mbed_official 237:f3da66175598 3948 {
mbed_official 237:f3da66175598 3949 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2;
mbed_official 237:f3da66175598 3950 hrtim_eefr &= ~(HRTIM_EEFR2_EE8FLTR | HRTIM_EEFR2_EE8LTCH);
mbed_official 237:f3da66175598 3951 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 12);
mbed_official 237:f3da66175598 3952 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = hrtim_eefr;
mbed_official 237:f3da66175598 3953 }
mbed_official 237:f3da66175598 3954 break;
mbed_official 237:f3da66175598 3955 case HRTIM_EVENT_9:
mbed_official 237:f3da66175598 3956 {
mbed_official 237:f3da66175598 3957 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2;
mbed_official 237:f3da66175598 3958 hrtim_eefr &= ~(HRTIM_EEFR2_EE9FLTR | HRTIM_EEFR2_EE9LTCH);
mbed_official 237:f3da66175598 3959 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 18);
mbed_official 237:f3da66175598 3960 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = hrtim_eefr;
mbed_official 237:f3da66175598 3961 }
mbed_official 237:f3da66175598 3962 break;
mbed_official 237:f3da66175598 3963 case HRTIM_EVENT_10:
mbed_official 237:f3da66175598 3964 {
mbed_official 237:f3da66175598 3965 hrtim_eefr = hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2;
mbed_official 237:f3da66175598 3966 hrtim_eefr &= ~(HRTIM_EEFR2_EE10FLTR | HRTIM_EEFR2_EE10LTCH);
mbed_official 237:f3da66175598 3967 hrtim_eefr |= ((pTimerEventFilteringCfg->Filter | pTimerEventFilteringCfg->Latch) << 24);
mbed_official 237:f3da66175598 3968 hhrtim->Instance->sTimerxRegs[TimerIdx].EEFxR2 = hrtim_eefr;
mbed_official 237:f3da66175598 3969 }
mbed_official 237:f3da66175598 3970 break;
mbed_official 237:f3da66175598 3971 }
mbed_official 237:f3da66175598 3972
mbed_official 237:f3da66175598 3973 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 3974
mbed_official 237:f3da66175598 3975 /* Process Unlocked */
mbed_official 237:f3da66175598 3976 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 3977
mbed_official 237:f3da66175598 3978 return HAL_OK;
mbed_official 237:f3da66175598 3979 }
mbed_official 237:f3da66175598 3980
mbed_official 237:f3da66175598 3981 /**
mbed_official 237:f3da66175598 3982 * @brief Configures the deadtime insertion feature for a timer
mbed_official 237:f3da66175598 3983 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 3984 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 3985 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 3986 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 3987 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 3988 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 3989 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 3990 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 3991 * @param pDeadTimeCfg: pointer to the deadtime insertion configuration structure
mbed_official 237:f3da66175598 3992 * @retval HAL status
mbed_official 237:f3da66175598 3993 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 3994 */
mbed_official 237:f3da66175598 3995 HAL_StatusTypeDef HAL_HRTIM_DeadTimeConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 3996 uint32_t TimerIdx,
mbed_official 237:f3da66175598 3997 HRTIM_DeadTimeCfgTypeDef* pDeadTimeCfg)
mbed_official 237:f3da66175598 3998 {
mbed_official 237:f3da66175598 3999 uint32_t hrtim_dtr;
mbed_official 237:f3da66175598 4000
mbed_official 237:f3da66175598 4001 /* Check parameters */
mbed_official 237:f3da66175598 4002 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 4003 assert_param(IS_HRTIM_TIMDEADTIME_PRESCALERRATIO(pDeadTimeCfg->Prescaler));
mbed_official 237:f3da66175598 4004 assert_param(IS_HRTIM_TIMDEADTIME_RISINGSIGN(pDeadTimeCfg->RisingSign));
mbed_official 237:f3da66175598 4005 assert_param(IS_HRTIM_TIMDEADTIME_RISINGLOCK(pDeadTimeCfg->RisingLock));
mbed_official 237:f3da66175598 4006 assert_param(IS_HRTIM_TIMDEADTIME_RISINGSIGNLOCK(pDeadTimeCfg->RisingSignLock));
mbed_official 237:f3da66175598 4007 assert_param(IS_HRTIM_TIMDEADTIME_FALLINGSIGN(pDeadTimeCfg->FallingSign));
mbed_official 237:f3da66175598 4008 assert_param(IS_HRTIM_TIMDEADTIME_FALLINGLOCK(pDeadTimeCfg->FallingLock));
mbed_official 237:f3da66175598 4009 assert_param(IS_HRTIM_TIMDEADTIME_FALLINGSIGNLOCK(pDeadTimeCfg->FallingSignLock));
mbed_official 237:f3da66175598 4010
mbed_official 237:f3da66175598 4011 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4012 {
mbed_official 237:f3da66175598 4013 return HAL_BUSY;
mbed_official 237:f3da66175598 4014 }
mbed_official 237:f3da66175598 4015
mbed_official 237:f3da66175598 4016 /* Process Locked */
mbed_official 237:f3da66175598 4017 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4018
mbed_official 237:f3da66175598 4019 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4020
mbed_official 237:f3da66175598 4021 hrtim_dtr = hhrtim->Instance->sTimerxRegs[TimerIdx].DTxR;
mbed_official 237:f3da66175598 4022
mbed_official 237:f3da66175598 4023 /* Clear timer deadtime configuration */
mbed_official 237:f3da66175598 4024 hrtim_dtr &= ~(HRTIM_DTR_DTR | HRTIM_DTR_SDTR | HRTIM_DTR_DTPRSC |
mbed_official 237:f3da66175598 4025 HRTIM_DTR_DTRSLK | HRTIM_DTR_DTRLK | HRTIM_DTR_DTF |
mbed_official 237:f3da66175598 4026 HRTIM_DTR_SDTF | HRTIM_DTR_DTFSLK | HRTIM_DTR_DTFLK);
mbed_official 237:f3da66175598 4027
mbed_official 237:f3da66175598 4028 /* Set timer deadtime configuration */
mbed_official 237:f3da66175598 4029 hrtim_dtr |= pDeadTimeCfg->Prescaler;
mbed_official 237:f3da66175598 4030 hrtim_dtr |= pDeadTimeCfg->RisingValue;
mbed_official 237:f3da66175598 4031 hrtim_dtr |= pDeadTimeCfg->RisingSign;
mbed_official 237:f3da66175598 4032 hrtim_dtr |= pDeadTimeCfg->RisingSignLock;
mbed_official 237:f3da66175598 4033 hrtim_dtr |= pDeadTimeCfg->RisingLock;
mbed_official 237:f3da66175598 4034 hrtim_dtr |= (pDeadTimeCfg->FallingValue << 16);
mbed_official 237:f3da66175598 4035 hrtim_dtr |= pDeadTimeCfg->FallingSign;
mbed_official 237:f3da66175598 4036 hrtim_dtr |= pDeadTimeCfg->FallingSignLock;
mbed_official 237:f3da66175598 4037 hrtim_dtr |= pDeadTimeCfg->FallingLock;
mbed_official 237:f3da66175598 4038
mbed_official 237:f3da66175598 4039 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 4040 hhrtim->Instance->sTimerxRegs[TimerIdx].DTxR = hrtim_dtr;
mbed_official 237:f3da66175598 4041
mbed_official 237:f3da66175598 4042 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4043
mbed_official 237:f3da66175598 4044 /* Process Unlocked */
mbed_official 237:f3da66175598 4045 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4046
mbed_official 237:f3da66175598 4047 return HAL_OK;
mbed_official 237:f3da66175598 4048 }
mbed_official 237:f3da66175598 4049
mbed_official 237:f3da66175598 4050 /**
mbed_official 237:f3da66175598 4051 * @brief Configures the chopper mode feature for a timer
mbed_official 237:f3da66175598 4052 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4053 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4054 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4055 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4056 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4057 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4058 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4059 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4060 * @param pChopperModeCfg: pointer to the chopper mode configuration structure
mbed_official 237:f3da66175598 4061 * @retval HAL status
mbed_official 237:f3da66175598 4062 * @note This function must be called before configuring the timer output(s)
mbed_official 237:f3da66175598 4063 */
mbed_official 237:f3da66175598 4064 HAL_StatusTypeDef HAL_HRTIM_ChopperModeConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4065 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4066 HRTIM_ChopperModeCfgTypeDef* pChopperModeCfg)
mbed_official 237:f3da66175598 4067 {
mbed_official 237:f3da66175598 4068 uint32_t hrtim_chpr;
mbed_official 237:f3da66175598 4069
mbed_official 237:f3da66175598 4070 /* Check parameters */
mbed_official 237:f3da66175598 4071 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 4072 assert_param(IS_HRTIM_CHOPPER_PRESCALERRATIO(pChopperModeCfg->CarrierFreq));
mbed_official 237:f3da66175598 4073 assert_param(IS_HRTIM_CHOPPER_DUTYCYCLE(pChopperModeCfg->DutyCycle));
mbed_official 237:f3da66175598 4074 assert_param(IS_HRTIM_CHOPPER_PULSEWIDTH(pChopperModeCfg->StartPulse));
mbed_official 237:f3da66175598 4075
mbed_official 237:f3da66175598 4076 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4077 {
mbed_official 237:f3da66175598 4078 return HAL_BUSY;
mbed_official 237:f3da66175598 4079 }
mbed_official 237:f3da66175598 4080
mbed_official 237:f3da66175598 4081 /* Process Locked */
mbed_official 237:f3da66175598 4082 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4083
mbed_official 237:f3da66175598 4084 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4085
mbed_official 237:f3da66175598 4086 hrtim_chpr = hhrtim->Instance->sTimerxRegs[TimerIdx].CHPxR;
mbed_official 237:f3da66175598 4087
mbed_official 237:f3da66175598 4088 /* Clear timer chopper mode configuration */
mbed_official 237:f3da66175598 4089 hrtim_chpr &= ~(HRTIM_CHPR_CARFRQ | HRTIM_CHPR_CARDTY | HRTIM_CHPR_STRPW);
mbed_official 237:f3da66175598 4090
mbed_official 237:f3da66175598 4091 /* Set timer choppe mode configuration */
mbed_official 237:f3da66175598 4092 hrtim_chpr |= pChopperModeCfg->CarrierFreq;
mbed_official 237:f3da66175598 4093 hrtim_chpr |= (pChopperModeCfg->DutyCycle);
mbed_official 237:f3da66175598 4094 hrtim_chpr |= (pChopperModeCfg->StartPulse);
mbed_official 237:f3da66175598 4095
mbed_official 237:f3da66175598 4096 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 4097 hhrtim->Instance->sTimerxRegs[TimerIdx].CHPxR = hrtim_chpr;
mbed_official 237:f3da66175598 4098
mbed_official 237:f3da66175598 4099 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4100
mbed_official 237:f3da66175598 4101 /* Process Unlocked */
mbed_official 237:f3da66175598 4102 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4103
mbed_official 237:f3da66175598 4104 return HAL_OK;
mbed_official 237:f3da66175598 4105 }
mbed_official 237:f3da66175598 4106
mbed_official 237:f3da66175598 4107 /**
mbed_official 237:f3da66175598 4108 * @brief Configures the burst DMA controller for a timer
mbed_official 237:f3da66175598 4109 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4110 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4111 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4112 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 4113 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4114 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4115 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4116 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4117 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4118 * @param RegistersToUpdate: registers to be written by DMA
mbed_official 237:f3da66175598 4119 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4120 * @arg HRTIM_BURSTDMA_CR: HRTIM_MCR or HRTIM_TIMxCR
mbed_official 237:f3da66175598 4121 * @arg HRTIM_BURSTDMA_ICR: HRTIM_MICR or HRTIM_TIMxICR
mbed_official 237:f3da66175598 4122 * @arg HRTIM_BURSTDMA_DIER: HRTIM_MDIER or HRTIM_TIMxDIER
mbed_official 237:f3da66175598 4123 * @arg HRTIM_BURSTDMA_CNT: HRTIM_MCNT or HRTIM_TIMxCNT
mbed_official 237:f3da66175598 4124 * @arg HRTIM_BURSTDMA_PER: HRTIM_MPER or HRTIM_TIMxPER
mbed_official 237:f3da66175598 4125 * @arg HRTIM_BURSTDMA_REP: HRTIM_MREP or HRTIM_TIMxREP
mbed_official 237:f3da66175598 4126 * @arg HRTIM_BURSTDMA_CMP1: HRTIM_MCMP1 or HRTIM_TIMxCMP1
mbed_official 237:f3da66175598 4127 * @arg HRTIM_BURSTDMA_CMP2: HRTIM_MCMP2 or HRTIM_TIMxCMP2
mbed_official 237:f3da66175598 4128 * @arg HRTIM_BURSTDMA_CMP3: HRTIM_MCMP3 or HRTIM_TIMxCMP3
mbed_official 237:f3da66175598 4129 * @arg HRTIM_BURSTDMA_CMP4: HRTIM_MCMP4 or HRTIM_TIMxCMP4
mbed_official 237:f3da66175598 4130 * @arg HRTIM_BURSTDMA_DTR: HRTIM_TIMxDTR
mbed_official 237:f3da66175598 4131 * @arg HRTIM_BURSTDMA_SET1R: HRTIM_TIMxSET1R
mbed_official 237:f3da66175598 4132 * @arg HRTIM_BURSTDMA_RST1R: HRTIM_TIMxRST1R
mbed_official 237:f3da66175598 4133 * @arg HRTIM_BURSTDMA_SET2R: HRTIM_TIMxSET2R
mbed_official 237:f3da66175598 4134 * @arg HRTIM_BURSTDMA_RST2R: HRTIM_TIMxRST2R
mbed_official 237:f3da66175598 4135 * @arg HRTIM_BURSTDMA_EEFR1: HRTIM_TIMxEEFR1
mbed_official 237:f3da66175598 4136 * @arg HRTIM_BURSTDMA_EEFR2: HRTIM_TIMxEEFR2
mbed_official 237:f3da66175598 4137 * @arg HRTIM_BURSTDMA_RSTR: HRTIM_TIMxRSTR
mbed_official 237:f3da66175598 4138 * @arg HRTIM_BURSTDMA_CHPR: HRTIM_TIMxCHPR
mbed_official 237:f3da66175598 4139 * @arg HRTIM_BURSTDMA_OUTR: HRTIM_TIMxOUTR
mbed_official 237:f3da66175598 4140 * @arg HRTIM_BURSTDMA_FLTR: HRTIM_TIMxFLTR
mbed_official 237:f3da66175598 4141 * @retval HAL status
mbed_official 237:f3da66175598 4142 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 4143 */
mbed_official 237:f3da66175598 4144 HAL_StatusTypeDef HAL_HRTIM_BurstDMAConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4145 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4146 uint32_t RegistersToUpdate)
mbed_official 237:f3da66175598 4147 {
mbed_official 237:f3da66175598 4148 /* Check parameters */
mbed_official 237:f3da66175598 4149 assert_param(IS_HRTIM_TIMER_BURSTDMA(TimerIdx, RegistersToUpdate));
mbed_official 237:f3da66175598 4150
mbed_official 237:f3da66175598 4151 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4152 {
mbed_official 237:f3da66175598 4153 return HAL_BUSY;
mbed_official 237:f3da66175598 4154 }
mbed_official 237:f3da66175598 4155
mbed_official 237:f3da66175598 4156 /* Process Locked */
mbed_official 237:f3da66175598 4157 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4158
mbed_official 237:f3da66175598 4159 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4160
mbed_official 237:f3da66175598 4161 /* Set the burst DMA timer update register */
mbed_official 237:f3da66175598 4162 switch (TimerIdx)
mbed_official 237:f3da66175598 4163 {
mbed_official 237:f3da66175598 4164 case HRTIM_TIMERINDEX_TIMER_A:
mbed_official 237:f3da66175598 4165 {
mbed_official 237:f3da66175598 4166 hhrtim->Instance->sCommonRegs.BDTAUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4167 }
mbed_official 237:f3da66175598 4168 break;
mbed_official 237:f3da66175598 4169 case HRTIM_TIMERINDEX_TIMER_B:
mbed_official 237:f3da66175598 4170 {
mbed_official 237:f3da66175598 4171 hhrtim->Instance->sCommonRegs.BDTBUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4172 }
mbed_official 237:f3da66175598 4173 break;
mbed_official 237:f3da66175598 4174 case HRTIM_TIMERINDEX_TIMER_C:
mbed_official 237:f3da66175598 4175 {
mbed_official 237:f3da66175598 4176 hhrtim->Instance->sCommonRegs.BDTCUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4177 }
mbed_official 237:f3da66175598 4178 break;
mbed_official 237:f3da66175598 4179 case HRTIM_TIMERINDEX_TIMER_D:
mbed_official 237:f3da66175598 4180 {
mbed_official 237:f3da66175598 4181 hhrtim->Instance->sCommonRegs.BDTDUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4182 }
mbed_official 237:f3da66175598 4183 break;
mbed_official 237:f3da66175598 4184 case HRTIM_TIMERINDEX_TIMER_E:
mbed_official 237:f3da66175598 4185 {
mbed_official 237:f3da66175598 4186 hhrtim->Instance->sCommonRegs.BDTEUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4187 }
mbed_official 237:f3da66175598 4188 break;
mbed_official 237:f3da66175598 4189 case HRTIM_TIMERINDEX_MASTER:
mbed_official 237:f3da66175598 4190 {
mbed_official 237:f3da66175598 4191 hhrtim->Instance->sCommonRegs.BDMUPR = RegistersToUpdate;
mbed_official 237:f3da66175598 4192 }
mbed_official 237:f3da66175598 4193 break;
mbed_official 237:f3da66175598 4194 }
mbed_official 237:f3da66175598 4195
mbed_official 237:f3da66175598 4196 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4197
mbed_official 237:f3da66175598 4198 /* Process Unlocked */
mbed_official 237:f3da66175598 4199 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4200
mbed_official 237:f3da66175598 4201 return HAL_OK;
mbed_official 237:f3da66175598 4202 }
mbed_official 237:f3da66175598 4203
mbed_official 237:f3da66175598 4204 /**
mbed_official 237:f3da66175598 4205 * @brief Configures the compare unit of a timer operating in waveform mode
mbed_official 237:f3da66175598 4206 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4207 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4208 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4209 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 4210 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4211 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4212 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4213 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4214 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4215 * @param CompareUnit: Compare unit to configure
mbed_official 237:f3da66175598 4216 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4217 * @arg HRTIM_COMPAREUNIT_1: Compare unit 1
mbed_official 237:f3da66175598 4218 * @arg HRTIM_COMPAREUNIT_2: Compare unit 2
mbed_official 237:f3da66175598 4219 * @arg HRTIM_COMPAREUNIT_3: Compare unit 3
mbed_official 237:f3da66175598 4220 * @arg HRTIM_COMPAREUNIT_4: Compare unit 4
mbed_official 237:f3da66175598 4221 * @param pCompareCfg: pointer to the compare unit configuration structure
mbed_official 237:f3da66175598 4222 * @note When auto delayed mode is required for compare unit 2 or compare unit 4,
mbed_official 237:f3da66175598 4223 * application has to configure separately the capture unit. Capture unit
mbed_official 237:f3da66175598 4224 * to configure in that case depends on the compare unit auto delayed mode
mbed_official 237:f3da66175598 4225 * is applied to (see below):
mbed_official 237:f3da66175598 4226 * Auto delayed on output compare 2: capture unit 1 must be configured
mbed_official 237:f3da66175598 4227 * Auto delayed on output compare 4: capture unit 2 must be configured
mbed_official 237:f3da66175598 4228 * @retval HAL status
mbed_official 237:f3da66175598 4229 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 4230 */
mbed_official 237:f3da66175598 4231 HAL_StatusTypeDef HAL_HRTIM_WaveformCompareConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4232 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4233 uint32_t CompareUnit,
mbed_official 237:f3da66175598 4234 HRTIM_CompareCfgTypeDef* pCompareCfg)
mbed_official 237:f3da66175598 4235 {
mbed_official 237:f3da66175598 4236 /* Check parameters */
mbed_official 237:f3da66175598 4237 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 4238
mbed_official 237:f3da66175598 4239 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4240 {
mbed_official 237:f3da66175598 4241 return HAL_BUSY;
mbed_official 237:f3da66175598 4242 }
mbed_official 237:f3da66175598 4243
mbed_official 237:f3da66175598 4244 /* Process Locked */
mbed_official 237:f3da66175598 4245 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4246
mbed_official 237:f3da66175598 4247 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4248
mbed_official 237:f3da66175598 4249 /* Configure the compare unit */
mbed_official 237:f3da66175598 4250 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 4251 {
mbed_official 237:f3da66175598 4252 switch (CompareUnit)
mbed_official 237:f3da66175598 4253 {
mbed_official 237:f3da66175598 4254 case HRTIM_COMPAREUNIT_1:
mbed_official 237:f3da66175598 4255 {
mbed_official 237:f3da66175598 4256 hhrtim->Instance->sMasterRegs.MCMP1R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4257 }
mbed_official 237:f3da66175598 4258 break;
mbed_official 237:f3da66175598 4259 case HRTIM_COMPAREUNIT_2:
mbed_official 237:f3da66175598 4260 {
mbed_official 237:f3da66175598 4261 hhrtim->Instance->sMasterRegs.MCMP2R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4262 }
mbed_official 237:f3da66175598 4263 break;
mbed_official 237:f3da66175598 4264 case HRTIM_COMPAREUNIT_3:
mbed_official 237:f3da66175598 4265 {
mbed_official 237:f3da66175598 4266 hhrtim->Instance->sMasterRegs.MCMP3R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4267 }
mbed_official 237:f3da66175598 4268 break;
mbed_official 237:f3da66175598 4269 case HRTIM_COMPAREUNIT_4:
mbed_official 237:f3da66175598 4270 {
mbed_official 237:f3da66175598 4271 hhrtim->Instance->sMasterRegs.MCMP4R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4272 }
mbed_official 237:f3da66175598 4273 break;
mbed_official 237:f3da66175598 4274 }
mbed_official 237:f3da66175598 4275 }
mbed_official 237:f3da66175598 4276 else
mbed_official 237:f3da66175598 4277 {
mbed_official 237:f3da66175598 4278 switch (CompareUnit)
mbed_official 237:f3da66175598 4279 {
mbed_official 237:f3da66175598 4280 case HRTIM_COMPAREUNIT_1:
mbed_official 237:f3da66175598 4281 {
mbed_official 237:f3da66175598 4282 /* Set the compare value */
mbed_official 237:f3da66175598 4283 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP1xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4284 }
mbed_official 237:f3da66175598 4285 break;
mbed_official 237:f3da66175598 4286 case HRTIM_COMPAREUNIT_2:
mbed_official 237:f3da66175598 4287 {
mbed_official 237:f3da66175598 4288 /* Check parameters */
mbed_official 237:f3da66175598 4289 assert_param(IS_HRTIM_COMPAREUNIT_AUTODELAYEDMODE(CompareUnit, pCompareCfg->AutoDelayedMode));
mbed_official 237:f3da66175598 4290
mbed_official 237:f3da66175598 4291 /* Set the compare value */
mbed_official 237:f3da66175598 4292 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP2xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4293
mbed_official 237:f3da66175598 4294 if (pCompareCfg->AutoDelayedMode != HRTIM_AUTODELAYEDMODE_REGULAR)
mbed_official 237:f3da66175598 4295 {
mbed_official 237:f3da66175598 4296 /* Configure auto-delayed mode */
mbed_official 237:f3da66175598 4297 /* DELCMP2 bitfield must be reset when reprogrammed from one value */
mbed_official 237:f3da66175598 4298 /* to the other to reinitialize properly the auto-delayed mechanism */
mbed_official 237:f3da66175598 4299 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR &= ~HRTIM_TIMCR_DELCMP2;
mbed_official 237:f3da66175598 4300 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR |= pCompareCfg->AutoDelayedMode;
mbed_official 237:f3da66175598 4301
mbed_official 237:f3da66175598 4302 /* Set the compare value for timeout compare unit (if any) */
mbed_official 237:f3da66175598 4303 if (pCompareCfg->AutoDelayedMode == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1)
mbed_official 237:f3da66175598 4304 {
mbed_official 237:f3da66175598 4305 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP1xR = pCompareCfg->AutoDelayedTimeout;
mbed_official 237:f3da66175598 4306 }
mbed_official 237:f3da66175598 4307 else if (pCompareCfg->AutoDelayedMode == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)
mbed_official 237:f3da66175598 4308 {
mbed_official 237:f3da66175598 4309 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP3xR = pCompareCfg->AutoDelayedTimeout;
mbed_official 237:f3da66175598 4310 }
mbed_official 237:f3da66175598 4311 }
mbed_official 237:f3da66175598 4312 }
mbed_official 237:f3da66175598 4313 break;
mbed_official 237:f3da66175598 4314 case HRTIM_COMPAREUNIT_3:
mbed_official 237:f3da66175598 4315 {
mbed_official 237:f3da66175598 4316 /* Set the compare value */
mbed_official 237:f3da66175598 4317 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP3xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4318 }
mbed_official 237:f3da66175598 4319 break;
mbed_official 237:f3da66175598 4320 case HRTIM_COMPAREUNIT_4:
mbed_official 237:f3da66175598 4321 {
mbed_official 237:f3da66175598 4322 /* Check parameters */
mbed_official 237:f3da66175598 4323 assert_param(IS_HRTIM_COMPAREUNIT_AUTODELAYEDMODE(CompareUnit, pCompareCfg->AutoDelayedMode));
mbed_official 237:f3da66175598 4324
mbed_official 237:f3da66175598 4325 /* Set the compare value */
mbed_official 237:f3da66175598 4326 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP4xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 4327
mbed_official 237:f3da66175598 4328 if (pCompareCfg->AutoDelayedMode != HRTIM_AUTODELAYEDMODE_REGULAR)
mbed_official 237:f3da66175598 4329 {
mbed_official 237:f3da66175598 4330 /* Configure auto-delayed mode */
mbed_official 237:f3da66175598 4331 /* DELCMP4 bitfield must be reset when reprogrammed from one value */
mbed_official 237:f3da66175598 4332 /* to the other to reinitialize properly the auto-delayed mechanism */
mbed_official 237:f3da66175598 4333 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR &= ~HRTIM_TIMCR_DELCMP4;
mbed_official 237:f3da66175598 4334 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR |= (pCompareCfg->AutoDelayedMode << 2);
mbed_official 237:f3da66175598 4335
mbed_official 237:f3da66175598 4336 /* Set the compare value for timeout compare unit (if any) */
mbed_official 237:f3da66175598 4337 if (pCompareCfg->AutoDelayedMode == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1)
mbed_official 237:f3da66175598 4338 {
mbed_official 237:f3da66175598 4339 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP1xR = pCompareCfg->AutoDelayedTimeout;
mbed_official 237:f3da66175598 4340 }
mbed_official 237:f3da66175598 4341 else if (pCompareCfg->AutoDelayedMode == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)
mbed_official 237:f3da66175598 4342 {
mbed_official 237:f3da66175598 4343 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP3xR = pCompareCfg->AutoDelayedTimeout;
mbed_official 237:f3da66175598 4344 }
mbed_official 237:f3da66175598 4345 }
mbed_official 237:f3da66175598 4346 }
mbed_official 237:f3da66175598 4347 break;
mbed_official 237:f3da66175598 4348 }
mbed_official 237:f3da66175598 4349 }
mbed_official 237:f3da66175598 4350 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4351
mbed_official 237:f3da66175598 4352 /* Process Unlocked */
mbed_official 237:f3da66175598 4353 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4354
mbed_official 237:f3da66175598 4355 return HAL_OK;
mbed_official 237:f3da66175598 4356 }
mbed_official 237:f3da66175598 4357
mbed_official 237:f3da66175598 4358 /**
mbed_official 237:f3da66175598 4359 * @brief Configures the cature unit of a timer operating in waveform mode
mbed_official 237:f3da66175598 4360 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4361 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4362 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4363 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4364 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4365 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4366 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4367 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4368 * @param CaptureUnit: Capture unit to configure
mbed_official 237:f3da66175598 4369 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4370 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 4371 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 4372 * @param pCaptureCfg: pointer to the compare unit configuration structure
mbed_official 237:f3da66175598 4373 * @retval HAL status
mbed_official 237:f3da66175598 4374 * @note This function must be called before starting the timer
mbed_official 237:f3da66175598 4375 */
mbed_official 237:f3da66175598 4376 HAL_StatusTypeDef HAL_HRTIM_WaveformCaptureConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4377 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4378 uint32_t CaptureUnit,
mbed_official 237:f3da66175598 4379 HRTIM_CaptureCfgTypeDef* pCaptureCfg)
mbed_official 237:f3da66175598 4380 {
mbed_official 237:f3da66175598 4381 /* Check parameters */
mbed_official 237:f3da66175598 4382 assert_param(IS_HRTIM_TIMER_CAPTURETRIGGER(TimerIdx, pCaptureCfg->Trigger));
mbed_official 237:f3da66175598 4383
mbed_official 237:f3da66175598 4384 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4385 {
mbed_official 237:f3da66175598 4386 return HAL_BUSY;
mbed_official 237:f3da66175598 4387 }
mbed_official 237:f3da66175598 4388
mbed_official 237:f3da66175598 4389 /* Process Locked */
mbed_official 237:f3da66175598 4390 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4391
mbed_official 237:f3da66175598 4392 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4393
mbed_official 237:f3da66175598 4394 /* Configure the capture unit */
mbed_official 237:f3da66175598 4395 switch (CaptureUnit)
mbed_official 237:f3da66175598 4396 {
mbed_official 237:f3da66175598 4397 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 4398 {
mbed_official 237:f3da66175598 4399 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR = pCaptureCfg->Trigger;
mbed_official 237:f3da66175598 4400 }
mbed_official 237:f3da66175598 4401 break;
mbed_official 237:f3da66175598 4402 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 4403 {
mbed_official 237:f3da66175598 4404 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR = pCaptureCfg->Trigger;
mbed_official 237:f3da66175598 4405 }
mbed_official 237:f3da66175598 4406 break;
mbed_official 237:f3da66175598 4407 }
mbed_official 237:f3da66175598 4408
mbed_official 237:f3da66175598 4409 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4410
mbed_official 237:f3da66175598 4411 /* Process Unlocked */
mbed_official 237:f3da66175598 4412 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4413
mbed_official 237:f3da66175598 4414 return HAL_OK;
mbed_official 237:f3da66175598 4415 }
mbed_official 237:f3da66175598 4416
mbed_official 237:f3da66175598 4417 /**
mbed_official 237:f3da66175598 4418 * @brief Configures the output of a timer operating in waveform mode
mbed_official 237:f3da66175598 4419 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4420 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4421 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4422 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4423 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4424 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4425 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4426 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4427 * @param Output: Timer output
mbed_official 237:f3da66175598 4428 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4429 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 4430 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 4431 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 4432 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 4433 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 4434 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 4435 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 4436 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 4437 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 4438 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 4439 * @param pOutputCfg: pointer to the timer output configuration structure
mbed_official 237:f3da66175598 4440 * @retval HAL status
mbed_official 237:f3da66175598 4441 * @note This function must be called before configuring the timer and after
mbed_official 237:f3da66175598 4442 * configuring the deadtime insertion feature (if required).
mbed_official 237:f3da66175598 4443 */
mbed_official 237:f3da66175598 4444 HAL_StatusTypeDef HAL_HRTIM_WaveformOutputConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4445 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4446 uint32_t Output,
mbed_official 237:f3da66175598 4447 HRTIM_OutputCfgTypeDef * pOutputCfg)
mbed_official 237:f3da66175598 4448 {
mbed_official 237:f3da66175598 4449 /* Check parameters */
mbed_official 237:f3da66175598 4450 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, Output));
mbed_official 237:f3da66175598 4451 assert_param(IS_HRTIM_OUTPUTPOLARITY(pOutputCfg->Polarity));
mbed_official 237:f3da66175598 4452 assert_param(IS_HRTIM_OUTPUTIDLELEVEL(pOutputCfg->IdleLevel));
mbed_official 237:f3da66175598 4453 assert_param(IS_HRTIM_OUTPUTIDLEMODE(pOutputCfg->IdleMode));
mbed_official 237:f3da66175598 4454 assert_param(IS_HRTIM_OUTPUTFAULTLEVEL(pOutputCfg->FaultLevel));
mbed_official 237:f3da66175598 4455 assert_param(IS_HRTIM_OUTPUTCHOPPERMODE(pOutputCfg->ChopperModeEnable));
mbed_official 237:f3da66175598 4456 assert_param(IS_HRTIM_OUTPUTBURSTMODEENTRY(pOutputCfg->BurstModeEntryDelayed));
mbed_official 237:f3da66175598 4457
mbed_official 237:f3da66175598 4458 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4459 {
mbed_official 237:f3da66175598 4460 return HAL_BUSY;
mbed_official 237:f3da66175598 4461 }
mbed_official 237:f3da66175598 4462
mbed_official 237:f3da66175598 4463 /* Process Locked */
mbed_official 237:f3da66175598 4464 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4465
mbed_official 237:f3da66175598 4466 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4467
mbed_official 237:f3da66175598 4468 /* Configure the timer output */
mbed_official 237:f3da66175598 4469 HRTIM_OutputConfig(hhrtim,
mbed_official 237:f3da66175598 4470 TimerIdx,
mbed_official 237:f3da66175598 4471 Output,
mbed_official 237:f3da66175598 4472 pOutputCfg);
mbed_official 237:f3da66175598 4473
mbed_official 237:f3da66175598 4474 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4475
mbed_official 237:f3da66175598 4476 /* Process Unlocked */
mbed_official 237:f3da66175598 4477 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4478
mbed_official 237:f3da66175598 4479 return HAL_OK;
mbed_official 237:f3da66175598 4480 }
mbed_official 237:f3da66175598 4481
mbed_official 237:f3da66175598 4482 /**
mbed_official 237:f3da66175598 4483 * @brief Forces the timer output to its active or inactive state
mbed_official 237:f3da66175598 4484 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4485 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 4486 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4487 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 4488 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 4489 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 4490 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 4491 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 4492 * @param Output: Timer output
mbed_official 237:f3da66175598 4493 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4494 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 4495 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 4496 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 4497 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 4498 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 4499 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 4500 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 4501 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 4502 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 4503 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 4504 * @param OutputLevel: indicates whether the output is forced to its active or inactive level
mbed_official 237:f3da66175598 4505 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 4506 * @arg HRTIM_OUTPUTLEVEL_ACTIVE: output is forced to its active level
mbed_official 237:f3da66175598 4507 * @arg HRTIM_OUTPUTLEVEL_INACTIVE: output is forced to its inactive level
mbed_official 237:f3da66175598 4508 * @retval HAL status
mbed_official 237:f3da66175598 4509 * @note The 'software set/reset trigger' bit in the output set/reset registers
mbed_official 237:f3da66175598 4510 * is automatically reset by hardware
mbed_official 237:f3da66175598 4511 */
mbed_official 237:f3da66175598 4512 HAL_StatusTypeDef HAL_HRTIM_WaveformSetOutputLevel(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4513 uint32_t TimerIdx,
mbed_official 237:f3da66175598 4514 uint32_t Output,
mbed_official 237:f3da66175598 4515 uint32_t OutputLevel)
mbed_official 237:f3da66175598 4516 {
mbed_official 237:f3da66175598 4517 /* Check parameters */
mbed_official 237:f3da66175598 4518 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, Output));
mbed_official 237:f3da66175598 4519 assert_param(IS_HRTIM_OUTPUTLEVEL(OutputLevel));
mbed_official 237:f3da66175598 4520
mbed_official 237:f3da66175598 4521 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 4522 {
mbed_official 237:f3da66175598 4523 return HAL_BUSY;
mbed_official 237:f3da66175598 4524 }
mbed_official 237:f3da66175598 4525
mbed_official 237:f3da66175598 4526 /* Process Locked */
mbed_official 237:f3da66175598 4527 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4528
mbed_official 237:f3da66175598 4529 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4530
mbed_official 237:f3da66175598 4531 /* Force timer output level */
mbed_official 237:f3da66175598 4532 switch (Output)
mbed_official 237:f3da66175598 4533 {
mbed_official 237:f3da66175598 4534 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 4535 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 4536 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 4537 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 4538 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 4539 {
mbed_official 237:f3da66175598 4540 if (OutputLevel == HRTIM_OUTPUTLEVEL_ACTIVE)
mbed_official 237:f3da66175598 4541 {
mbed_official 237:f3da66175598 4542 /* Force output to its active state */
mbed_official 237:f3da66175598 4543 hhrtim->Instance->sTimerxRegs[TimerIdx].SETx1R |= HRTIM_SET1R_SST;
mbed_official 237:f3da66175598 4544 }
mbed_official 237:f3da66175598 4545 else
mbed_official 237:f3da66175598 4546 {
mbed_official 237:f3da66175598 4547 /* Force output to its inactive state */
mbed_official 237:f3da66175598 4548 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx1R |= HRTIM_RST1R_SRT;
mbed_official 237:f3da66175598 4549 }
mbed_official 237:f3da66175598 4550 }
mbed_official 237:f3da66175598 4551 break;
mbed_official 237:f3da66175598 4552 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 4553 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 4554 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 4555 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 4556 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 4557 {
mbed_official 237:f3da66175598 4558 if (OutputLevel == HRTIM_OUTPUTLEVEL_ACTIVE)
mbed_official 237:f3da66175598 4559 {
mbed_official 237:f3da66175598 4560 /* Force output to its active state */
mbed_official 237:f3da66175598 4561 hhrtim->Instance->sTimerxRegs[TimerIdx].SETx2R |= HRTIM_SET2R_SST;
mbed_official 237:f3da66175598 4562 }
mbed_official 237:f3da66175598 4563 else
mbed_official 237:f3da66175598 4564 {
mbed_official 237:f3da66175598 4565 /* Force output to its inactive state */
mbed_official 237:f3da66175598 4566 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx2R |= HRTIM_RST2R_SRT;
mbed_official 237:f3da66175598 4567 }
mbed_official 237:f3da66175598 4568 }
mbed_official 237:f3da66175598 4569 break;
mbed_official 237:f3da66175598 4570 }
mbed_official 237:f3da66175598 4571
mbed_official 237:f3da66175598 4572 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4573
mbed_official 237:f3da66175598 4574 /* Process Unlocked */
mbed_official 237:f3da66175598 4575 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4576
mbed_official 237:f3da66175598 4577 return HAL_OK;
mbed_official 237:f3da66175598 4578 }
mbed_official 237:f3da66175598 4579
mbed_official 237:f3da66175598 4580 /**
mbed_official 237:f3da66175598 4581 * @brief Enables the generation of the waveform signal on the designated output(s)
mbed_official 237:f3da66175598 4582 * Ouputs can becombined (ORed) to allow for simultaneous output enabling
mbed_official 237:f3da66175598 4583 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4584 * @param OutputsToStart: Timer output(s) to enable
mbed_official 237:f3da66175598 4585 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4586 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 4587 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 4588 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 4589 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 4590 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 4591 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 4592 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 4593 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 4594 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 4595 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 4596 * @retval HAL status
mbed_official 237:f3da66175598 4597 */
mbed_official 237:f3da66175598 4598 HAL_StatusTypeDef HAL_HRTIM_WaveformOutputStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4599 uint32_t OutputsToStart)
mbed_official 237:f3da66175598 4600 {
mbed_official 237:f3da66175598 4601 /* Check the parameters */
mbed_official 237:f3da66175598 4602 assert_param(IS_HRTIM_OUTPUT(OutputsToStart));
mbed_official 237:f3da66175598 4603
mbed_official 237:f3da66175598 4604 /* Process Locked */
mbed_official 237:f3da66175598 4605 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4606
mbed_official 237:f3da66175598 4607 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4608
mbed_official 237:f3da66175598 4609 /* Enable the HRTIM outputs */
mbed_official 237:f3da66175598 4610 hhrtim->Instance->sCommonRegs.OENR |= (OutputsToStart);
mbed_official 237:f3da66175598 4611
mbed_official 237:f3da66175598 4612 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4613
mbed_official 237:f3da66175598 4614 /* Process Unlocked */
mbed_official 237:f3da66175598 4615 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4616
mbed_official 237:f3da66175598 4617 return HAL_OK;
mbed_official 237:f3da66175598 4618 }
mbed_official 237:f3da66175598 4619
mbed_official 237:f3da66175598 4620 /**
mbed_official 237:f3da66175598 4621 * @brief Disables the generation of the waveform signal on the designated output(s)
mbed_official 237:f3da66175598 4622 * Ouputs can becombined (ORed) to allow for simultaneous output disabling
mbed_official 237:f3da66175598 4623 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4624 * @param OutputsToStop: Timer output(s) to disable
mbed_official 237:f3da66175598 4625 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4626 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 4627 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 4628 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 4629 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 4630 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 4631 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 4632 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 4633 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 4634 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 4635 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 4636 * @retval HAL status
mbed_official 237:f3da66175598 4637 */
mbed_official 237:f3da66175598 4638 HAL_StatusTypeDef HAL_HRTIM_WaveformOutputStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4639 uint32_t OutputsToStop)
mbed_official 237:f3da66175598 4640 {
mbed_official 237:f3da66175598 4641 /* Check the parameters */
mbed_official 237:f3da66175598 4642 assert_param(IS_HRTIM_OUTPUT(OutputsToStop));
mbed_official 237:f3da66175598 4643
mbed_official 237:f3da66175598 4644 /* Process Locked */
mbed_official 237:f3da66175598 4645 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4646
mbed_official 237:f3da66175598 4647 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4648
mbed_official 237:f3da66175598 4649 /* Enable the HRTIM outputs */
mbed_official 237:f3da66175598 4650 hhrtim->Instance->sCommonRegs.ODISR |= (OutputsToStop);
mbed_official 237:f3da66175598 4651
mbed_official 237:f3da66175598 4652 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4653
mbed_official 237:f3da66175598 4654 /* Process Unlocked */
mbed_official 237:f3da66175598 4655 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4656
mbed_official 237:f3da66175598 4657 return HAL_OK;
mbed_official 237:f3da66175598 4658 }
mbed_official 237:f3da66175598 4659
mbed_official 237:f3da66175598 4660 /**
mbed_official 237:f3da66175598 4661 * @brief Starts the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4662 * Timers can be combined (ORed) to allow for simultaneous counter start
mbed_official 237:f3da66175598 4663 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4664 * @param Timers: Timer counter(s) to start
mbed_official 237:f3da66175598 4665 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4666 * @arg HRTIM_TIMERID_MASTER
mbed_official 237:f3da66175598 4667 * @arg HRTIM_TIMERID_TIMER_A
mbed_official 237:f3da66175598 4668 * @arg HRTIM_TIMERID_TIMER_B
mbed_official 237:f3da66175598 4669 * @arg HRTIM_TIMERID_TIMER_C
mbed_official 237:f3da66175598 4670 * @arg HRTIM_TIMERID_TIMER_D
mbed_official 237:f3da66175598 4671 * @arg HRTIM_TIMERID_TIMER_E
mbed_official 237:f3da66175598 4672 * @retval HAL status
mbed_official 237:f3da66175598 4673 */
mbed_official 237:f3da66175598 4674 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStart(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4675 uint32_t Timers)
mbed_official 237:f3da66175598 4676 {
mbed_official 237:f3da66175598 4677 /* Check the parameters */
mbed_official 237:f3da66175598 4678 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4679
mbed_official 237:f3da66175598 4680 /* Process Locked */
mbed_official 237:f3da66175598 4681 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4682
mbed_official 237:f3da66175598 4683 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4684
mbed_official 237:f3da66175598 4685 /* Enable timer(s) counter */
mbed_official 237:f3da66175598 4686 hhrtim->Instance->sMasterRegs.MCR |= (Timers);
mbed_official 237:f3da66175598 4687
mbed_official 237:f3da66175598 4688 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4689
mbed_official 237:f3da66175598 4690 /* Process Unlocked */
mbed_official 237:f3da66175598 4691 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4692
mbed_official 237:f3da66175598 4693 return HAL_OK;
mbed_official 237:f3da66175598 4694 }
mbed_official 237:f3da66175598 4695
mbed_official 237:f3da66175598 4696 /**
mbed_official 237:f3da66175598 4697 * @brief Stops the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4698 * Timers can be combined (ORed) to allow for simultaneous counter stop
mbed_official 237:f3da66175598 4699 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4700 * @param Timers: Timer counter(s) to stop
mbed_official 237:f3da66175598 4701 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4702 * @arg HRTIM_TIMER_MASTER
mbed_official 237:f3da66175598 4703 * @arg HRTIM_TIMER_A
mbed_official 237:f3da66175598 4704 * @arg HRTIM_TIMER_B
mbed_official 237:f3da66175598 4705 * @arg HRTIM_TIMER_C
mbed_official 237:f3da66175598 4706 * @arg HRTIM_TIMER_D
mbed_official 237:f3da66175598 4707 * @arg HRTIM_TIMER_E
mbed_official 237:f3da66175598 4708 * @retval HAL status
mbed_official 237:f3da66175598 4709 * @note The counter of a timer is stopped only if all timer outputs are disabled
mbed_official 237:f3da66175598 4710 */
mbed_official 237:f3da66175598 4711 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStop(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4712 uint32_t Timers)
mbed_official 237:f3da66175598 4713 {
mbed_official 237:f3da66175598 4714 /* Check the parameters */
mbed_official 237:f3da66175598 4715 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4716
mbed_official 237:f3da66175598 4717 /* Process Locked */
mbed_official 237:f3da66175598 4718 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4719
mbed_official 237:f3da66175598 4720 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4721
mbed_official 237:f3da66175598 4722 /* Disable timer(s) counter */
mbed_official 237:f3da66175598 4723 hhrtim->Instance->sMasterRegs.MCR &= ~(Timers);
mbed_official 237:f3da66175598 4724
mbed_official 237:f3da66175598 4725 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4726
mbed_official 237:f3da66175598 4727 /* Process Unlocked */
mbed_official 237:f3da66175598 4728 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4729
mbed_official 237:f3da66175598 4730 return HAL_OK;
mbed_official 237:f3da66175598 4731 }
mbed_official 237:f3da66175598 4732
mbed_official 237:f3da66175598 4733 /**
mbed_official 237:f3da66175598 4734 * @brief Starts the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4735 * Timers can be combined (ORed) to allow for simultaneous counter start
mbed_official 237:f3da66175598 4736 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4737 * @param Timers: Timer counter(s) to start
mbed_official 237:f3da66175598 4738 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4739 * @arg HRTIM_TIMERID_MASTER
mbed_official 237:f3da66175598 4740 * @arg HRTIM_TIMERID_A
mbed_official 237:f3da66175598 4741 * @arg HRTIM_TIMERID_B
mbed_official 237:f3da66175598 4742 * @arg HRTIM_TIMERID_C
mbed_official 237:f3da66175598 4743 * @arg HRTIM_TIMERID_D
mbed_official 237:f3da66175598 4744 * @arg HRTIM_TIMERID_E
mbed_official 237:f3da66175598 4745 * @note HRTIM interrupts (e.g. faults interrupts) and interrupts related
mbed_official 237:f3da66175598 4746 * to the timers to start are enabled within this function.
mbed_official 237:f3da66175598 4747 * Interrupts to enable are selected through HAL_HRTIM_WaveformTimerConfig
mbed_official 237:f3da66175598 4748 * function.
mbed_official 237:f3da66175598 4749 * @retval HAL status
mbed_official 237:f3da66175598 4750 */
mbed_official 237:f3da66175598 4751 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStart_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4752 uint32_t Timers)
mbed_official 237:f3da66175598 4753 {
mbed_official 237:f3da66175598 4754 uint8_t timer_idx;
mbed_official 237:f3da66175598 4755
mbed_official 237:f3da66175598 4756 /* Check the parameters */
mbed_official 237:f3da66175598 4757 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4758
mbed_official 237:f3da66175598 4759 /* Process Locked */
mbed_official 237:f3da66175598 4760 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4761
mbed_official 237:f3da66175598 4762 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4763
mbed_official 237:f3da66175598 4764 /* Enable HRTIM interrupts (if required) */
mbed_official 237:f3da66175598 4765 __HAL_HRTIM_ENABLE_IT(hhrtim, hhrtim->Init.HRTIMInterruptResquests);
mbed_official 237:f3da66175598 4766
mbed_official 237:f3da66175598 4767 /* Enable master timer related interrupts (if required) */
mbed_official 237:f3da66175598 4768 if ((Timers & HRTIM_TIMERID_MASTER) != RESET)
mbed_official 237:f3da66175598 4769 {
mbed_official 237:f3da66175598 4770 __HAL_HRTIM_MASTER_ENABLE_IT(hhrtim,
mbed_official 237:f3da66175598 4771 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].InterruptRequests);
mbed_official 237:f3da66175598 4772 }
mbed_official 237:f3da66175598 4773
mbed_official 237:f3da66175598 4774 /* Enable timing unit related interrupts (if required) */
mbed_official 237:f3da66175598 4775 for (timer_idx = HRTIM_TIMERINDEX_TIMER_A ;
mbed_official 237:f3da66175598 4776 timer_idx < HRTIM_TIMERINDEX_MASTER ;
mbed_official 237:f3da66175598 4777 timer_idx++)
mbed_official 237:f3da66175598 4778 {
mbed_official 237:f3da66175598 4779 if ((Timers & TimerIdxToTimerId[timer_idx]) != RESET)
mbed_official 237:f3da66175598 4780 {
mbed_official 237:f3da66175598 4781 __HAL_HRTIM_TIMER_ENABLE_IT(hhrtim,
mbed_official 237:f3da66175598 4782 timer_idx,
mbed_official 237:f3da66175598 4783 hhrtim->TimerParam[timer_idx].InterruptRequests);
mbed_official 237:f3da66175598 4784 }
mbed_official 237:f3da66175598 4785 }
mbed_official 237:f3da66175598 4786
mbed_official 237:f3da66175598 4787 /* Enable timer(s) counter */
mbed_official 237:f3da66175598 4788 hhrtim->Instance->sMasterRegs.MCR |= (Timers);
mbed_official 237:f3da66175598 4789
mbed_official 237:f3da66175598 4790 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4791
mbed_official 237:f3da66175598 4792 /* Process Unlocked */
mbed_official 237:f3da66175598 4793 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4794
mbed_official 237:f3da66175598 4795 return HAL_OK;}
mbed_official 237:f3da66175598 4796
mbed_official 237:f3da66175598 4797 /**
mbed_official 237:f3da66175598 4798 * @brief Stops the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4799 * Timers can be combined (ORed) to allow for simultaneous counter stop
mbed_official 237:f3da66175598 4800 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4801 * @param Timers: Timer counter(s) to stop
mbed_official 237:f3da66175598 4802 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4803 * @arg HRTIM_TIMER_MASTER
mbed_official 237:f3da66175598 4804 * @arg HRTIM_TIMER_A
mbed_official 237:f3da66175598 4805 * @arg HRTIM_TIMER_B
mbed_official 237:f3da66175598 4806 * @arg HRTIM_TIMER_C
mbed_official 237:f3da66175598 4807 * @arg HRTIM_TIMER_D
mbed_official 237:f3da66175598 4808 * @arg HRTIM_TIMER_E
mbed_official 237:f3da66175598 4809 * @retval HAL status
mbed_official 237:f3da66175598 4810 * @note The counter of a timer is stopped only if all timer outputs are disabled
mbed_official 237:f3da66175598 4811 * @note All enabled timer related interrupts are disabled.
mbed_official 237:f3da66175598 4812 */
mbed_official 237:f3da66175598 4813 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStop_IT(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4814 uint32_t Timers)
mbed_official 237:f3da66175598 4815 {
mbed_official 237:f3da66175598 4816 /* ++ WA */
mbed_official 237:f3da66175598 4817 __IO uint32_t delai = (uint32_t)(0x17F);
mbed_official 237:f3da66175598 4818 /* -- WA */
mbed_official 237:f3da66175598 4819
mbed_official 237:f3da66175598 4820 uint8_t timer_idx;
mbed_official 237:f3da66175598 4821
mbed_official 237:f3da66175598 4822 /* Check the parameters */
mbed_official 237:f3da66175598 4823 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4824
mbed_official 237:f3da66175598 4825 /* Process Locked */
mbed_official 237:f3da66175598 4826 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4827
mbed_official 237:f3da66175598 4828 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4829
mbed_official 237:f3da66175598 4830 /* Disable HRTIM interrupts (if required) */
mbed_official 237:f3da66175598 4831 __HAL_HRTIM_DISABLE_IT(hhrtim, hhrtim->Init.HRTIMInterruptResquests);
mbed_official 237:f3da66175598 4832
mbed_official 237:f3da66175598 4833 /* Disable master timer related interrupts (if required) */
mbed_official 237:f3da66175598 4834 if ((Timers & HRTIM_TIMERID_MASTER) != RESET)
mbed_official 237:f3da66175598 4835 {
mbed_official 237:f3da66175598 4836 /* Interrupts enable flag must be cleared one by one */
mbed_official 237:f3da66175598 4837 __HAL_HRTIM_MASTER_DISABLE_IT(hhrtim, hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].InterruptRequests);
mbed_official 237:f3da66175598 4838 }
mbed_official 237:f3da66175598 4839
mbed_official 237:f3da66175598 4840 /* Disable timing unit related interrupts (if required) */
mbed_official 237:f3da66175598 4841 for (timer_idx = HRTIM_TIMERINDEX_TIMER_A ;
mbed_official 237:f3da66175598 4842 timer_idx < HRTIM_TIMERINDEX_MASTER ;
mbed_official 237:f3da66175598 4843 timer_idx++)
mbed_official 237:f3da66175598 4844 {
mbed_official 237:f3da66175598 4845 if ((Timers & TimerIdxToTimerId[timer_idx]) != RESET)
mbed_official 237:f3da66175598 4846 {
mbed_official 237:f3da66175598 4847 __HAL_HRTIM_TIMER_DISABLE_IT(hhrtim, timer_idx, hhrtim->TimerParam[timer_idx].InterruptRequests);
mbed_official 237:f3da66175598 4848 }
mbed_official 237:f3da66175598 4849 }
mbed_official 237:f3da66175598 4850
mbed_official 237:f3da66175598 4851 /* ++ WA */
mbed_official 237:f3da66175598 4852 do { delai--; } while (delai != 0);
mbed_official 237:f3da66175598 4853 /* -- WA */
mbed_official 237:f3da66175598 4854
mbed_official 237:f3da66175598 4855 /* Disable timer(s) counter */
mbed_official 237:f3da66175598 4856 hhrtim->Instance->sMasterRegs.MCR &= ~(Timers);
mbed_official 237:f3da66175598 4857
mbed_official 237:f3da66175598 4858 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4859
mbed_official 237:f3da66175598 4860 /* Process Unlocked */
mbed_official 237:f3da66175598 4861 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4862
mbed_official 237:f3da66175598 4863 return HAL_OK;
mbed_official 237:f3da66175598 4864 }
mbed_official 237:f3da66175598 4865
mbed_official 237:f3da66175598 4866 /**
mbed_official 237:f3da66175598 4867 * @brief Starts the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4868 * Timers can be combined (ORed) to allow for simultaneous counter start
mbed_official 237:f3da66175598 4869 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4870 * @param Timers: Timer counter(s) to start
mbed_official 237:f3da66175598 4871 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4872 * HRTIM_TIMER_MASTER
mbed_official 237:f3da66175598 4873 * @arg HRTIM_TIMER_A
mbed_official 237:f3da66175598 4874 * @arg HRTIM_TIMER_B
mbed_official 237:f3da66175598 4875 * @arg HRTIM_TIMER_C
mbed_official 237:f3da66175598 4876 * @arg HRTIM_TIMER_D
mbed_official 237:f3da66175598 4877 * @arg HRTIM_TIMER_E
mbed_official 237:f3da66175598 4878 * @retval HAL status
mbed_official 237:f3da66175598 4879 * @note This function enables the dma request(s) mentionned in the timer
mbed_official 237:f3da66175598 4880 * configuration data structure for every timers to start.
mbed_official 237:f3da66175598 4881 * @note The source memory address, the destination memory address and the
mbed_official 237:f3da66175598 4882 * size of each DMA transfer are specified at timer configuration time
mbed_official 237:f3da66175598 4883 * (see HAL_HRTIM_WaveformTimerConfig)
mbed_official 237:f3da66175598 4884 */
mbed_official 237:f3da66175598 4885 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStart_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4886 uint32_t Timers)
mbed_official 237:f3da66175598 4887 {
mbed_official 237:f3da66175598 4888 uint8_t timer_idx;
mbed_official 237:f3da66175598 4889 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 4890
mbed_official 237:f3da66175598 4891 /* Check the parameters */
mbed_official 237:f3da66175598 4892 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4893
mbed_official 237:f3da66175598 4894 if((hhrtim->State == HAL_HRTIM_STATE_BUSY))
mbed_official 237:f3da66175598 4895 {
mbed_official 237:f3da66175598 4896 return HAL_BUSY;
mbed_official 237:f3da66175598 4897 }
mbed_official 237:f3da66175598 4898
mbed_official 237:f3da66175598 4899 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4900
mbed_official 237:f3da66175598 4901 /* Process Locked */
mbed_official 237:f3da66175598 4902 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 4903
mbed_official 237:f3da66175598 4904 if (((Timers & HRTIM_TIMERID_MASTER) != RESET) &&
mbed_official 237:f3da66175598 4905 (hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMARequests != 0))
mbed_official 237:f3da66175598 4906 {
mbed_official 237:f3da66175598 4907 /* Set the DMA error callback */
mbed_official 237:f3da66175598 4908 hhrtim->hdmaMaster->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 4909
mbed_official 237:f3da66175598 4910 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 4911 hhrtim->hdmaMaster->XferCpltCallback = HRTIM_DMAMasterCplt;
mbed_official 237:f3da66175598 4912
mbed_official 237:f3da66175598 4913 /* Enable the DMA channel */
mbed_official 237:f3da66175598 4914 HAL_DMA_Start_IT(hhrtim->hdmaMaster,
mbed_official 237:f3da66175598 4915 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMASrcAddress,
mbed_official 237:f3da66175598 4916 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMADstAddress,
mbed_official 237:f3da66175598 4917 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMASize);
mbed_official 237:f3da66175598 4918
mbed_official 237:f3da66175598 4919 /* Enable the timer DMA request */
mbed_official 237:f3da66175598 4920 __HAL_HRTIM_MASTER_ENABLE_DMA(hhrtim,
mbed_official 237:f3da66175598 4921 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMARequests);
mbed_official 237:f3da66175598 4922 }
mbed_official 237:f3da66175598 4923
mbed_official 237:f3da66175598 4924 for (timer_idx = HRTIM_TIMERINDEX_TIMER_A ;
mbed_official 237:f3da66175598 4925 timer_idx < HRTIM_TIMERINDEX_MASTER ;
mbed_official 237:f3da66175598 4926 timer_idx++)
mbed_official 237:f3da66175598 4927 {
mbed_official 237:f3da66175598 4928 if (((Timers & TimerIdxToTimerId[timer_idx]) != RESET) &&
mbed_official 237:f3da66175598 4929 (hhrtim->TimerParam[timer_idx].DMARequests != 0))
mbed_official 237:f3da66175598 4930 {
mbed_official 237:f3da66175598 4931 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 4932 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, timer_idx);
mbed_official 237:f3da66175598 4933
mbed_official 237:f3da66175598 4934 /* Set the DMA error callback */
mbed_official 237:f3da66175598 4935 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 4936
mbed_official 237:f3da66175598 4937 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 4938 hdma->XferCpltCallback = HRTIM_DMATimerxCplt;
mbed_official 237:f3da66175598 4939
mbed_official 237:f3da66175598 4940 /* Enable the DMA channel */
mbed_official 237:f3da66175598 4941 HAL_DMA_Start_IT(hdma,
mbed_official 237:f3da66175598 4942 hhrtim->TimerParam[timer_idx].DMASrcAddress,
mbed_official 237:f3da66175598 4943 hhrtim->TimerParam[timer_idx].DMADstAddress,
mbed_official 237:f3da66175598 4944 hhrtim->TimerParam[timer_idx].DMASize);
mbed_official 237:f3da66175598 4945
mbed_official 237:f3da66175598 4946 /* Enable the timer DMA request */
mbed_official 237:f3da66175598 4947 __HAL_HRTIM_TIMER_ENABLE_DMA(hhrtim,
mbed_official 237:f3da66175598 4948 timer_idx,
mbed_official 237:f3da66175598 4949 hhrtim->TimerParam[timer_idx].DMARequests);
mbed_official 237:f3da66175598 4950 }
mbed_official 237:f3da66175598 4951 }
mbed_official 237:f3da66175598 4952
mbed_official 237:f3da66175598 4953 /* Enable the timer counter */
mbed_official 237:f3da66175598 4954 __HAL_HRTIM_ENABLE(hhrtim, Timers);
mbed_official 237:f3da66175598 4955
mbed_official 237:f3da66175598 4956 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 4957
mbed_official 237:f3da66175598 4958 /* Process Unlocked */
mbed_official 237:f3da66175598 4959 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 4960
mbed_official 237:f3da66175598 4961 return HAL_OK;
mbed_official 237:f3da66175598 4962 }
mbed_official 237:f3da66175598 4963
mbed_official 237:f3da66175598 4964 /**
mbed_official 237:f3da66175598 4965 * @brief Stops the counter of the designated timer(s) operating in waveform mode
mbed_official 237:f3da66175598 4966 * Timers can be combined (ORed) to allow for simultaneous counter stop
mbed_official 237:f3da66175598 4967 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 4968 * @param Timers: Timer counter(s) to stop
mbed_official 237:f3da66175598 4969 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 4970 * @arg HRTIM_TIMER_MASTER
mbed_official 237:f3da66175598 4971 * @arg HRTIM_TIMER_A
mbed_official 237:f3da66175598 4972 * @arg HRTIM_TIMER_B
mbed_official 237:f3da66175598 4973 * @arg HRTIM_TIMER_C
mbed_official 237:f3da66175598 4974 * @arg HRTIM_TIMER_D
mbed_official 237:f3da66175598 4975 * @arg HRTIM_TIMER_E
mbed_official 237:f3da66175598 4976 * @retval HAL status
mbed_official 237:f3da66175598 4977 * @note The counter of a timer is stopped only if all timer outputs are disabled
mbed_official 237:f3da66175598 4978 * @note All enabled timer related DMA requests are disabled.
mbed_official 237:f3da66175598 4979 */
mbed_official 237:f3da66175598 4980 HAL_StatusTypeDef HAL_HRTIM_WaveformCounterStop_DMA(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 4981 uint32_t Timers)
mbed_official 237:f3da66175598 4982 {
mbed_official 237:f3da66175598 4983 uint8_t timer_idx;
mbed_official 237:f3da66175598 4984 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 4985
mbed_official 237:f3da66175598 4986 /* Check the parameters */
mbed_official 237:f3da66175598 4987 assert_param(IS_HRTIM_TIMERID(Timers));
mbed_official 237:f3da66175598 4988
mbed_official 237:f3da66175598 4989 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 4990
mbed_official 237:f3da66175598 4991 if (((Timers & HRTIM_TIMERID_MASTER) != RESET) &&
mbed_official 237:f3da66175598 4992 (hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMARequests != 0))
mbed_official 237:f3da66175598 4993 {
mbed_official 237:f3da66175598 4994 /* Disable the DMA */
mbed_official 237:f3da66175598 4995 HAL_DMA_Abort(hhrtim->hdmaMaster);
mbed_official 237:f3da66175598 4996
mbed_official 237:f3da66175598 4997 /* Disable the DMA request(s) */
mbed_official 237:f3da66175598 4998 __HAL_HRTIM_MASTER_DISABLE_DMA(hhrtim,
mbed_official 237:f3da66175598 4999 hhrtim->TimerParam[HRTIM_TIMERINDEX_MASTER].DMARequests);
mbed_official 237:f3da66175598 5000 }
mbed_official 237:f3da66175598 5001
mbed_official 237:f3da66175598 5002 for (timer_idx = HRTIM_TIMERINDEX_TIMER_A ;
mbed_official 237:f3da66175598 5003 timer_idx < HRTIM_TIMERINDEX_MASTER ;
mbed_official 237:f3da66175598 5004 timer_idx++)
mbed_official 237:f3da66175598 5005 {
mbed_official 237:f3da66175598 5006 if (((Timers & TimerIdxToTimerId[timer_idx]) != RESET) &&
mbed_official 237:f3da66175598 5007 (hhrtim->TimerParam[timer_idx].DMARequests != 0))
mbed_official 237:f3da66175598 5008 {
mbed_official 237:f3da66175598 5009 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 5010 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, timer_idx);
mbed_official 237:f3da66175598 5011
mbed_official 237:f3da66175598 5012 /* Disable the DMA */
mbed_official 237:f3da66175598 5013 HAL_DMA_Abort(hdma);
mbed_official 237:f3da66175598 5014
mbed_official 237:f3da66175598 5015 /* Disable the DMA request(s) */
mbed_official 237:f3da66175598 5016 __HAL_HRTIM_TIMER_DISABLE_DMA(hhrtim,
mbed_official 237:f3da66175598 5017 timer_idx,
mbed_official 237:f3da66175598 5018 hhrtim->TimerParam[timer_idx].DMARequests);
mbed_official 237:f3da66175598 5019 }
mbed_official 237:f3da66175598 5020 }
mbed_official 237:f3da66175598 5021
mbed_official 237:f3da66175598 5022 /* Disable the timer counter */
mbed_official 237:f3da66175598 5023 __HAL_HRTIM_DISABLE(hhrtim, Timers);
mbed_official 237:f3da66175598 5024
mbed_official 237:f3da66175598 5025 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5026
mbed_official 237:f3da66175598 5027 return HAL_OK;
mbed_official 237:f3da66175598 5028 }
mbed_official 237:f3da66175598 5029
mbed_official 237:f3da66175598 5030 /**
mbed_official 237:f3da66175598 5031 * @brief Enables or disables the HRTIM burst mode controller.
mbed_official 237:f3da66175598 5032 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5033 * @param Enable: Burst mode controller enabling
mbed_official 237:f3da66175598 5034 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5035 * @arg HRTIM_BURSTMODECTL_ENABLED: Burst mode enabled
mbed_official 237:f3da66175598 5036 * @arg HRTIM_BURSTMODECTL_DISABLED: Burst mode disabled
mbed_official 237:f3da66175598 5037 * @retval HAL status
mbed_official 237:f3da66175598 5038 * @note This function must be called after starting the timer(s)
mbed_official 237:f3da66175598 5039 */
mbed_official 237:f3da66175598 5040 HAL_StatusTypeDef HAL_HRTIM_BurstModeCtl(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5041 uint32_t Enable)
mbed_official 237:f3da66175598 5042 {
mbed_official 237:f3da66175598 5043 uint32_t hrtim_bmcr;
mbed_official 237:f3da66175598 5044
mbed_official 237:f3da66175598 5045 /* Check parameters */
mbed_official 237:f3da66175598 5046 assert_param(IS_HRTIM_BURSTMODECTL(Enable));
mbed_official 237:f3da66175598 5047
mbed_official 237:f3da66175598 5048 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 5049 {
mbed_official 237:f3da66175598 5050 return HAL_BUSY;
mbed_official 237:f3da66175598 5051 }
mbed_official 237:f3da66175598 5052
mbed_official 237:f3da66175598 5053 /* Process Locked */
mbed_official 237:f3da66175598 5054 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5055
mbed_official 237:f3da66175598 5056 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5057
mbed_official 237:f3da66175598 5058 /* Enable/Disable the burst mode controller */
mbed_official 237:f3da66175598 5059 hrtim_bmcr = hhrtim->Instance->sCommonRegs.BMCR;
mbed_official 237:f3da66175598 5060 hrtim_bmcr &= ~(HRTIM_BMCR_BME);
mbed_official 237:f3da66175598 5061 hrtim_bmcr |= Enable;
mbed_official 237:f3da66175598 5062
mbed_official 237:f3da66175598 5063 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 5064 hhrtim->Instance->sCommonRegs.BMCR = hrtim_bmcr;
mbed_official 237:f3da66175598 5065
mbed_official 237:f3da66175598 5066 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5067
mbed_official 237:f3da66175598 5068 /* Process Unlocked */
mbed_official 237:f3da66175598 5069 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5070
mbed_official 237:f3da66175598 5071 return HAL_OK;
mbed_official 237:f3da66175598 5072 }
mbed_official 237:f3da66175598 5073
mbed_official 237:f3da66175598 5074 /**
mbed_official 237:f3da66175598 5075 * @brief Triggers the burst mode operation.
mbed_official 237:f3da66175598 5076 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5077 * @retval HAL status
mbed_official 237:f3da66175598 5078 */
mbed_official 237:f3da66175598 5079 HAL_StatusTypeDef HAL_HRTIM_BurstModeSoftwareTrigger(HRTIM_HandleTypeDef *hhrtim)
mbed_official 237:f3da66175598 5080 {
mbed_official 237:f3da66175598 5081 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 5082 {
mbed_official 237:f3da66175598 5083 return HAL_BUSY;
mbed_official 237:f3da66175598 5084 }
mbed_official 237:f3da66175598 5085
mbed_official 237:f3da66175598 5086 /* Process Locked */
mbed_official 237:f3da66175598 5087 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5088
mbed_official 237:f3da66175598 5089 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5090
mbed_official 237:f3da66175598 5091 /* Software trigger of the burst mode controller */
mbed_official 237:f3da66175598 5092 hhrtim->Instance->sCommonRegs.BMTRGR |= HRTIM_BMTRGR_SW;
mbed_official 237:f3da66175598 5093
mbed_official 237:f3da66175598 5094 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5095
mbed_official 237:f3da66175598 5096 /* Process Unlocked */
mbed_official 237:f3da66175598 5097 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5098
mbed_official 237:f3da66175598 5099 return HAL_OK;
mbed_official 237:f3da66175598 5100 }
mbed_official 237:f3da66175598 5101
mbed_official 237:f3da66175598 5102 /**
mbed_official 237:f3da66175598 5103 * @brief Triggers a software capture on the designed capture unit
mbed_official 237:f3da66175598 5104 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5105 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5106 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5107 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5108 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5109 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5110 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5111 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5112 * @param CaptureUnit: Capture unit to trig
mbed_official 237:f3da66175598 5113 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5114 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 5115 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 5116 * @retval HAL status
mbed_official 237:f3da66175598 5117 * @note The 'software capture' bit in the capure configuration register is
mbed_official 237:f3da66175598 5118 * automatically reset by hardware
mbed_official 237:f3da66175598 5119 */
mbed_official 237:f3da66175598 5120 HAL_StatusTypeDef HAL_HRTIM_SoftwareCapture(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5121 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5122 uint32_t CaptureUnit)
mbed_official 237:f3da66175598 5123 {
mbed_official 237:f3da66175598 5124 /* Check parameters */
mbed_official 237:f3da66175598 5125 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 5126 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureUnit));
mbed_official 237:f3da66175598 5127
mbed_official 237:f3da66175598 5128 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 5129 {
mbed_official 237:f3da66175598 5130 return HAL_BUSY;
mbed_official 237:f3da66175598 5131 }
mbed_official 237:f3da66175598 5132
mbed_official 237:f3da66175598 5133 /* Process Locked */
mbed_official 237:f3da66175598 5134 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5135
mbed_official 237:f3da66175598 5136 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5137
mbed_official 237:f3da66175598 5138 /* Force a software capture on concerned capture unit */
mbed_official 237:f3da66175598 5139 switch (CaptureUnit)
mbed_official 237:f3da66175598 5140 {
mbed_official 237:f3da66175598 5141 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 5142 {
mbed_official 237:f3da66175598 5143 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xCR |= HRTIM_CPT1CR_SWCPT;
mbed_official 237:f3da66175598 5144 }
mbed_official 237:f3da66175598 5145 break;
mbed_official 237:f3da66175598 5146 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 5147 {
mbed_official 237:f3da66175598 5148 hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xCR |= HRTIM_CPT2CR_SWCPT;
mbed_official 237:f3da66175598 5149 }
mbed_official 237:f3da66175598 5150 break;
mbed_official 237:f3da66175598 5151 }
mbed_official 237:f3da66175598 5152
mbed_official 237:f3da66175598 5153 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5154
mbed_official 237:f3da66175598 5155 /* Process Unlocked */
mbed_official 237:f3da66175598 5156 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5157
mbed_official 237:f3da66175598 5158 return HAL_OK;
mbed_official 237:f3da66175598 5159 }
mbed_official 237:f3da66175598 5160
mbed_official 237:f3da66175598 5161 /**
mbed_official 237:f3da66175598 5162 * @brief Triggers the update of the registers of one or several timers
mbed_official 237:f3da66175598 5163 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5164 * @param Timers: timers concerned with the software register update
mbed_official 237:f3da66175598 5165 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 5166 * @arg HRTIM_TIMERUPDATE_MASTER
mbed_official 237:f3da66175598 5167 * @arg HRTIM_TIMERUPDATE_A
mbed_official 237:f3da66175598 5168 * @arg HRTIM_TIMERUPDATE_B
mbed_official 237:f3da66175598 5169 * @arg HRTIM_TIMERUPDATE_C
mbed_official 237:f3da66175598 5170 * @arg HRTIM_TIMERUPDATE_D
mbed_official 237:f3da66175598 5171 * @arg HRTIM_TIMERUPDATE_E
mbed_official 237:f3da66175598 5172 * @retval HAL status
mbed_official 237:f3da66175598 5173 * @note The 'software update' bits in the HRTIM conrol register 2 register are
mbed_official 237:f3da66175598 5174 * automatically reset by hardware
mbed_official 237:f3da66175598 5175 */
mbed_official 237:f3da66175598 5176 HAL_StatusTypeDef HAL_HRTIM_SoftwareUpdate(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5177 uint32_t Timers)
mbed_official 237:f3da66175598 5178 {
mbed_official 237:f3da66175598 5179 /* Check parameters */
mbed_official 237:f3da66175598 5180 assert_param(IS_HRTIM_TIMERUPDATE(Timers));
mbed_official 237:f3da66175598 5181
mbed_official 237:f3da66175598 5182 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 5183 {
mbed_official 237:f3da66175598 5184 return HAL_BUSY;
mbed_official 237:f3da66175598 5185 }
mbed_official 237:f3da66175598 5186
mbed_official 237:f3da66175598 5187 /* Process Locked */
mbed_official 237:f3da66175598 5188 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5189
mbed_official 237:f3da66175598 5190 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5191
mbed_official 237:f3da66175598 5192 /* Force timer(s) registers update */
mbed_official 237:f3da66175598 5193 hhrtim->Instance->sCommonRegs.CR2 |= Timers;
mbed_official 237:f3da66175598 5194
mbed_official 237:f3da66175598 5195 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5196
mbed_official 237:f3da66175598 5197 /* Process Unlocked */
mbed_official 237:f3da66175598 5198 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5199
mbed_official 237:f3da66175598 5200 return HAL_OK;
mbed_official 237:f3da66175598 5201 }
mbed_official 237:f3da66175598 5202
mbed_official 237:f3da66175598 5203 /**
mbed_official 237:f3da66175598 5204 * @brief Triggers the reset of one or several timers
mbed_official 237:f3da66175598 5205 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5206 * @param Timers: timers concerned with the software counter reset
mbed_official 237:f3da66175598 5207 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 5208 * @arg HRTIM_TIMERRESET_MASTER
mbed_official 237:f3da66175598 5209 * @arg HRTIM_TIMERRESET_TIMER_A
mbed_official 237:f3da66175598 5210 * @arg HRTIM_TIMERRESET_TIMER_B
mbed_official 237:f3da66175598 5211 * @arg HRTIM_TIMERRESET_TIMER_C
mbed_official 237:f3da66175598 5212 * @arg HRTIM_TIMERRESET_TIMER_D
mbed_official 237:f3da66175598 5213 * @arg HRTIM_TIMERRESET_TIMER_E
mbed_official 237:f3da66175598 5214 * @retval HAL status
mbed_official 237:f3da66175598 5215 * @note The 'software reset' bits in the HRTIM conrol register 2 are
mbed_official 237:f3da66175598 5216 * automatically reset by hardware
mbed_official 237:f3da66175598 5217 */
mbed_official 237:f3da66175598 5218 HAL_StatusTypeDef HAL_HRTIM_SoftwareReset(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5219 uint32_t Timers)
mbed_official 237:f3da66175598 5220 {
mbed_official 237:f3da66175598 5221 /* Check parameters */
mbed_official 237:f3da66175598 5222 assert_param(IS_HRTIM_TIMERRESET(Timers));
mbed_official 237:f3da66175598 5223
mbed_official 237:f3da66175598 5224 if(hhrtim->State == HAL_HRTIM_STATE_BUSY)
mbed_official 237:f3da66175598 5225 {
mbed_official 237:f3da66175598 5226 return HAL_BUSY;
mbed_official 237:f3da66175598 5227 }
mbed_official 237:f3da66175598 5228
mbed_official 237:f3da66175598 5229 /* Process Locked */
mbed_official 237:f3da66175598 5230 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5231
mbed_official 237:f3da66175598 5232 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5233
mbed_official 237:f3da66175598 5234 /* Force timer(s) registers reset */
mbed_official 237:f3da66175598 5235 hhrtim->Instance->sCommonRegs.CR2 = Timers;
mbed_official 237:f3da66175598 5236
mbed_official 237:f3da66175598 5237 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5238
mbed_official 237:f3da66175598 5239 /* Process Unlocked */
mbed_official 237:f3da66175598 5240 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5241
mbed_official 237:f3da66175598 5242 return HAL_OK;
mbed_official 237:f3da66175598 5243 }
mbed_official 237:f3da66175598 5244
mbed_official 237:f3da66175598 5245 /**
mbed_official 237:f3da66175598 5246 * @brief Starts a burst DMA operation to update HRTIM control registers content
mbed_official 237:f3da66175598 5247 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5248 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5249 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5250 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 5251 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5252 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5253 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5254 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5255 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5256 * @param BurstBufferAddress: address of the buffer the HRTIM control registers
mbed_official 237:f3da66175598 5257 * content will be updated from.
mbed_official 237:f3da66175598 5258 * @param BurstBufferLength: size (in WORDS) of the burst buffer.
mbed_official 237:f3da66175598 5259 * @retval HAL status
mbed_official 237:f3da66175598 5260 * @note The TimerIdx parameter determines the dma channel to be used by the
mbed_official 237:f3da66175598 5261 * DMA burst controller (see below)
mbed_official 237:f3da66175598 5262 * HRTIM_TIMERINDEX_MASTER: DMA channel 2 is used by the DMA burst controller
mbed_official 237:f3da66175598 5263 * HRTIM_TIMERINDEX_TIMER_A: DMA channel 3 is used by the DMA burst controller
mbed_official 237:f3da66175598 5264 * HRTIM_TIMERINDEX_TIMER_B: DMA channel 4 is used by the DMA burst controller
mbed_official 237:f3da66175598 5265 * HRTIM_TIMERINDEX_TIMER_C: DMA channel 5 is used by the DMA burst controller
mbed_official 237:f3da66175598 5266 * HRTIM_TIMERINDEX_TIMER_D: DMA channel 6 is used by the DMA burst controller
mbed_official 237:f3da66175598 5267 * HRTIM_TIMERINDEX_TIMER_E: DMA channel 7 is used by the DMA burst controller
mbed_official 237:f3da66175598 5268 */
mbed_official 237:f3da66175598 5269 HAL_StatusTypeDef HAL_HRTIM_BurstDMATransfer(HRTIM_HandleTypeDef *hhrtim,
mbed_official 237:f3da66175598 5270 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5271 uint32_t BurstBufferAddress,
mbed_official 237:f3da66175598 5272 uint32_t BurstBufferLength)
mbed_official 237:f3da66175598 5273 {
mbed_official 237:f3da66175598 5274 DMA_HandleTypeDef * hdma;
mbed_official 237:f3da66175598 5275
mbed_official 237:f3da66175598 5276 /* Check the parameters */
mbed_official 237:f3da66175598 5277 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
mbed_official 237:f3da66175598 5278
mbed_official 237:f3da66175598 5279 if((hhrtim->State == HAL_HRTIM_STATE_BUSY))
mbed_official 237:f3da66175598 5280 {
mbed_official 237:f3da66175598 5281 return HAL_BUSY;
mbed_official 237:f3da66175598 5282 }
mbed_official 237:f3da66175598 5283 if((hhrtim->State == HAL_HRTIM_STATE_READY))
mbed_official 237:f3da66175598 5284 {
mbed_official 237:f3da66175598 5285 if((BurstBufferAddress == 0 ) || (BurstBufferLength == 0))
mbed_official 237:f3da66175598 5286 {
mbed_official 237:f3da66175598 5287 return HAL_ERROR;
mbed_official 237:f3da66175598 5288 }
mbed_official 237:f3da66175598 5289 else
mbed_official 237:f3da66175598 5290 {
mbed_official 237:f3da66175598 5291 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5292 }
mbed_official 237:f3da66175598 5293 }
mbed_official 237:f3da66175598 5294
mbed_official 237:f3da66175598 5295 /* Process Locked */
mbed_official 237:f3da66175598 5296 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5297
mbed_official 237:f3da66175598 5298 /* Get the timer DMA handler */
mbed_official 237:f3da66175598 5299 hdma = HRTIM_GetDMAHandleFromTimerIdx(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 5300
mbed_official 237:f3da66175598 5301 /* Set the DMA transfer completed callback */
mbed_official 237:f3da66175598 5302 hdma->XferCpltCallback = HRTIM_BurstDMACplt;
mbed_official 237:f3da66175598 5303
mbed_official 237:f3da66175598 5304 /* Set the DMA error callback */
mbed_official 237:f3da66175598 5305 hdma->XferErrorCallback = HRTIM_DMAError ;
mbed_official 237:f3da66175598 5306
mbed_official 237:f3da66175598 5307 /* Enable the DMA channel */
mbed_official 237:f3da66175598 5308 HAL_DMA_Start_IT(hdma,
mbed_official 237:f3da66175598 5309 BurstBufferAddress,
mbed_official 237:f3da66175598 5310 (uint32_t)&(hhrtim->Instance->sCommonRegs.BDMADR),
mbed_official 237:f3da66175598 5311 BurstBufferLength);
mbed_official 237:f3da66175598 5312
mbed_official 237:f3da66175598 5313 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5314
mbed_official 237:f3da66175598 5315 /* Process Unlocked */
mbed_official 237:f3da66175598 5316 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5317
mbed_official 237:f3da66175598 5318 return HAL_OK;
mbed_official 237:f3da66175598 5319 }
mbed_official 237:f3da66175598 5320
mbed_official 237:f3da66175598 5321 /**
mbed_official 237:f3da66175598 5322 * @brief Enables the transfer from preload to active registers for one
mbed_official 237:f3da66175598 5323 * or several timing units (including master timer)
mbed_official 237:f3da66175598 5324 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5325 * @param Timers: Timer(s) concerned by the register preload enabling command
mbed_official 237:f3da66175598 5326 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 5327 * @arg HRTIM_TIMERUPDATE_MASTER
mbed_official 237:f3da66175598 5328 * @arg HRTIM_TIMERUPDATE_A
mbed_official 237:f3da66175598 5329 * @arg HRTIM_TIMERUPDATE_B
mbed_official 237:f3da66175598 5330 * @arg HRTIM_TIMERUPDATE_C
mbed_official 237:f3da66175598 5331 * @arg HRTIM_TIMERUPDATE_D
mbed_official 237:f3da66175598 5332 * @arg HRTIM_TIMERUPDATE_E
mbed_official 237:f3da66175598 5333 * @retval HAL status
mbed_official 237:f3da66175598 5334 */
mbed_official 237:f3da66175598 5335 HAL_StatusTypeDef HAL_HRTIM_UpdateEnable(HRTIM_HandleTypeDef *hhrtim,
mbed_official 237:f3da66175598 5336 uint32_t Timers)
mbed_official 237:f3da66175598 5337 {
mbed_official 237:f3da66175598 5338 /* Check the parameters */
mbed_official 237:f3da66175598 5339 assert_param(IS_HRTIM_TIMERUPDATE(Timers));
mbed_official 237:f3da66175598 5340
mbed_official 237:f3da66175598 5341 /* Process Locked */
mbed_official 237:f3da66175598 5342 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5343
mbed_official 237:f3da66175598 5344 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5345
mbed_official 237:f3da66175598 5346 /* Enable timer(s) registers update */
mbed_official 237:f3da66175598 5347 hhrtim->Instance->sCommonRegs.CR1 &= ~(Timers);
mbed_official 237:f3da66175598 5348
mbed_official 237:f3da66175598 5349 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5350
mbed_official 237:f3da66175598 5351 /* Process Unlocked */
mbed_official 237:f3da66175598 5352 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5353
mbed_official 237:f3da66175598 5354 return HAL_OK;
mbed_official 237:f3da66175598 5355 }
mbed_official 237:f3da66175598 5356
mbed_official 237:f3da66175598 5357 /**
mbed_official 237:f3da66175598 5358 * @brief Disables the transfer from preload to active registers for one
mbed_official 237:f3da66175598 5359 * or several timing units (including master timer)
mbed_official 237:f3da66175598 5360 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5361 * @param Timers: Timer(s) concerned by the register preload disabling command
mbed_official 237:f3da66175598 5362 * This parameter can be any combination of the following values:
mbed_official 237:f3da66175598 5363 * @arg HRTIM_TIMERUPDATE_MASTER
mbed_official 237:f3da66175598 5364 * @arg HRTIM_TIMERUPDATE_A
mbed_official 237:f3da66175598 5365 * @arg HRTIM_TIMERUPDATE_B
mbed_official 237:f3da66175598 5366 * @arg HRTIM_TIMERUPDATE_C
mbed_official 237:f3da66175598 5367 * @arg HRTIM_TIMERUPDATE_D
mbed_official 237:f3da66175598 5368 * @arg HRTIM_TIMERUPDATE_E
mbed_official 237:f3da66175598 5369 * @retval HAL status
mbed_official 237:f3da66175598 5370 */
mbed_official 237:f3da66175598 5371 HAL_StatusTypeDef HAL_HRTIM_UpdateDisable(HRTIM_HandleTypeDef *hhrtim,
mbed_official 237:f3da66175598 5372 uint32_t Timers)
mbed_official 237:f3da66175598 5373 {
mbed_official 237:f3da66175598 5374 /* Check the parameters */
mbed_official 237:f3da66175598 5375 assert_param(IS_HRTIM_TIMERUPDATE(Timers));
mbed_official 237:f3da66175598 5376
mbed_official 237:f3da66175598 5377 /* Process Locked */
mbed_official 237:f3da66175598 5378 __HAL_LOCK(hhrtim);
mbed_official 237:f3da66175598 5379
mbed_official 237:f3da66175598 5380 hhrtim->State = HAL_HRTIM_STATE_BUSY;
mbed_official 237:f3da66175598 5381
mbed_official 237:f3da66175598 5382 /* Enable timer(s) registers update */
mbed_official 237:f3da66175598 5383 hhrtim->Instance->sCommonRegs.CR1 |= (Timers);
mbed_official 237:f3da66175598 5384
mbed_official 237:f3da66175598 5385 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 5386
mbed_official 237:f3da66175598 5387 /* Process Unlocked */
mbed_official 237:f3da66175598 5388 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 5389
mbed_official 237:f3da66175598 5390 return HAL_OK;
mbed_official 237:f3da66175598 5391 }
mbed_official 237:f3da66175598 5392
mbed_official 237:f3da66175598 5393 /**
mbed_official 237:f3da66175598 5394 * @}
mbed_official 237:f3da66175598 5395 */
mbed_official 237:f3da66175598 5396
mbed_official 237:f3da66175598 5397 /** @defgroup HAL_HRTIM_Group9 HRTIM peripheral state functions
mbed_official 237:f3da66175598 5398 * @brief Functions used to get HRTIM or HRTIM timer specific
mbed_official 237:f3da66175598 5399 * information.
mbed_official 237:f3da66175598 5400 *
mbed_official 237:f3da66175598 5401 @verbatim
mbed_official 237:f3da66175598 5402 ===============================================================================
mbed_official 237:f3da66175598 5403 ##### Peripheral State functions #####
mbed_official 237:f3da66175598 5404 ===============================================================================
mbed_official 237:f3da66175598 5405 [..] This section provides functions allowing to:
mbed_official 237:f3da66175598 5406 (+) Get HRTIM HAL state
mbed_official 237:f3da66175598 5407 (+) Get captured value
mbed_official 237:f3da66175598 5408 (+) Get HRTIM timer output level
mbed_official 237:f3da66175598 5409 (+) Get HRTIM timer output state
mbed_official 237:f3da66175598 5410 (+) Get delayed protection status
mbed_official 237:f3da66175598 5411 (+) Get burst status
mbed_official 237:f3da66175598 5412 (+) Get current push-pull status
mbed_official 237:f3da66175598 5413 (+) Get idle push-pull status
mbed_official 237:f3da66175598 5414
mbed_official 237:f3da66175598 5415 @endverbatim
mbed_official 237:f3da66175598 5416 * @{
mbed_official 237:f3da66175598 5417 */
mbed_official 237:f3da66175598 5418
mbed_official 237:f3da66175598 5419 /**
mbed_official 237:f3da66175598 5420 * @brief return the HRTIM HAL state
mbed_official 237:f3da66175598 5421 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5422 * @retval HAL state
mbed_official 237:f3da66175598 5423 */
mbed_official 237:f3da66175598 5424 HAL_HRTIM_StateTypeDef HAL_HRTIM_GetState(HRTIM_HandleTypeDef* hhrtim)
mbed_official 237:f3da66175598 5425 {
mbed_official 237:f3da66175598 5426 /* Return ADC state */
mbed_official 237:f3da66175598 5427 return hhrtim->State;
mbed_official 237:f3da66175598 5428 }
mbed_official 237:f3da66175598 5429
mbed_official 237:f3da66175598 5430 /**
mbed_official 237:f3da66175598 5431 * @brief Returns actual value of the capture register of the designated capture unit
mbed_official 237:f3da66175598 5432 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5433 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5434 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5435 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5436 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5437 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5438 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5439 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5440 * @param CaptureUnit: Capture unit to trig
mbed_official 237:f3da66175598 5441 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5442 * @arg HRTIM_CAPTUREUNIT_1: Capture unit 1
mbed_official 237:f3da66175598 5443 * @arg HRTIM_CAPTUREUNIT_2: Capture unit 2
mbed_official 237:f3da66175598 5444 * @retval Captured value
mbed_official 237:f3da66175598 5445 */
mbed_official 237:f3da66175598 5446 uint32_t HAL_HRTIM_GetCapturedValue(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5447 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5448 uint32_t CaptureUnit)
mbed_official 237:f3da66175598 5449 {
mbed_official 237:f3da66175598 5450 uint32_t captured_value = 0;
mbed_official 237:f3da66175598 5451
mbed_official 237:f3da66175598 5452 /* Check parameters */
mbed_official 237:f3da66175598 5453 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 5454 assert_param(IS_HRTIM_CAPTUREUNIT(CaptureUnit));
mbed_official 237:f3da66175598 5455
mbed_official 237:f3da66175598 5456 /* Read captured value */
mbed_official 237:f3da66175598 5457 switch (CaptureUnit)
mbed_official 237:f3da66175598 5458 {
mbed_official 237:f3da66175598 5459 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 5460 {
mbed_official 237:f3da66175598 5461 captured_value = hhrtim->Instance->sTimerxRegs[TimerIdx].CPT1xR;
mbed_official 237:f3da66175598 5462 }
mbed_official 237:f3da66175598 5463 break;
mbed_official 237:f3da66175598 5464 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 5465 {
mbed_official 237:f3da66175598 5466 captured_value = hhrtim->Instance->sTimerxRegs[TimerIdx].CPT2xR;
mbed_official 237:f3da66175598 5467 }
mbed_official 237:f3da66175598 5468 break;
mbed_official 237:f3da66175598 5469 }
mbed_official 237:f3da66175598 5470
mbed_official 237:f3da66175598 5471 return captured_value;
mbed_official 237:f3da66175598 5472 }
mbed_official 237:f3da66175598 5473
mbed_official 237:f3da66175598 5474 /**
mbed_official 237:f3da66175598 5475 * @brief Returns actual level (active or inactive) of the designated output
mbed_official 237:f3da66175598 5476 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5477 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5478 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5479 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5480 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5481 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5482 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5483 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5484 * @param Output: Timer output
mbed_official 237:f3da66175598 5485 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5486 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 5487 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 5488 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 5489 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 5490 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 5491 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 5492 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 5493 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 5494 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 5495 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 5496 * @retval Output level
mbed_official 237:f3da66175598 5497 * @note Returned output level is taken before the output stage (chopper,
mbed_official 237:f3da66175598 5498 * polarity).
mbed_official 237:f3da66175598 5499 */
mbed_official 237:f3da66175598 5500 uint32_t HAL_HRTIM_WaveformGetOutputLevel(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5501 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5502 uint32_t Output)
mbed_official 237:f3da66175598 5503 {
mbed_official 237:f3da66175598 5504 uint32_t output_level = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5505
mbed_official 237:f3da66175598 5506 /* Check parameters */
mbed_official 237:f3da66175598 5507 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, Output));
mbed_official 237:f3da66175598 5508
mbed_official 237:f3da66175598 5509 /* Read the output level */
mbed_official 237:f3da66175598 5510 switch (Output)
mbed_official 237:f3da66175598 5511 {
mbed_official 237:f3da66175598 5512 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 5513 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 5514 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 5515 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 5516 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 5517 {
mbed_official 237:f3da66175598 5518 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_O1CPY) != RESET)
mbed_official 237:f3da66175598 5519 {
mbed_official 237:f3da66175598 5520 output_level = HRTIM_OUTPUTLEVEL_ACTIVE;
mbed_official 237:f3da66175598 5521 }
mbed_official 237:f3da66175598 5522 else
mbed_official 237:f3da66175598 5523 {
mbed_official 237:f3da66175598 5524 output_level = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5525 }
mbed_official 237:f3da66175598 5526 }
mbed_official 237:f3da66175598 5527 break;
mbed_official 237:f3da66175598 5528 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 5529 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 5530 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 5531 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 5532 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 5533 {
mbed_official 237:f3da66175598 5534 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_O2CPY) != RESET)
mbed_official 237:f3da66175598 5535 {
mbed_official 237:f3da66175598 5536 output_level = HRTIM_OUTPUTLEVEL_ACTIVE;
mbed_official 237:f3da66175598 5537 }
mbed_official 237:f3da66175598 5538 else
mbed_official 237:f3da66175598 5539 {
mbed_official 237:f3da66175598 5540 output_level = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5541 }
mbed_official 237:f3da66175598 5542 }
mbed_official 237:f3da66175598 5543 break;
mbed_official 237:f3da66175598 5544 }
mbed_official 237:f3da66175598 5545
mbed_official 237:f3da66175598 5546 return output_level;
mbed_official 237:f3da66175598 5547 }
mbed_official 237:f3da66175598 5548
mbed_official 237:f3da66175598 5549 /**
mbed_official 237:f3da66175598 5550 * @brief Returns actual state (RUN, IDLE, FAULT) of the designated output
mbed_official 237:f3da66175598 5551 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5552 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5553 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5554 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5555 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5556 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5557 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5558 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5559 * @param Output: Timer output
mbed_official 237:f3da66175598 5560 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5561 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 5562 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 5563 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 5564 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 5565 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 5566 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 5567 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 5568 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 5569 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 5570 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 5571 * @retval Output state
mbed_official 237:f3da66175598 5572 */
mbed_official 237:f3da66175598 5573 uint32_t HAL_HRTIM_WaveformGetOutputState(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5574 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5575 uint32_t Output)
mbed_official 237:f3da66175598 5576 {
mbed_official 237:f3da66175598 5577 uint32_t output_bit = 0;
mbed_official 237:f3da66175598 5578 uint32_t output_state = HRTIM_OUTPUTSTATE_IDLE;
mbed_official 237:f3da66175598 5579
mbed_official 237:f3da66175598 5580 /* Check parameters */
mbed_official 237:f3da66175598 5581 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, Output));
mbed_official 237:f3da66175598 5582
mbed_official 237:f3da66175598 5583 /* Set output state according to output control status and output disable status */
mbed_official 237:f3da66175598 5584 switch (Output)
mbed_official 237:f3da66175598 5585 {
mbed_official 237:f3da66175598 5586 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 5587 {
mbed_official 237:f3da66175598 5588 output_bit = HRTIM_OENR_TA1OEN;
mbed_official 237:f3da66175598 5589 }
mbed_official 237:f3da66175598 5590 break;
mbed_official 237:f3da66175598 5591 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 5592 {
mbed_official 237:f3da66175598 5593 output_bit = HRTIM_OENR_TA2OEN;
mbed_official 237:f3da66175598 5594 }
mbed_official 237:f3da66175598 5595 break;
mbed_official 237:f3da66175598 5596 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 5597 {
mbed_official 237:f3da66175598 5598 output_bit = HRTIM_OENR_TB1OEN;
mbed_official 237:f3da66175598 5599 }
mbed_official 237:f3da66175598 5600 break;
mbed_official 237:f3da66175598 5601 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 5602 {
mbed_official 237:f3da66175598 5603 output_bit = HRTIM_OENR_TB2OEN;
mbed_official 237:f3da66175598 5604 }
mbed_official 237:f3da66175598 5605 break;
mbed_official 237:f3da66175598 5606 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 5607 {
mbed_official 237:f3da66175598 5608 output_bit = HRTIM_OENR_TC1OEN;
mbed_official 237:f3da66175598 5609 }
mbed_official 237:f3da66175598 5610 break;
mbed_official 237:f3da66175598 5611 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 5612 {
mbed_official 237:f3da66175598 5613 output_bit = HRTIM_OENR_TC2OEN;
mbed_official 237:f3da66175598 5614 }
mbed_official 237:f3da66175598 5615 break;
mbed_official 237:f3da66175598 5616 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 5617 {
mbed_official 237:f3da66175598 5618 output_bit = HRTIM_OENR_TD1OEN;
mbed_official 237:f3da66175598 5619 }
mbed_official 237:f3da66175598 5620 break;
mbed_official 237:f3da66175598 5621 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 5622 {
mbed_official 237:f3da66175598 5623 output_bit = HRTIM_OENR_TD2OEN;
mbed_official 237:f3da66175598 5624 }
mbed_official 237:f3da66175598 5625 break;
mbed_official 237:f3da66175598 5626 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 5627 {
mbed_official 237:f3da66175598 5628 output_bit = HRTIM_OENR_TE1OEN;
mbed_official 237:f3da66175598 5629 }
mbed_official 237:f3da66175598 5630 break;
mbed_official 237:f3da66175598 5631 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 5632 {
mbed_official 237:f3da66175598 5633 output_bit = HRTIM_OENR_TE2OEN;
mbed_official 237:f3da66175598 5634 }
mbed_official 237:f3da66175598 5635 break;
mbed_official 237:f3da66175598 5636 }
mbed_official 237:f3da66175598 5637
mbed_official 237:f3da66175598 5638 if ((hhrtim->Instance->sCommonRegs.OENR & output_bit) != RESET)
mbed_official 237:f3da66175598 5639 {
mbed_official 237:f3da66175598 5640 /* Output is enabled: output in RUN state (whatever ouput disable status is)*/
mbed_official 237:f3da66175598 5641 output_state = HRTIM_OUTPUTSTATE_RUN;
mbed_official 237:f3da66175598 5642 }
mbed_official 237:f3da66175598 5643 else
mbed_official 237:f3da66175598 5644 {
mbed_official 237:f3da66175598 5645 if ((hhrtim->Instance->sCommonRegs.ODSR & output_bit) != RESET)
mbed_official 237:f3da66175598 5646 {
mbed_official 237:f3da66175598 5647 /* Output is disabled: output in FAULT state */
mbed_official 237:f3da66175598 5648 output_state = HRTIM_OUTPUTSTATE_FAULT;
mbed_official 237:f3da66175598 5649 }
mbed_official 237:f3da66175598 5650 else
mbed_official 237:f3da66175598 5651 {
mbed_official 237:f3da66175598 5652 /* Output is disabled: output in IDLE state */
mbed_official 237:f3da66175598 5653 output_state = HRTIM_OUTPUTSTATE_IDLE;
mbed_official 237:f3da66175598 5654 }
mbed_official 237:f3da66175598 5655 }
mbed_official 237:f3da66175598 5656
mbed_official 237:f3da66175598 5657 return(output_state);
mbed_official 237:f3da66175598 5658 }
mbed_official 237:f3da66175598 5659
mbed_official 237:f3da66175598 5660 /**
mbed_official 237:f3da66175598 5661 * @brief Returns the level (active or inactive) of the designated output
mbed_official 237:f3da66175598 5662 * when the delayed protection was triggered
mbed_official 237:f3da66175598 5663 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5664 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5665 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5666 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5667 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5668 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5669 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5670 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5671 * @param Output: Timer output
mbed_official 237:f3da66175598 5672 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5673 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 5674 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 5675 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 5676 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 5677 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 5678 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 5679 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 5680 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 5681 * @arg HRTIM_OUTPUT_TD1: Timer E - Ouput 1
mbed_official 237:f3da66175598 5682 * @arg HRTIM_OUTPUT_TD2: Timer E - Ouput 2
mbed_official 237:f3da66175598 5683 * @retval Delayed protection status
mbed_official 237:f3da66175598 5684 */
mbed_official 237:f3da66175598 5685 uint32_t HAL_HRTIM_GetDelayedProtectionStatus(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5686 uint32_t TimerIdx,
mbed_official 237:f3da66175598 5687 uint32_t Output)
mbed_official 237:f3da66175598 5688 {
mbed_official 237:f3da66175598 5689 uint32_t delayed_protection_status = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5690
mbed_official 237:f3da66175598 5691 /* Check parameters */
mbed_official 237:f3da66175598 5692 assert_param(IS_HRTIM_TIMER_OUTPUT(TimerIdx, Output));
mbed_official 237:f3da66175598 5693
mbed_official 237:f3da66175598 5694 /* Read the delayed protection status */
mbed_official 237:f3da66175598 5695 switch (Output)
mbed_official 237:f3da66175598 5696 {
mbed_official 237:f3da66175598 5697 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 5698 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 5699 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 5700 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 5701 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 5702 {
mbed_official 237:f3da66175598 5703 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_O1STAT) != RESET)
mbed_official 237:f3da66175598 5704 {
mbed_official 237:f3da66175598 5705 /* Output 1 was active when the delayed idle protection was triggered */
mbed_official 237:f3da66175598 5706 delayed_protection_status = HRTIM_OUTPUTLEVEL_ACTIVE;
mbed_official 237:f3da66175598 5707 }
mbed_official 237:f3da66175598 5708 else
mbed_official 237:f3da66175598 5709 {
mbed_official 237:f3da66175598 5710 /* Output 1 was inactive when the delayed idle protection was triggered */
mbed_official 237:f3da66175598 5711 delayed_protection_status = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5712 }
mbed_official 237:f3da66175598 5713 }
mbed_official 237:f3da66175598 5714 break;
mbed_official 237:f3da66175598 5715 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 5716 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 5717 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 5718 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 5719 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 5720 {
mbed_official 237:f3da66175598 5721 if ((hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_O2STAT) != RESET)
mbed_official 237:f3da66175598 5722 {
mbed_official 237:f3da66175598 5723 /* Output 2 was active when the delayed idle protection was triggered */
mbed_official 237:f3da66175598 5724 delayed_protection_status = HRTIM_OUTPUTLEVEL_ACTIVE;
mbed_official 237:f3da66175598 5725 }
mbed_official 237:f3da66175598 5726 else
mbed_official 237:f3da66175598 5727 {
mbed_official 237:f3da66175598 5728 /* Output 2 was inactive when the delayed idle protection was triggered */
mbed_official 237:f3da66175598 5729 delayed_protection_status = HRTIM_OUTPUTLEVEL_INACTIVE;
mbed_official 237:f3da66175598 5730 }
mbed_official 237:f3da66175598 5731 }
mbed_official 237:f3da66175598 5732 break;
mbed_official 237:f3da66175598 5733 }
mbed_official 237:f3da66175598 5734
mbed_official 237:f3da66175598 5735 return delayed_protection_status;
mbed_official 237:f3da66175598 5736 }
mbed_official 237:f3da66175598 5737
mbed_official 237:f3da66175598 5738 /**
mbed_official 237:f3da66175598 5739 * @brief Returns the actual status (active or inactive) of the burst mode controller
mbed_official 237:f3da66175598 5740 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5741 * @retval Burst mode controller status
mbed_official 237:f3da66175598 5742 */
mbed_official 237:f3da66175598 5743 uint32_t HAL_HRTIM_GetBurstStatus(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5744 {
mbed_official 237:f3da66175598 5745 uint32_t burst_mode_status;
mbed_official 237:f3da66175598 5746
mbed_official 237:f3da66175598 5747 /* Read burst mode status */
mbed_official 237:f3da66175598 5748 burst_mode_status = (hhrtim->Instance->sCommonRegs.BMCR & HRTIM_BMCR_BMSTAT);
mbed_official 237:f3da66175598 5749
mbed_official 237:f3da66175598 5750 return burst_mode_status;
mbed_official 237:f3da66175598 5751 }
mbed_official 237:f3da66175598 5752
mbed_official 237:f3da66175598 5753 /**
mbed_official 237:f3da66175598 5754 * @brief Indicates on which output the signal is currently active (when the
mbed_official 237:f3da66175598 5755 * push pull mode is enabled)
mbed_official 237:f3da66175598 5756 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5757 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5758 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5759 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5760 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5761 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5762 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5763 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5764 * @retval Burst mode controller status
mbed_official 237:f3da66175598 5765 */
mbed_official 237:f3da66175598 5766 uint32_t HAL_HRTIM_GetCurrentPushPullStatus(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5767 uint32_t TimerIdx)
mbed_official 237:f3da66175598 5768 {
mbed_official 237:f3da66175598 5769 uint32_t current_pushpull_status;
mbed_official 237:f3da66175598 5770
mbed_official 237:f3da66175598 5771 /* Check the parameters */
mbed_official 237:f3da66175598 5772 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 5773
mbed_official 237:f3da66175598 5774 /* Read current push pull status */
mbed_official 237:f3da66175598 5775 current_pushpull_status = (hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_CPPSTAT);
mbed_official 237:f3da66175598 5776
mbed_official 237:f3da66175598 5777 return current_pushpull_status;
mbed_official 237:f3da66175598 5778 }
mbed_official 237:f3da66175598 5779
mbed_official 237:f3da66175598 5780
mbed_official 237:f3da66175598 5781 /**
mbed_official 237:f3da66175598 5782 * @brief Indicates on which output the signal was applied, in push-pull mode
mbed_official 237:f3da66175598 5783 balanced fault mode or delayed idle mode, when the protection was triggered
mbed_official 237:f3da66175598 5784 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5785 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5786 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 5787 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 5788 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 5789 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 5790 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 5791 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 5792 * @retval Idle Push Pull Status
mbed_official 237:f3da66175598 5793 */
mbed_official 237:f3da66175598 5794 uint32_t HAL_HRTIM_GetIdlePushPullStatus(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5795 uint32_t TimerIdx)
mbed_official 237:f3da66175598 5796 {
mbed_official 237:f3da66175598 5797 uint32_t idle_pushpull_status;
mbed_official 237:f3da66175598 5798
mbed_official 237:f3da66175598 5799 /* Check the parameters */
mbed_official 237:f3da66175598 5800 assert_param(IS_HRTIM_TIMING_UNIT(TimerIdx));
mbed_official 237:f3da66175598 5801
mbed_official 237:f3da66175598 5802 /* Read current push pull status */
mbed_official 237:f3da66175598 5803 idle_pushpull_status = (hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxISR & HRTIM_TIMISR_IPPSTAT);
mbed_official 237:f3da66175598 5804
mbed_official 237:f3da66175598 5805 return idle_pushpull_status;
mbed_official 237:f3da66175598 5806 }
mbed_official 237:f3da66175598 5807
mbed_official 237:f3da66175598 5808 /**
mbed_official 237:f3da66175598 5809 * @}
mbed_official 237:f3da66175598 5810 */
mbed_official 237:f3da66175598 5811
mbed_official 237:f3da66175598 5812 /** @defgroup HAL_HRTIM_Group10 HRTIM interrupts handling
mbed_official 237:f3da66175598 5813 * @brief Functions called when HRTIM generates an interrupt
mbed_official 237:f3da66175598 5814 * 7 interrupts can be generated by the master timer:
mbed_official 237:f3da66175598 5815 * - Master timer registers update
mbed_official 237:f3da66175598 5816 * - Synchronization event received
mbed_official 237:f3da66175598 5817 * - Master timer repetition event
mbed_official 237:f3da66175598 5818 * - Master Compare 1 to 4 event
mbed_official 237:f3da66175598 5819 * 14 interrupts can be generated by each timing unit:
mbed_official 237:f3da66175598 5820 * - Delayed protection triggered
mbed_official 237:f3da66175598 5821 * - Counter reset or roll-over event
mbed_official 237:f3da66175598 5822 * - Output 1 and output 2 reset (transition active to inactive)
mbed_official 237:f3da66175598 5823 * - Output 1 and output 2 set (transition inactive to active)
mbed_official 237:f3da66175598 5824 * - Capture 1 and 2 events
mbed_official 237:f3da66175598 5825 * - Timing unit registers update
mbed_official 237:f3da66175598 5826 * - Repetition event
mbed_official 237:f3da66175598 5827 * - Compare 1 to 4 event
mbed_official 237:f3da66175598 5828 * 8 global interrupts are generated for the whole HRTIM:
mbed_official 237:f3da66175598 5829 * - System fault and Fault 1 to 5 (regardless of the timing unit attribution)
mbed_official 237:f3da66175598 5830 * - DLL calibration done
mbed_official 237:f3da66175598 5831 * - Burst mode period completed
mbed_official 237:f3da66175598 5832 *
mbed_official 237:f3da66175598 5833 @verbatim
mbed_official 237:f3da66175598 5834 ===============================================================================
mbed_official 237:f3da66175598 5835 ##### HRTIM interrupts handling #####
mbed_official 237:f3da66175598 5836 ===============================================================================
mbed_official 237:f3da66175598 5837 [..]
mbed_official 237:f3da66175598 5838 This subsection provides a set of functions allowing to manage the HRTIM
mbed_official 237:f3da66175598 5839 interrupts
mbed_official 237:f3da66175598 5840 (+) HRTIM interrupt handler
mbed_official 237:f3da66175598 5841 (+) Callback function called when Fault1 interrupt occurs
mbed_official 237:f3da66175598 5842 (+) Callback function called when Fault2 interrupt occurs
mbed_official 237:f3da66175598 5843 (+) Callback function called when Fault3 interrupt occurs
mbed_official 237:f3da66175598 5844 (+) Callback function called when Fault4 interrupt occurs
mbed_official 237:f3da66175598 5845 (+) Callback function called when Fault5 interrupt occurs
mbed_official 237:f3da66175598 5846 (+) Callback function called when system Fault interrupt occurs
mbed_official 237:f3da66175598 5847 (+) Callback function called when DLL ready interrupt occurs
mbed_official 237:f3da66175598 5848 (+) Callback function called when burst mode period interrupt occurs
mbed_official 237:f3da66175598 5849 (+) Callback function called when synchronization input interrupt occurs
mbed_official 237:f3da66175598 5850 (+) Callback function called when a timer register update interrupt occurs
mbed_official 237:f3da66175598 5851 (+) Callback function called when a timer repetition interrupt occurs
mbed_official 237:f3da66175598 5852 (+) Callback function called when a compare 1 match interrupt occurs
mbed_official 237:f3da66175598 5853 (+) Callback function called when a compare 2 match interrupt occurs
mbed_official 237:f3da66175598 5854 (+) Callback function called when a compare 3 match interrupt occurs
mbed_official 237:f3da66175598 5855 (+) Callback function called when a compare 4 match interrupt occurs
mbed_official 237:f3da66175598 5856 (+) Callback function called when a capture 1 interrupt occurs
mbed_official 237:f3da66175598 5857 (+) Callback function called when a capture 2 interrupt occurs
mbed_official 237:f3da66175598 5858 (+) Callback function called when a delayed protection interrupt occurs
mbed_official 237:f3da66175598 5859 (+) Callback function called when a timer counter reset interrupt occurs
mbed_official 237:f3da66175598 5860 (+) Callback function called when a timer output 1 set interrupt occurs
mbed_official 237:f3da66175598 5861 (+) Callback function called when a timer output 1 reset interrupt occurs
mbed_official 237:f3da66175598 5862 (+) Callback function called when a timer output 2 set interrupt occurs
mbed_official 237:f3da66175598 5863 (+) Callback function called when a timer output 2 reset interrupt occurs
mbed_official 237:f3da66175598 5864 (+) Callback function called when a timer output 2 reset interrupt occurs
mbed_official 237:f3da66175598 5865 (+) Callback function called upon completion of a burst DMA transfer
mbed_official 237:f3da66175598 5866
mbed_official 237:f3da66175598 5867 @endverbatim
mbed_official 237:f3da66175598 5868 * @{
mbed_official 237:f3da66175598 5869 */
mbed_official 237:f3da66175598 5870
mbed_official 237:f3da66175598 5871 /**
mbed_official 237:f3da66175598 5872 * @brief This function handles HRTIM interrupt request.
mbed_official 237:f3da66175598 5873 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5874 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 5875 * This parameter can be any value of @ref HRTIM_Timer_Index
mbed_official 237:f3da66175598 5876 * @retval None
mbed_official 237:f3da66175598 5877 */
mbed_official 237:f3da66175598 5878 void HAL_HRTIM_IRQHandler(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 5879 uint32_t TimerIdx)
mbed_official 237:f3da66175598 5880 {
mbed_official 237:f3da66175598 5881 /* HRTIM interrupts handling */
mbed_official 237:f3da66175598 5882 if (TimerIdx == HRTIM_TIMERINDEX_COMMON)
mbed_official 237:f3da66175598 5883 {
mbed_official 237:f3da66175598 5884 HRTIM_HRTIM_ISR(hhrtim);
mbed_official 237:f3da66175598 5885 }
mbed_official 237:f3da66175598 5886 else if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 5887 {
mbed_official 237:f3da66175598 5888 /* Master related interrupts handling */
mbed_official 237:f3da66175598 5889 HRTIM_Master_ISR(hhrtim);
mbed_official 237:f3da66175598 5890 }
mbed_official 237:f3da66175598 5891 else
mbed_official 237:f3da66175598 5892 {
mbed_official 237:f3da66175598 5893 /* Timing unit related interrupts handling */
mbed_official 237:f3da66175598 5894 HRTIM_Timer_ISR(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 5895 }
mbed_official 237:f3da66175598 5896
mbed_official 237:f3da66175598 5897 }
mbed_official 237:f3da66175598 5898
mbed_official 237:f3da66175598 5899 /**
mbed_official 237:f3da66175598 5900 * @brief Callback function invoked when a fault 1 interrupt occured
mbed_official 237:f3da66175598 5901 * @param hhrtim: pointer to HAL HRTIM handle * @retval None
mbed_official 237:f3da66175598 5902 * @retval None
mbed_official 237:f3da66175598 5903 */
mbed_official 237:f3da66175598 5904 __weak void HAL_HRTIM_Fault1Callback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5905 {
mbed_official 237:f3da66175598 5906 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5907 the HAL_HRTIM_Fault1Callback could be implenetd in the user file
mbed_official 237:f3da66175598 5908 */
mbed_official 237:f3da66175598 5909 }
mbed_official 237:f3da66175598 5910
mbed_official 237:f3da66175598 5911 /**
mbed_official 237:f3da66175598 5912 * @brief Callback function invoked when a fault 2 interrupt occured
mbed_official 237:f3da66175598 5913 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5914 * @retval None
mbed_official 237:f3da66175598 5915 */
mbed_official 237:f3da66175598 5916 __weak void HAL_HRTIM_Fault2Callback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5917 {
mbed_official 237:f3da66175598 5918 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5919 the HAL_HRTIM_Fault2Callback could be implenetd in the user file
mbed_official 237:f3da66175598 5920 */
mbed_official 237:f3da66175598 5921 }
mbed_official 237:f3da66175598 5922
mbed_official 237:f3da66175598 5923 /**
mbed_official 237:f3da66175598 5924 * @brief Callback function invoked when a fault 3 interrupt occured
mbed_official 237:f3da66175598 5925 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5926 * @retval None
mbed_official 237:f3da66175598 5927 */
mbed_official 237:f3da66175598 5928 __weak void HAL_HRTIM_Fault3Callback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5929 {
mbed_official 237:f3da66175598 5930 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5931 the HAL_HRTIM_Fault3Callback could be implenetd in the user file
mbed_official 237:f3da66175598 5932 */
mbed_official 237:f3da66175598 5933 }
mbed_official 237:f3da66175598 5934
mbed_official 237:f3da66175598 5935 /**
mbed_official 237:f3da66175598 5936 * @brief Callback function invoked when a fault 4 interrupt occured
mbed_official 237:f3da66175598 5937 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5938 * @retval None
mbed_official 237:f3da66175598 5939 */
mbed_official 237:f3da66175598 5940 __weak void HAL_HRTIM_Fault4Callback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5941 {
mbed_official 237:f3da66175598 5942 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5943 the HAL_HRTIM_Fault4Callback could be implenetd in the user file
mbed_official 237:f3da66175598 5944 */
mbed_official 237:f3da66175598 5945 }
mbed_official 237:f3da66175598 5946
mbed_official 237:f3da66175598 5947 /**
mbed_official 237:f3da66175598 5948 * @brief Callback function invoked when a fault 5 interrupt occured
mbed_official 237:f3da66175598 5949 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5950 * @retval None
mbed_official 237:f3da66175598 5951 */
mbed_official 237:f3da66175598 5952 __weak void HAL_HRTIM_Fault5Callback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5953 {
mbed_official 237:f3da66175598 5954 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5955 the HAL_HRTIM_Fault5Callback could be implenetd in the user file
mbed_official 237:f3da66175598 5956 */
mbed_official 237:f3da66175598 5957 }
mbed_official 237:f3da66175598 5958
mbed_official 237:f3da66175598 5959 /**
mbed_official 237:f3da66175598 5960 * @brief Callback function invoked when a system fault interrupt occured
mbed_official 237:f3da66175598 5961 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5962 * @retval None
mbed_official 237:f3da66175598 5963 */
mbed_official 237:f3da66175598 5964 __weak void HAL_HRTIM_SystemFaultCallback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5965 {
mbed_official 237:f3da66175598 5966 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5967 the HAL_HRTIM_SystemFaultCallback could be implenetd in the user file
mbed_official 237:f3da66175598 5968 */
mbed_official 237:f3da66175598 5969 }
mbed_official 237:f3da66175598 5970
mbed_official 237:f3da66175598 5971 /**
mbed_official 237:f3da66175598 5972 * @brief Callback function invoked when a the DLL calibration is completed
mbed_official 237:f3da66175598 5973 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5974 * @retval None
mbed_official 237:f3da66175598 5975 */
mbed_official 237:f3da66175598 5976 __weak void HAL_HRTIM_DLLCalbrationReadyCallback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5977 {
mbed_official 237:f3da66175598 5978 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5979 the HAL_HRTIM_DLLCalbrationCallback could be implenetd in the user file
mbed_official 237:f3da66175598 5980 */
mbed_official 237:f3da66175598 5981 }
mbed_official 237:f3da66175598 5982
mbed_official 237:f3da66175598 5983 /**
mbed_official 237:f3da66175598 5984 * @brief Callback function invoked when the end of the burst mode period is reached
mbed_official 237:f3da66175598 5985 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5986 * @retval None
mbed_official 237:f3da66175598 5987 */
mbed_official 237:f3da66175598 5988 __weak void HAL_HRTIM_BurstModePeriodCallback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 5989 {
mbed_official 237:f3da66175598 5990 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 5991 the HAL_HRTIM_BurstModeCallback could be implenetd in the user file
mbed_official 237:f3da66175598 5992 */
mbed_official 237:f3da66175598 5993 }
mbed_official 237:f3da66175598 5994
mbed_official 237:f3da66175598 5995 /**
mbed_official 237:f3da66175598 5996 * @brief Callback function invoked when a synchronization input event is received
mbed_official 237:f3da66175598 5997 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 5998 * @retval None
mbed_official 237:f3da66175598 5999 */
mbed_official 237:f3da66175598 6000 __weak void HAL_HRTIM_SynchronizationEventCallback(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 6001 {
mbed_official 237:f3da66175598 6002 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6003 the HAL_HRTIM_Master_SynchronizationEventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6004 */
mbed_official 237:f3da66175598 6005 }
mbed_official 237:f3da66175598 6006
mbed_official 237:f3da66175598 6007 /**
mbed_official 237:f3da66175598 6008 * @brief Callback function invoked when timer registers are updated
mbed_official 237:f3da66175598 6009 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6010 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6011 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6012 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6013 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6014 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6015 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6016 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6017 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6018 * @retval None
mbed_official 237:f3da66175598 6019 */
mbed_official 237:f3da66175598 6020 __weak void HAL_HRTIM_RegistersUpdateCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6021 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6022 {
mbed_official 237:f3da66175598 6023 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6024 the HAL_HRTIM_Master_RegistersUpdateCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6025 */
mbed_official 237:f3da66175598 6026 }
mbed_official 237:f3da66175598 6027
mbed_official 237:f3da66175598 6028 /**
mbed_official 237:f3da66175598 6029 * @brief Callback function invoked when timer repetition period has elapsed
mbed_official 237:f3da66175598 6030 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6031 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6032 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6033 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6034 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6035 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6036 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6037 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6038 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6039 * @retval None
mbed_official 237:f3da66175598 6040 */
mbed_official 237:f3da66175598 6041 __weak void HAL_HRTIM_RepetitionEventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6042 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6043 {
mbed_official 237:f3da66175598 6044 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6045 the HAL_HRTIM_Master_RepetitionEventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6046 */
mbed_official 237:f3da66175598 6047 }
mbed_official 237:f3da66175598 6048
mbed_official 237:f3da66175598 6049 /**
mbed_official 237:f3da66175598 6050 * @brief Callback function invoked when the timer counter matches the value
mbed_official 237:f3da66175598 6051 * programmed in the compare 1 register
mbed_official 237:f3da66175598 6052 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6053 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6054 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6055 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6056 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6057 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6058 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6059 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6060 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6061 * @retval None
mbed_official 237:f3da66175598 6062 */
mbed_official 237:f3da66175598 6063 __weak void HAL_HRTIM_Compare1EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6064 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6065 {
mbed_official 237:f3da66175598 6066 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6067 the HAL_HRTIM_Master_Compare1EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6068 */
mbed_official 237:f3da66175598 6069 }
mbed_official 237:f3da66175598 6070
mbed_official 237:f3da66175598 6071 /**
mbed_official 237:f3da66175598 6072 * @brief Callback function invoked when the timer counter matches the value
mbed_official 237:f3da66175598 6073 * programmed in the compare 2 register
mbed_official 237:f3da66175598 6074 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6075 * @retval None
mbed_official 237:f3da66175598 6076 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6077 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6078 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6079 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6080 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6081 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6082 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6083 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6084 */
mbed_official 237:f3da66175598 6085 __weak void HAL_HRTIM_Compare2EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6086 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6087 {
mbed_official 237:f3da66175598 6088 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6089 the HAL_HRTIM_Master_Compare2EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6090 */
mbed_official 237:f3da66175598 6091 }
mbed_official 237:f3da66175598 6092
mbed_official 237:f3da66175598 6093 /**
mbed_official 237:f3da66175598 6094 * @brief Callback function invoked when the timer counter matches the value
mbed_official 237:f3da66175598 6095 * programmed in the compare 3 register
mbed_official 237:f3da66175598 6096 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6097 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6098 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6099 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6100 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6101 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6102 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6103 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6104 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6105 * @retval None
mbed_official 237:f3da66175598 6106 */
mbed_official 237:f3da66175598 6107 __weak void HAL_HRTIM_Compare3EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6108 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6109 {
mbed_official 237:f3da66175598 6110 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6111 the HAL_HRTIM_Master_Compare3EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6112 */
mbed_official 237:f3da66175598 6113 }
mbed_official 237:f3da66175598 6114
mbed_official 237:f3da66175598 6115 /**
mbed_official 237:f3da66175598 6116 * @brief Callback function invoked when the timer counter matches the value
mbed_official 237:f3da66175598 6117 * programmed in the compare 4 register
mbed_official 237:f3da66175598 6118 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6119 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6120 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6121 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6122 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6123 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6124 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6125 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6126 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6127 * @retval None
mbed_official 237:f3da66175598 6128 */
mbed_official 237:f3da66175598 6129 __weak void HAL_HRTIM_Compare4EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6130 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6131 {
mbed_official 237:f3da66175598 6132 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6133 the HAL_HRTIM_Master_Compare4EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6134 */
mbed_official 237:f3da66175598 6135 }
mbed_official 237:f3da66175598 6136
mbed_official 237:f3da66175598 6137 /**
mbed_official 237:f3da66175598 6138 * @brief Callback function invoked when the timer x capture 1 event occurs
mbed_official 237:f3da66175598 6139 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6140 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6141 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6142 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6143 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6144 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6145 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6146 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6147 * @retval None
mbed_official 237:f3da66175598 6148 */
mbed_official 237:f3da66175598 6149 __weak void HAL_HRTIM_Capture1EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6150 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6151 {
mbed_official 237:f3da66175598 6152 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6153 the HAL_HRTIM_Timer_Capture1EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6154 */
mbed_official 237:f3da66175598 6155 }
mbed_official 237:f3da66175598 6156
mbed_official 237:f3da66175598 6157 /**
mbed_official 237:f3da66175598 6158 * @brief Callback function invoked when the timer x capture 2 event occurs
mbed_official 237:f3da66175598 6159 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6160 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6161 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6162 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6163 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6164 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6165 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6166 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6167 * @retval None
mbed_official 237:f3da66175598 6168 */
mbed_official 237:f3da66175598 6169 __weak void HAL_HRTIM_Capture2EventCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6170 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6171 {
mbed_official 237:f3da66175598 6172 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6173 the HAL_HRTIM_Timer_Capture2EventCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6174 */
mbed_official 237:f3da66175598 6175 }
mbed_official 237:f3da66175598 6176
mbed_official 237:f3da66175598 6177 /**
mbed_official 237:f3da66175598 6178 * @brief Callback function invoked when the delayed idle or balanced idle mode is
mbed_official 237:f3da66175598 6179 * entered
mbed_official 237:f3da66175598 6180 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6181 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6182 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6183 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6184 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6185 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6186 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6187 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6188 * @retval None
mbed_official 237:f3da66175598 6189 */
mbed_official 237:f3da66175598 6190 __weak void HAL_HRTIM_DelayedProtectionCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6191 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6192 {
mbed_official 237:f3da66175598 6193 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6194 the HAL_HRTIM_Timer_DelayedProtectionCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6195 */
mbed_official 237:f3da66175598 6196 }
mbed_official 237:f3da66175598 6197
mbed_official 237:f3da66175598 6198 /**
mbed_official 237:f3da66175598 6199 * @brief Callback function invoked when the timer x counter reset/roll-over
mbed_official 237:f3da66175598 6200 * event occurs
mbed_official 237:f3da66175598 6201 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6202 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6203 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6204 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6205 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6206 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6207 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6208 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6209 * @retval None
mbed_official 237:f3da66175598 6210 */
mbed_official 237:f3da66175598 6211 __weak void HAL_HRTIM_CounterResetCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6212 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6213 {
mbed_official 237:f3da66175598 6214 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6215 the HAL_HRTIM_Timer_CounterResetCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6216 */
mbed_official 237:f3da66175598 6217 }
mbed_official 237:f3da66175598 6218
mbed_official 237:f3da66175598 6219 /**
mbed_official 237:f3da66175598 6220 * @brief Callback function invoked when the timer x output 1 is set
mbed_official 237:f3da66175598 6221 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6222 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6223 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6224 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6225 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6226 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6227 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6228 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6229 * @retval None
mbed_official 237:f3da66175598 6230 */
mbed_official 237:f3da66175598 6231 __weak void HAL_HRTIM_Output1SetCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6232 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6233 {
mbed_official 237:f3da66175598 6234 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6235 the HAL_HRTIM_Timer_Output1SetCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6236 */
mbed_official 237:f3da66175598 6237 }
mbed_official 237:f3da66175598 6238
mbed_official 237:f3da66175598 6239 /**
mbed_official 237:f3da66175598 6240 * @brief Callback function invoked when the timer x output 1 is reset
mbed_official 237:f3da66175598 6241 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6242 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6243 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6244 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6245 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6246 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6247 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6248 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6249 * @retval None
mbed_official 237:f3da66175598 6250 */
mbed_official 237:f3da66175598 6251 __weak void HAL_HRTIM_Output1ResetCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6252 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6253 {
mbed_official 237:f3da66175598 6254 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6255 the HAL_HRTIM_Timer_Output1ResetCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6256 */
mbed_official 237:f3da66175598 6257 }
mbed_official 237:f3da66175598 6258
mbed_official 237:f3da66175598 6259 /**
mbed_official 237:f3da66175598 6260 * @brief Callback function invoked when the timer x output 2 is set
mbed_official 237:f3da66175598 6261 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6262 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6263 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6264 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6265 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6266 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6267 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6268 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6269 * @retval None
mbed_official 237:f3da66175598 6270 */
mbed_official 237:f3da66175598 6271 __weak void HAL_HRTIM_Output2SetCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6272 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6273 {
mbed_official 237:f3da66175598 6274 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6275 the HAL_HRTIM_Timer_Output2SetCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6276 */
mbed_official 237:f3da66175598 6277 }
mbed_official 237:f3da66175598 6278
mbed_official 237:f3da66175598 6279 /**
mbed_official 237:f3da66175598 6280 * @brief Callback function invoked when the timer x output 2 is reset
mbed_official 237:f3da66175598 6281 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6282 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6283 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6284 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6285 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6286 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6287 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6288 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6289 * @retval None
mbed_official 237:f3da66175598 6290 */
mbed_official 237:f3da66175598 6291 __weak void HAL_HRTIM_Output2ResetCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6292 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6293 {
mbed_official 237:f3da66175598 6294 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6295 the HAL_HRTIM_Timer_Output2ResetCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6296 */
mbed_official 237:f3da66175598 6297 }
mbed_official 237:f3da66175598 6298
mbed_official 237:f3da66175598 6299 /**
mbed_official 237:f3da66175598 6300 * @brief Callback function invoked when a DMA burst transfer is completed
mbed_official 237:f3da66175598 6301 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6302 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6303 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 6304 * @arg HRTIM_TIMERINDEX_MASTER for master timer
mbed_official 237:f3da66175598 6305 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 6306 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 6307 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 6308 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 6309 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 6310 * @retval None
mbed_official 237:f3da66175598 6311 */
mbed_official 237:f3da66175598 6312 __weak void HAL_HRTIM_BurstDMATransferCallback(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6313 uint32_t TimerIdx)
mbed_official 237:f3da66175598 6314 {
mbed_official 237:f3da66175598 6315 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6316 the HAL_HRTIM_BurstDMATransferCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6317 */
mbed_official 237:f3da66175598 6318 }
mbed_official 237:f3da66175598 6319
mbed_official 237:f3da66175598 6320 /**
mbed_official 237:f3da66175598 6321 * @brief Callback function invoked when a DMA error occurs
mbed_official 237:f3da66175598 6322 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6323 * @retval None
mbed_official 237:f3da66175598 6324 */
mbed_official 237:f3da66175598 6325 __weak void HAL_HRTIM_ErrorCallback(HRTIM_HandleTypeDef *hhrtim)
mbed_official 237:f3da66175598 6326 {
mbed_official 237:f3da66175598 6327 /* NOTE : This function should not be modified, when the callback is needed,
mbed_official 237:f3da66175598 6328 the HAL_HRTIM_ErrorCallback could be implenetd in the user file
mbed_official 237:f3da66175598 6329 */
mbed_official 237:f3da66175598 6330 }
mbed_official 237:f3da66175598 6331
mbed_official 237:f3da66175598 6332 /**
mbed_official 237:f3da66175598 6333 * @}
mbed_official 237:f3da66175598 6334 */
mbed_official 237:f3da66175598 6335
mbed_official 237:f3da66175598 6336 /**
mbed_official 237:f3da66175598 6337 * @brief Configures the master timer time base
mbed_official 237:f3da66175598 6338 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6339 * @param pTimeBaseCfg: pointer to the time base configuration structure
mbed_official 237:f3da66175598 6340 * @retval None
mbed_official 237:f3da66175598 6341 */
mbed_official 237:f3da66175598 6342 static void HRTIM_MasterBase_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6343 HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg)
mbed_official 237:f3da66175598 6344 {
mbed_official 237:f3da66175598 6345 uint32_t hrtim_mcr;
mbed_official 237:f3da66175598 6346
mbed_official 237:f3da66175598 6347 /* Configure master timer */
mbed_official 237:f3da66175598 6348 hrtim_mcr = hhrtim->Instance->sMasterRegs.MCR;
mbed_official 237:f3da66175598 6349
mbed_official 237:f3da66175598 6350 /* Set the prescaler ratio */
mbed_official 237:f3da66175598 6351 hrtim_mcr &= (uint32_t) ~(HRTIM_MCR_CK_PSC);
mbed_official 237:f3da66175598 6352 hrtim_mcr |= (uint32_t)pTimeBaseCfg->PrescalerRatio;
mbed_official 237:f3da66175598 6353
mbed_official 237:f3da66175598 6354 /* Set the operating mode */
mbed_official 237:f3da66175598 6355 hrtim_mcr &= (uint32_t) ~(HRTIM_MCR_CONT | HRTIM_MCR_RETRIG);
mbed_official 237:f3da66175598 6356 hrtim_mcr |= (uint32_t)pTimeBaseCfg->Mode;
mbed_official 237:f3da66175598 6357
mbed_official 237:f3da66175598 6358 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6359 hhrtim->Instance->sMasterRegs.MCR = hrtim_mcr;
mbed_official 237:f3da66175598 6360 hhrtim->Instance->sMasterRegs.MPER = pTimeBaseCfg->Period;
mbed_official 237:f3da66175598 6361 hhrtim->Instance->sMasterRegs.MREP = pTimeBaseCfg->RepetitionCounter;
mbed_official 237:f3da66175598 6362 }
mbed_official 237:f3da66175598 6363
mbed_official 237:f3da66175598 6364 /**
mbed_official 237:f3da66175598 6365 * @brief Configures timing unit (timer A to timer E) time base
mbed_official 237:f3da66175598 6366 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6367 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6368 * @param pTimeBaseCfg: pointer to the time base configuration structure
mbed_official 237:f3da66175598 6369 * @retval None
mbed_official 237:f3da66175598 6370 */
mbed_official 237:f3da66175598 6371 static void HRTIM_TimingUnitBase_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6372 uint32_t TimerIdx ,
mbed_official 237:f3da66175598 6373 HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg)
mbed_official 237:f3da66175598 6374 {
mbed_official 237:f3da66175598 6375 uint32_t hrtim_timcr;
mbed_official 237:f3da66175598 6376
mbed_official 237:f3da66175598 6377 /* Configure master timing unit */
mbed_official 237:f3da66175598 6378 hrtim_timcr = hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR;
mbed_official 237:f3da66175598 6379
mbed_official 237:f3da66175598 6380 /* Set the prescaler ratio */
mbed_official 237:f3da66175598 6381 hrtim_timcr &= (uint32_t) ~(HRTIM_TIMCR_CK_PSC);
mbed_official 237:f3da66175598 6382 hrtim_timcr |= (uint32_t)pTimeBaseCfg->PrescalerRatio;
mbed_official 237:f3da66175598 6383
mbed_official 237:f3da66175598 6384 /* Set the operating mode */
mbed_official 237:f3da66175598 6385 hrtim_timcr &= (uint32_t) ~(HRTIM_TIMCR_CONT | HRTIM_TIMCR_RETRIG);
mbed_official 237:f3da66175598 6386 hrtim_timcr |= (uint32_t)pTimeBaseCfg->Mode;
mbed_official 237:f3da66175598 6387
mbed_official 237:f3da66175598 6388 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6389 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR = hrtim_timcr;
mbed_official 237:f3da66175598 6390 hhrtim->Instance->sTimerxRegs[TimerIdx].PERxR = pTimeBaseCfg->Period;
mbed_official 237:f3da66175598 6391 hhrtim->Instance->sTimerxRegs[TimerIdx].REPxR = pTimeBaseCfg->RepetitionCounter;
mbed_official 237:f3da66175598 6392 }
mbed_official 237:f3da66175598 6393
mbed_official 237:f3da66175598 6394 /**
mbed_official 237:f3da66175598 6395 * @brief Configures the master timer in waveform mode
mbed_official 237:f3da66175598 6396 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6397 * @param pTimerCfg: pointer to the timer configuration data structure
mbed_official 237:f3da66175598 6398 * @retval None
mbed_official 237:f3da66175598 6399 */
mbed_official 237:f3da66175598 6400 static void HRTIM_MasterWaveform_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6401 HRTIM_TimerCfgTypeDef * pTimerCfg)
mbed_official 237:f3da66175598 6402 {
mbed_official 237:f3da66175598 6403 uint32_t hrtim_mcr;
mbed_official 237:f3da66175598 6404 uint32_t hrtim_bmcr;
mbed_official 237:f3da66175598 6405
mbed_official 237:f3da66175598 6406 /* Configure master timer */
mbed_official 237:f3da66175598 6407 hrtim_mcr = hhrtim->Instance->sMasterRegs.MCR;
mbed_official 237:f3da66175598 6408 hrtim_bmcr = hhrtim->Instance->sCommonRegs.BMCR;
mbed_official 237:f3da66175598 6409
mbed_official 237:f3da66175598 6410 /* Enable/Disable the half mode */
mbed_official 237:f3da66175598 6411 hrtim_mcr &= ~(HRTIM_MCR_HALF);
mbed_official 237:f3da66175598 6412 hrtim_mcr |= pTimerCfg->HalfModeEnable;
mbed_official 237:f3da66175598 6413
mbed_official 237:f3da66175598 6414 /* Enable/Disable the timer start upon synchronization event reception */
mbed_official 237:f3da66175598 6415 hrtim_mcr &= ~(HRTIM_MCR_SYNCSTRTM);
mbed_official 237:f3da66175598 6416 hrtim_mcr |= pTimerCfg->StartOnSync;
mbed_official 237:f3da66175598 6417
mbed_official 237:f3da66175598 6418 /* Enable/Disable the timer reset upon synchronization event reception */
mbed_official 237:f3da66175598 6419 hrtim_mcr &= ~(HRTIM_MCR_SYNCRSTM);
mbed_official 237:f3da66175598 6420 hrtim_mcr |= pTimerCfg->ResetOnSync;
mbed_official 237:f3da66175598 6421
mbed_official 237:f3da66175598 6422 /* Enable/Disable the DAC synchronization event generation */
mbed_official 237:f3da66175598 6423 hrtim_mcr &= ~(HRTIM_MCR_DACSYNC);
mbed_official 237:f3da66175598 6424 hrtim_mcr |= pTimerCfg->DACSynchro;
mbed_official 237:f3da66175598 6425
mbed_official 237:f3da66175598 6426 /* Enable/Disable preload meachanism for timer registers */
mbed_official 237:f3da66175598 6427 hrtim_mcr &= ~(HRTIM_MCR_PREEN);
mbed_official 237:f3da66175598 6428 hrtim_mcr |= pTimerCfg->PreloadEnable;
mbed_official 237:f3da66175598 6429
mbed_official 237:f3da66175598 6430 /* Master timer registers update handling */
mbed_official 237:f3da66175598 6431 hrtim_mcr &= ~(HRTIM_MCR_BRSTDMA);
mbed_official 237:f3da66175598 6432 hrtim_mcr |= (pTimerCfg->UpdateGating << 2);
mbed_official 237:f3da66175598 6433
mbed_official 237:f3da66175598 6434 /* Enable/Disable registers update on repetition */
mbed_official 237:f3da66175598 6435 hrtim_mcr &= ~(HRTIM_MCR_MREPU);
mbed_official 237:f3da66175598 6436 hrtim_mcr |= pTimerCfg->RepetitionUpdate;
mbed_official 237:f3da66175598 6437
mbed_official 237:f3da66175598 6438 /* Set the timer burst mode */
mbed_official 237:f3da66175598 6439 hrtim_bmcr &= ~(HRTIM_BMCR_MTBM);
mbed_official 237:f3da66175598 6440 hrtim_bmcr |= pTimerCfg->BurstMode;
mbed_official 237:f3da66175598 6441
mbed_official 237:f3da66175598 6442 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6443 hhrtim->Instance->sMasterRegs.MCR = hrtim_mcr;
mbed_official 237:f3da66175598 6444 hhrtim->Instance->sCommonRegs.BMCR = hrtim_bmcr;
mbed_official 237:f3da66175598 6445 }
mbed_official 237:f3da66175598 6446
mbed_official 237:f3da66175598 6447 /**
mbed_official 237:f3da66175598 6448 * @brief Configures timing unit (timer A to timer E) in waveform mode
mbed_official 237:f3da66175598 6449 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6450 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6451 * @param pTimerCfg: pointer to the timer configuration data structure
mbed_official 237:f3da66175598 6452 * @retval None
mbed_official 237:f3da66175598 6453 */
mbed_official 237:f3da66175598 6454 static void HRTIM_TimingUnitWaveform_Config(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6455 uint32_t TimerIdx,
mbed_official 237:f3da66175598 6456 HRTIM_TimerCfgTypeDef * pTimerCfg)
mbed_official 237:f3da66175598 6457 {
mbed_official 237:f3da66175598 6458 uint32_t hrtim_timcr;
mbed_official 237:f3da66175598 6459 uint32_t hrtim_timfltr;
mbed_official 237:f3da66175598 6460 uint32_t hrtim_timoutr;
mbed_official 237:f3da66175598 6461 uint32_t hrtim_timrstr;
mbed_official 237:f3da66175598 6462 uint32_t hrtim_bmcr;
mbed_official 237:f3da66175598 6463
mbed_official 237:f3da66175598 6464 /* UPDGAT bitfield must be reset before programming a new value */
mbed_official 237:f3da66175598 6465 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR &= ~(HRTIM_TIMCR_UPDGAT);
mbed_official 237:f3da66175598 6466
mbed_official 237:f3da66175598 6467 /* Configure timing unit (Timer A to Timer E) */
mbed_official 237:f3da66175598 6468 hrtim_timcr = hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR;
mbed_official 237:f3da66175598 6469 hrtim_timfltr = hhrtim->Instance->sTimerxRegs[TimerIdx].FLTxR;
mbed_official 237:f3da66175598 6470 hrtim_timoutr = hhrtim->Instance->sTimerxRegs[TimerIdx].OUTxR;
mbed_official 237:f3da66175598 6471 hrtim_timrstr = hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR;
mbed_official 237:f3da66175598 6472 hrtim_bmcr = hhrtim->Instance->sCommonRegs.BMCR;
mbed_official 237:f3da66175598 6473
mbed_official 237:f3da66175598 6474 /* Enable/Disable the half mode */
mbed_official 237:f3da66175598 6475 hrtim_timcr &= ~(HRTIM_TIMCR_HALF);
mbed_official 237:f3da66175598 6476 hrtim_timcr |= pTimerCfg->HalfModeEnable;
mbed_official 237:f3da66175598 6477
mbed_official 237:f3da66175598 6478 /* Enable/Disable the timer start upon synchronization event reception */
mbed_official 237:f3da66175598 6479 hrtim_timcr &= ~(HRTIM_TIMCR_SYNCSTRT);
mbed_official 237:f3da66175598 6480 hrtim_timcr |= pTimerCfg->StartOnSync;
mbed_official 237:f3da66175598 6481
mbed_official 237:f3da66175598 6482 /* Enable/Disable the timer reset upon synchronization event reception */
mbed_official 237:f3da66175598 6483 hrtim_timcr &= ~(HRTIM_TIMCR_SYNCRST);
mbed_official 237:f3da66175598 6484 hrtim_timcr |= pTimerCfg->ResetOnSync;
mbed_official 237:f3da66175598 6485
mbed_official 237:f3da66175598 6486 /* Enable/Disable the DAC synchronization event generation */
mbed_official 237:f3da66175598 6487 hrtim_timcr &= ~(HRTIM_TIMCR_DACSYNC);
mbed_official 237:f3da66175598 6488 hrtim_timcr |= pTimerCfg->DACSynchro;
mbed_official 237:f3da66175598 6489
mbed_official 237:f3da66175598 6490 /* Enable/Disable preload meachanism for timer registers */
mbed_official 237:f3da66175598 6491 hrtim_timcr &= ~(HRTIM_TIMCR_PREEN);
mbed_official 237:f3da66175598 6492 hrtim_timcr |= pTimerCfg->PreloadEnable;
mbed_official 237:f3da66175598 6493
mbed_official 237:f3da66175598 6494 /* Timing unit registers update handling */
mbed_official 237:f3da66175598 6495 hrtim_timcr &= ~(HRTIM_TIMCR_UPDGAT);
mbed_official 237:f3da66175598 6496 hrtim_timcr |= pTimerCfg->UpdateGating;
mbed_official 237:f3da66175598 6497
mbed_official 237:f3da66175598 6498 /* Enable/Disable registers update on repetition */
mbed_official 237:f3da66175598 6499 hrtim_timcr &= ~(HRTIM_TIMCR_TREPU);
mbed_official 237:f3da66175598 6500 if (pTimerCfg->RepetitionUpdate == HRTIM_UPDATEONREPETITION_ENABLED)
mbed_official 237:f3da66175598 6501 {
mbed_official 237:f3da66175598 6502 hrtim_timcr |= HRTIM_TIMCR_TREPU;
mbed_official 237:f3da66175598 6503 }
mbed_official 237:f3da66175598 6504
mbed_official 237:f3da66175598 6505 /* Set the push-pull mode */
mbed_official 237:f3da66175598 6506 hrtim_timcr &= ~(HRTIM_TIMCR_PSHPLL);
mbed_official 237:f3da66175598 6507 hrtim_timcr |= pTimerCfg->PushPull;
mbed_official 237:f3da66175598 6508
mbed_official 237:f3da66175598 6509 /* Enable/Disable registers update on timer counter reset */
mbed_official 237:f3da66175598 6510 hrtim_timcr &= ~(HRTIM_TIMCR_TRSTU);
mbed_official 237:f3da66175598 6511 hrtim_timcr |= pTimerCfg->ResetUpdate;
mbed_official 237:f3da66175598 6512
mbed_official 237:f3da66175598 6513 /* Set the timer update trigger */
mbed_official 237:f3da66175598 6514 hrtim_timcr &= ~(HRTIM_TIMCR_TIMUPDATETRIGGER);
mbed_official 237:f3da66175598 6515 hrtim_timcr |= pTimerCfg->UpdateTrigger;
mbed_official 237:f3da66175598 6516
mbed_official 237:f3da66175598 6517
mbed_official 237:f3da66175598 6518 /* Enable/Disable the fault channel at timer level */
mbed_official 237:f3da66175598 6519 hrtim_timfltr &= ~(HRTIM_FLTR_FLTxEN);
mbed_official 237:f3da66175598 6520 hrtim_timfltr |= (pTimerCfg->FaultEnable & HRTIM_FLTR_FLTxEN);
mbed_official 237:f3da66175598 6521
mbed_official 237:f3da66175598 6522 /* Lock/Unlock fault sources at timer level */
mbed_official 237:f3da66175598 6523 hrtim_timfltr &= ~(HRTIM_FLTR_FLTLCK);
mbed_official 237:f3da66175598 6524 hrtim_timfltr |= pTimerCfg->FaultLock;
mbed_official 237:f3da66175598 6525
mbed_official 237:f3da66175598 6526 /* The deadtime cannot be used simultaneously with the push-pull mode */
mbed_official 237:f3da66175598 6527 if (pTimerCfg->PushPull == HRTIM_TIMPUSHPULLMODE_DISABLED)
mbed_official 237:f3da66175598 6528 {
mbed_official 237:f3da66175598 6529 /* Enable/Disable dead time insertion at timer level */
mbed_official 237:f3da66175598 6530 hrtim_timoutr &= ~(HRTIM_OUTR_DTEN);
mbed_official 237:f3da66175598 6531 hrtim_timoutr |= pTimerCfg->DeadTimeInsertion;
mbed_official 237:f3da66175598 6532 }
mbed_official 237:f3da66175598 6533
mbed_official 237:f3da66175598 6534 /* Enable/Disable delayed protection at timer level
mbed_official 237:f3da66175598 6535 Delayed Idle is available whatever the timer operating mode (regular, push-pull)
mbed_official 237:f3da66175598 6536 Balanced Idle is only available in push-pull mode
mbed_official 237:f3da66175598 6537 */
mbed_official 237:f3da66175598 6538 if ( ((pTimerCfg->DelayedProtectionMode != HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV68)
mbed_official 237:f3da66175598 6539 && (pTimerCfg->DelayedProtectionMode != HRTIM_TIMDELAYEDPROTECTION_BALANCED_EEV79))
mbed_official 237:f3da66175598 6540 || (pTimerCfg->PushPull == HRTIM_TIMPUSHPULLMODE_ENABLED))
mbed_official 237:f3da66175598 6541 {
mbed_official 237:f3da66175598 6542 hrtim_timoutr &= ~(HRTIM_OUTR_DLYPRT| HRTIM_OUTR_DLYPRTEN);
mbed_official 237:f3da66175598 6543 hrtim_timoutr |= pTimerCfg->DelayedProtectionMode;
mbed_official 237:f3da66175598 6544 }
mbed_official 237:f3da66175598 6545
mbed_official 237:f3da66175598 6546 /* Set the timer counter reset trigger */
mbed_official 237:f3da66175598 6547 hrtim_timrstr = pTimerCfg->ResetTrigger;
mbed_official 237:f3da66175598 6548
mbed_official 237:f3da66175598 6549 /* Set the timer burst mode */
mbed_official 237:f3da66175598 6550 switch (TimerIdx)
mbed_official 237:f3da66175598 6551 {
mbed_official 237:f3da66175598 6552 case HRTIM_TIMERINDEX_TIMER_A:
mbed_official 237:f3da66175598 6553 {
mbed_official 237:f3da66175598 6554 hrtim_bmcr &= ~(HRTIM_BMCR_TABM);
mbed_official 237:f3da66175598 6555 hrtim_bmcr |= ( pTimerCfg->BurstMode << 1);
mbed_official 237:f3da66175598 6556 }
mbed_official 237:f3da66175598 6557 break;
mbed_official 237:f3da66175598 6558 case HRTIM_TIMERINDEX_TIMER_B:
mbed_official 237:f3da66175598 6559 {
mbed_official 237:f3da66175598 6560 hrtim_bmcr &= ~(HRTIM_BMCR_TBBM);
mbed_official 237:f3da66175598 6561 hrtim_bmcr |= ( pTimerCfg->BurstMode << 2);
mbed_official 237:f3da66175598 6562 }
mbed_official 237:f3da66175598 6563 break;
mbed_official 237:f3da66175598 6564 case HRTIM_TIMERINDEX_TIMER_C:
mbed_official 237:f3da66175598 6565 {
mbed_official 237:f3da66175598 6566 hrtim_bmcr &= ~(HRTIM_BMCR_TCBM);
mbed_official 237:f3da66175598 6567 hrtim_bmcr |= ( pTimerCfg->BurstMode << 3);
mbed_official 237:f3da66175598 6568 }
mbed_official 237:f3da66175598 6569 break;
mbed_official 237:f3da66175598 6570 case HRTIM_TIMERINDEX_TIMER_D:
mbed_official 237:f3da66175598 6571 {
mbed_official 237:f3da66175598 6572 hrtim_bmcr &= ~(HRTIM_BMCR_TDBM);
mbed_official 237:f3da66175598 6573 hrtim_bmcr |= ( pTimerCfg->BurstMode << 4);
mbed_official 237:f3da66175598 6574 }
mbed_official 237:f3da66175598 6575 break;
mbed_official 237:f3da66175598 6576 case HRTIM_TIMERINDEX_TIMER_E:
mbed_official 237:f3da66175598 6577 {
mbed_official 237:f3da66175598 6578 hrtim_bmcr &= ~(HRTIM_BMCR_TEBM);
mbed_official 237:f3da66175598 6579 hrtim_bmcr |= ( pTimerCfg->BurstMode << 5);
mbed_official 237:f3da66175598 6580 }
mbed_official 237:f3da66175598 6581 break;
mbed_official 237:f3da66175598 6582 }
mbed_official 237:f3da66175598 6583
mbed_official 237:f3da66175598 6584 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6585 hhrtim->Instance->sTimerxRegs[TimerIdx].TIMxCR = hrtim_timcr;
mbed_official 237:f3da66175598 6586 hhrtim->Instance->sTimerxRegs[TimerIdx].FLTxR = hrtim_timfltr;
mbed_official 237:f3da66175598 6587 hhrtim->Instance->sTimerxRegs[TimerIdx].OUTxR = hrtim_timoutr;
mbed_official 237:f3da66175598 6588 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = hrtim_timrstr;
mbed_official 237:f3da66175598 6589 hhrtim->Instance->sCommonRegs.BMCR = hrtim_bmcr;
mbed_official 237:f3da66175598 6590 }
mbed_official 237:f3da66175598 6591
mbed_official 237:f3da66175598 6592 /**
mbed_official 237:f3da66175598 6593 * @brief Configures a compare unit
mbed_official 237:f3da66175598 6594 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6595 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6596 * @param CompareUnit: Compare unit identifier
mbed_official 237:f3da66175598 6597 * @param pCompareCfg: pointer to the compare unit configuration data structure
mbed_official 237:f3da66175598 6598 * @retval None
mbed_official 237:f3da66175598 6599 */
mbed_official 237:f3da66175598 6600 static void HRTIM_CompareUnitConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6601 uint32_t TimerIdx,
mbed_official 237:f3da66175598 6602 uint32_t CompareUnit,
mbed_official 237:f3da66175598 6603 HRTIM_CompareCfgTypeDef * pCompareCfg)
mbed_official 237:f3da66175598 6604 {
mbed_official 237:f3da66175598 6605 if (TimerIdx == HRTIM_TIMERINDEX_MASTER)
mbed_official 237:f3da66175598 6606 {
mbed_official 237:f3da66175598 6607 /* Configure the compare unit of the master timer */
mbed_official 237:f3da66175598 6608 switch (CompareUnit)
mbed_official 237:f3da66175598 6609 {
mbed_official 237:f3da66175598 6610 case HRTIM_COMPAREUNIT_1:
mbed_official 237:f3da66175598 6611 {
mbed_official 237:f3da66175598 6612 hhrtim->Instance->sMasterRegs.MCMP1R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6613 }
mbed_official 237:f3da66175598 6614 break;
mbed_official 237:f3da66175598 6615 case HRTIM_COMPAREUNIT_2:
mbed_official 237:f3da66175598 6616 {
mbed_official 237:f3da66175598 6617 hhrtim->Instance->sMasterRegs.MCMP2R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6618 }
mbed_official 237:f3da66175598 6619 break;
mbed_official 237:f3da66175598 6620 case HRTIM_COMPAREUNIT_3:
mbed_official 237:f3da66175598 6621 {
mbed_official 237:f3da66175598 6622 hhrtim->Instance->sMasterRegs.MCMP3R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6623 }
mbed_official 237:f3da66175598 6624 break;
mbed_official 237:f3da66175598 6625 case HRTIM_COMPAREUNIT_4:
mbed_official 237:f3da66175598 6626 {
mbed_official 237:f3da66175598 6627 hhrtim->Instance->sMasterRegs.MCMP4R = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6628 }
mbed_official 237:f3da66175598 6629 break;
mbed_official 237:f3da66175598 6630 }
mbed_official 237:f3da66175598 6631 }
mbed_official 237:f3da66175598 6632 else
mbed_official 237:f3da66175598 6633 {
mbed_official 237:f3da66175598 6634 /* Configure the compare unit of the timing unit */
mbed_official 237:f3da66175598 6635 switch (CompareUnit)
mbed_official 237:f3da66175598 6636 {
mbed_official 237:f3da66175598 6637 case HRTIM_COMPAREUNIT_1:
mbed_official 237:f3da66175598 6638 {
mbed_official 237:f3da66175598 6639 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP1xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6640 }
mbed_official 237:f3da66175598 6641 break;
mbed_official 237:f3da66175598 6642 case HRTIM_COMPAREUNIT_2:
mbed_official 237:f3da66175598 6643 {
mbed_official 237:f3da66175598 6644 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP2xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6645 }
mbed_official 237:f3da66175598 6646 break;
mbed_official 237:f3da66175598 6647 case HRTIM_COMPAREUNIT_3:
mbed_official 237:f3da66175598 6648 {
mbed_official 237:f3da66175598 6649 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP3xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6650 }
mbed_official 237:f3da66175598 6651 break;
mbed_official 237:f3da66175598 6652 case HRTIM_COMPAREUNIT_4:
mbed_official 237:f3da66175598 6653 {
mbed_official 237:f3da66175598 6654 hhrtim->Instance->sTimerxRegs[TimerIdx].CMP4xR = pCompareCfg->CompareValue;
mbed_official 237:f3da66175598 6655 }
mbed_official 237:f3da66175598 6656 break;
mbed_official 237:f3da66175598 6657 }
mbed_official 237:f3da66175598 6658 }
mbed_official 237:f3da66175598 6659 }
mbed_official 237:f3da66175598 6660
mbed_official 237:f3da66175598 6661 /**
mbed_official 237:f3da66175598 6662 * @brief Configures a capture unit
mbed_official 237:f3da66175598 6663 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6664 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6665 * @param CaptureUnit: Capture unit identifier
mbed_official 237:f3da66175598 6666 * @param Event: Event reference
mbed_official 237:f3da66175598 6667 * @retval None
mbed_official 237:f3da66175598 6668 */
mbed_official 237:f3da66175598 6669 static void HRTIM_CaptureUnitConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6670 uint32_t TimerIdx,
mbed_official 237:f3da66175598 6671 uint32_t CaptureUnit,
mbed_official 237:f3da66175598 6672 uint32_t Event)
mbed_official 237:f3da66175598 6673 {
mbed_official 237:f3da66175598 6674 uint32_t CaptureTrigger = 0xFFFFFFFF;
mbed_official 237:f3da66175598 6675
mbed_official 237:f3da66175598 6676 switch (Event)
mbed_official 237:f3da66175598 6677 {
mbed_official 237:f3da66175598 6678 case HRTIM_EVENT_1:
mbed_official 237:f3da66175598 6679 {
mbed_official 237:f3da66175598 6680 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_1;
mbed_official 237:f3da66175598 6681 }
mbed_official 237:f3da66175598 6682 break;
mbed_official 237:f3da66175598 6683 case HRTIM_EVENT_2:
mbed_official 237:f3da66175598 6684 {
mbed_official 237:f3da66175598 6685 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_2;
mbed_official 237:f3da66175598 6686 }
mbed_official 237:f3da66175598 6687 break;
mbed_official 237:f3da66175598 6688 case HRTIM_EVENT_3:
mbed_official 237:f3da66175598 6689 {
mbed_official 237:f3da66175598 6690 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_3;
mbed_official 237:f3da66175598 6691 }
mbed_official 237:f3da66175598 6692 break;
mbed_official 237:f3da66175598 6693 case HRTIM_EVENT_4:
mbed_official 237:f3da66175598 6694 {
mbed_official 237:f3da66175598 6695 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_4;
mbed_official 237:f3da66175598 6696 }
mbed_official 237:f3da66175598 6697 break;
mbed_official 237:f3da66175598 6698 case HRTIM_EVENT_5:
mbed_official 237:f3da66175598 6699 {
mbed_official 237:f3da66175598 6700 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_5;
mbed_official 237:f3da66175598 6701 }
mbed_official 237:f3da66175598 6702 break;
mbed_official 237:f3da66175598 6703 case HRTIM_EVENT_6:
mbed_official 237:f3da66175598 6704 {
mbed_official 237:f3da66175598 6705 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_6;
mbed_official 237:f3da66175598 6706 }
mbed_official 237:f3da66175598 6707 break;
mbed_official 237:f3da66175598 6708 case HRTIM_EVENT_7:
mbed_official 237:f3da66175598 6709 {
mbed_official 237:f3da66175598 6710 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_7;
mbed_official 237:f3da66175598 6711 }
mbed_official 237:f3da66175598 6712 break;
mbed_official 237:f3da66175598 6713 case HRTIM_EVENT_8:
mbed_official 237:f3da66175598 6714 {
mbed_official 237:f3da66175598 6715 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_8;
mbed_official 237:f3da66175598 6716 }
mbed_official 237:f3da66175598 6717 break;
mbed_official 237:f3da66175598 6718 case HRTIM_EVENT_9:
mbed_official 237:f3da66175598 6719 {
mbed_official 237:f3da66175598 6720 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_9;
mbed_official 237:f3da66175598 6721 }
mbed_official 237:f3da66175598 6722 break;
mbed_official 237:f3da66175598 6723 case HRTIM_EVENT_10:
mbed_official 237:f3da66175598 6724 {
mbed_official 237:f3da66175598 6725 CaptureTrigger = HRTIM_CAPTURETRIGGER_EEV_10;
mbed_official 237:f3da66175598 6726 }
mbed_official 237:f3da66175598 6727 break;
mbed_official 237:f3da66175598 6728 }
mbed_official 237:f3da66175598 6729
mbed_official 237:f3da66175598 6730 switch (CaptureUnit)
mbed_official 237:f3da66175598 6731 {
mbed_official 237:f3da66175598 6732 case HRTIM_CAPTUREUNIT_1:
mbed_official 237:f3da66175598 6733 {
mbed_official 237:f3da66175598 6734 hhrtim->TimerParam[TimerIdx].CaptureTrigger1 = CaptureTrigger;
mbed_official 237:f3da66175598 6735 }
mbed_official 237:f3da66175598 6736 break;
mbed_official 237:f3da66175598 6737 case HRTIM_CAPTUREUNIT_2:
mbed_official 237:f3da66175598 6738 {
mbed_official 237:f3da66175598 6739 hhrtim->TimerParam[TimerIdx].CaptureTrigger2 = CaptureTrigger;
mbed_official 237:f3da66175598 6740 }
mbed_official 237:f3da66175598 6741 break;
mbed_official 237:f3da66175598 6742 }
mbed_official 237:f3da66175598 6743 }
mbed_official 237:f3da66175598 6744
mbed_official 237:f3da66175598 6745 /**
mbed_official 237:f3da66175598 6746 * @brief Configures the output of a timing unit
mbed_official 237:f3da66175598 6747 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6748 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6749 * @param Output: timing unit output identifier
mbed_official 237:f3da66175598 6750 * @param pOutputCfg: pointer to the output configuration data structure
mbed_official 237:f3da66175598 6751 * @retval None
mbed_official 237:f3da66175598 6752 */
mbed_official 237:f3da66175598 6753 static void HRTIM_OutputConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6754 uint32_t TimerIdx,
mbed_official 237:f3da66175598 6755 uint32_t Output,
mbed_official 237:f3da66175598 6756 HRTIM_OutputCfgTypeDef * pOutputCfg)
mbed_official 237:f3da66175598 6757 {
mbed_official 237:f3da66175598 6758 uint32_t hrtim_outr;
mbed_official 237:f3da66175598 6759 uint32_t hrtim_dtr;
mbed_official 237:f3da66175598 6760
mbed_official 237:f3da66175598 6761 uint32_t shift = 0xFFFFFFFF;
mbed_official 237:f3da66175598 6762
mbed_official 237:f3da66175598 6763 hrtim_outr = hhrtim->Instance->sTimerxRegs[TimerIdx].OUTxR;
mbed_official 237:f3da66175598 6764 hrtim_dtr = hhrtim->Instance->sTimerxRegs[TimerIdx].DTxR;
mbed_official 237:f3da66175598 6765
mbed_official 237:f3da66175598 6766 switch (Output)
mbed_official 237:f3da66175598 6767 {
mbed_official 237:f3da66175598 6768 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 6769 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 6770 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 6771 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 6772 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 6773 {
mbed_official 237:f3da66175598 6774 /* Set the output set/reset crossbar */
mbed_official 237:f3da66175598 6775 hhrtim->Instance->sTimerxRegs[TimerIdx].SETx1R = pOutputCfg->SetSource;
mbed_official 237:f3da66175598 6776 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx1R = pOutputCfg->ResetSource;
mbed_official 237:f3da66175598 6777
mbed_official 237:f3da66175598 6778 shift = 0;
mbed_official 237:f3da66175598 6779 }
mbed_official 237:f3da66175598 6780 break;
mbed_official 237:f3da66175598 6781 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 6782 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 6783 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 6784 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 6785 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 6786 {
mbed_official 237:f3da66175598 6787 /* Set the output set/reset crossbar */
mbed_official 237:f3da66175598 6788 hhrtim->Instance->sTimerxRegs[TimerIdx].SETx2R = pOutputCfg->SetSource;
mbed_official 237:f3da66175598 6789 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx2R = pOutputCfg->ResetSource;
mbed_official 237:f3da66175598 6790
mbed_official 237:f3da66175598 6791 shift = 16;
mbed_official 237:f3da66175598 6792 }
mbed_official 237:f3da66175598 6793 break;
mbed_official 237:f3da66175598 6794 }
mbed_official 237:f3da66175598 6795
mbed_official 237:f3da66175598 6796 /* Clear output config */
mbed_official 237:f3da66175598 6797 hrtim_outr &= ~((HRTIM_OUTR_POL1 |
mbed_official 237:f3da66175598 6798 HRTIM_OUTR_IDLM1 |
mbed_official 237:f3da66175598 6799 HRTIM_OUTR_IDLES1|
mbed_official 237:f3da66175598 6800 HRTIM_OUTR_FAULT1|
mbed_official 237:f3da66175598 6801 HRTIM_OUTR_CHP1 |
mbed_official 237:f3da66175598 6802 HRTIM_OUTR_DIDL1) << shift);
mbed_official 237:f3da66175598 6803
mbed_official 237:f3da66175598 6804 /* Set the polarity */
mbed_official 237:f3da66175598 6805 hrtim_outr |= (pOutputCfg->Polarity << shift);
mbed_official 237:f3da66175598 6806
mbed_official 237:f3da66175598 6807 /* Set the IDLE mode */
mbed_official 237:f3da66175598 6808 hrtim_outr |= (pOutputCfg->IdleMode << shift);
mbed_official 237:f3da66175598 6809
mbed_official 237:f3da66175598 6810 /* Set the IDLE state */
mbed_official 237:f3da66175598 6811 hrtim_outr |= (pOutputCfg->IdleLevel << shift);
mbed_official 237:f3da66175598 6812
mbed_official 237:f3da66175598 6813 /* Set the FAULT state */
mbed_official 237:f3da66175598 6814 hrtim_outr |= (pOutputCfg->FaultLevel << shift);
mbed_official 237:f3da66175598 6815
mbed_official 237:f3da66175598 6816 /* Set the chopper mode */
mbed_official 237:f3da66175598 6817 hrtim_outr |= (pOutputCfg->ChopperModeEnable << shift);
mbed_official 237:f3da66175598 6818
mbed_official 237:f3da66175598 6819 /* Set the burst mode entry mode : deadtime insertion when entering the idle
mbed_official 237:f3da66175598 6820 state during a burst mode operation is allowed only under the following
mbed_official 237:f3da66175598 6821 conditions:
mbed_official 237:f3da66175598 6822 - the outputs is active during the burst mode (IDLES=1)
mbed_official 237:f3da66175598 6823 - positive deadtimes (SDTR/SDTF set to 0)
mbed_official 237:f3da66175598 6824 */
mbed_official 237:f3da66175598 6825 if ((pOutputCfg->IdleLevel == HRTIM_OUTPUTIDLELEVEL_ACTIVE) &&
mbed_official 237:f3da66175598 6826 ((hrtim_dtr & HRTIM_DTR_SDTR) == RESET) &&
mbed_official 237:f3da66175598 6827 ((hrtim_dtr & HRTIM_DTR_SDTF) == RESET))
mbed_official 237:f3da66175598 6828 {
mbed_official 237:f3da66175598 6829 hrtim_outr |= (pOutputCfg->BurstModeEntryDelayed << shift);
mbed_official 237:f3da66175598 6830 }
mbed_official 237:f3da66175598 6831
mbed_official 237:f3da66175598 6832 /* Update HRTIM register */
mbed_official 237:f3da66175598 6833 hhrtim->Instance->sTimerxRegs[TimerIdx].OUTxR = hrtim_outr;
mbed_official 237:f3da66175598 6834 }
mbed_official 237:f3da66175598 6835
mbed_official 237:f3da66175598 6836 /**
mbed_official 237:f3da66175598 6837 * @brief Configures an external event channel
mbed_official 237:f3da66175598 6838 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6839 * @param Event: Event channel identifier
mbed_official 237:f3da66175598 6840 * @param pEventCfg: pointer to the event channel configuration data structure
mbed_official 237:f3da66175598 6841 * @retval None
mbed_official 237:f3da66175598 6842 */
mbed_official 237:f3da66175598 6843 static void HRTIM_EventConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 6844 uint32_t Event,
mbed_official 237:f3da66175598 6845 HRTIM_EventCfgTypeDef *pEventCfg)
mbed_official 237:f3da66175598 6846 {
mbed_official 237:f3da66175598 6847 uint32_t hrtim_eecr1;
mbed_official 237:f3da66175598 6848 uint32_t hrtim_eecr2;
mbed_official 237:f3da66175598 6849 uint32_t hrtim_eecr3;
mbed_official 237:f3da66175598 6850
mbed_official 237:f3da66175598 6851 /* Configure external event channel */
mbed_official 237:f3da66175598 6852 hrtim_eecr1 = hhrtim->Instance->sCommonRegs.EECR1;
mbed_official 237:f3da66175598 6853 hrtim_eecr2 = hhrtim->Instance->sCommonRegs.EECR2;
mbed_official 237:f3da66175598 6854 hrtim_eecr3 = hhrtim->Instance->sCommonRegs.EECR3;
mbed_official 237:f3da66175598 6855
mbed_official 237:f3da66175598 6856 switch (Event)
mbed_official 237:f3da66175598 6857 {
mbed_official 237:f3da66175598 6858 case HRTIM_EVENT_1:
mbed_official 237:f3da66175598 6859 {
mbed_official 237:f3da66175598 6860 hrtim_eecr1 &= ~(HRTIM_EECR1_EE1SRC | HRTIM_EECR1_EE1POL | HRTIM_EECR1_EE1SNS | HRTIM_EECR1_EE1FAST);
mbed_official 237:f3da66175598 6861 hrtim_eecr1 |= pEventCfg->Source;
mbed_official 237:f3da66175598 6862 hrtim_eecr1 |= (pEventCfg->Polarity & HRTIM_EECR1_EE1POL);
mbed_official 237:f3da66175598 6863 hrtim_eecr1 |= pEventCfg->Sensitivity;
mbed_official 237:f3da66175598 6864 /* Update the HRTIM registers (all bitfields but EE1FAST bit) */
mbed_official 237:f3da66175598 6865 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6866 /* Update the HRTIM registers (EE1FAST bit) */
mbed_official 237:f3da66175598 6867 hrtim_eecr1 |= pEventCfg->FastMode;
mbed_official 237:f3da66175598 6868 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6869 }
mbed_official 237:f3da66175598 6870 break;
mbed_official 237:f3da66175598 6871 case HRTIM_EVENT_2:
mbed_official 237:f3da66175598 6872 {
mbed_official 237:f3da66175598 6873 hrtim_eecr1 &= ~(HRTIM_EECR1_EE2SRC | HRTIM_EECR1_EE2POL | HRTIM_EECR1_EE2SNS | HRTIM_EECR1_EE2FAST);
mbed_official 237:f3da66175598 6874 hrtim_eecr1 |= (pEventCfg->Source << 6);
mbed_official 237:f3da66175598 6875 hrtim_eecr1 |= ((pEventCfg->Polarity << 6) & (HRTIM_EECR1_EE2POL));
mbed_official 237:f3da66175598 6876 hrtim_eecr1 |= (pEventCfg->Sensitivity << 6);
mbed_official 237:f3da66175598 6877 /* Update the HRTIM registers (all bitfields but EE2FAST bit) */
mbed_official 237:f3da66175598 6878 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6879 /* Update the HRTIM registers (EE2FAST bit) */
mbed_official 237:f3da66175598 6880 hrtim_eecr1 |= (pEventCfg->FastMode << 6);
mbed_official 237:f3da66175598 6881 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6882 }
mbed_official 237:f3da66175598 6883 break;
mbed_official 237:f3da66175598 6884 case HRTIM_EVENT_3:
mbed_official 237:f3da66175598 6885 {
mbed_official 237:f3da66175598 6886 hrtim_eecr1 &= ~(HRTIM_EECR1_EE3SRC | HRTIM_EECR1_EE3POL | HRTIM_EECR1_EE3SNS | HRTIM_EECR1_EE3FAST);
mbed_official 237:f3da66175598 6887 hrtim_eecr1 |= (pEventCfg->Source << 12);
mbed_official 237:f3da66175598 6888 hrtim_eecr1 |= ((pEventCfg->Polarity << 12) & (HRTIM_EECR1_EE3POL));
mbed_official 237:f3da66175598 6889 hrtim_eecr1 |= (pEventCfg->Sensitivity << 12);
mbed_official 237:f3da66175598 6890 /* Update the HRTIM registers (all bitfields but EE3FAST bit) */
mbed_official 237:f3da66175598 6891 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6892 /* Update the HRTIM registers (EE3FAST bit) */
mbed_official 237:f3da66175598 6893 hrtim_eecr1 |= (pEventCfg->FastMode << 12);
mbed_official 237:f3da66175598 6894 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6895 }
mbed_official 237:f3da66175598 6896 break;
mbed_official 237:f3da66175598 6897 case HRTIM_EVENT_4:
mbed_official 237:f3da66175598 6898 {
mbed_official 237:f3da66175598 6899 hrtim_eecr1 &= ~(HRTIM_EECR1_EE4SRC | HRTIM_EECR1_EE4POL | HRTIM_EECR1_EE4SNS | HRTIM_EECR1_EE4FAST);
mbed_official 237:f3da66175598 6900 hrtim_eecr1 |= (pEventCfg->Source << 18);
mbed_official 237:f3da66175598 6901 hrtim_eecr1 |= ((pEventCfg->Polarity << 18) & (HRTIM_EECR1_EE4POL));
mbed_official 237:f3da66175598 6902 hrtim_eecr1 |= (pEventCfg->Sensitivity << 18);
mbed_official 237:f3da66175598 6903 /* Update the HRTIM registers (all bitfields but EE4FAST bit) */
mbed_official 237:f3da66175598 6904 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6905 /* Update the HRTIM registers (EE4FAST bit) */
mbed_official 237:f3da66175598 6906 hrtim_eecr1 |= (pEventCfg->FastMode << 18);
mbed_official 237:f3da66175598 6907 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6908 }
mbed_official 237:f3da66175598 6909 break;
mbed_official 237:f3da66175598 6910 case HRTIM_EVENT_5:
mbed_official 237:f3da66175598 6911 {
mbed_official 237:f3da66175598 6912 hrtim_eecr1 &= ~(HRTIM_EECR1_EE5SRC | HRTIM_EECR1_EE5POL | HRTIM_EECR1_EE5SNS | HRTIM_EECR1_EE5FAST);
mbed_official 237:f3da66175598 6913 hrtim_eecr1 |= (pEventCfg->Source << 24);
mbed_official 237:f3da66175598 6914 hrtim_eecr1 |= ((pEventCfg->Polarity << 24) & (HRTIM_EECR1_EE5POL));
mbed_official 237:f3da66175598 6915 hrtim_eecr1 |= (pEventCfg->Sensitivity << 24);
mbed_official 237:f3da66175598 6916 /* Update the HRTIM registers (all bitfields but EE5FAST bit) */
mbed_official 237:f3da66175598 6917 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6918 /* Update the HRTIM registers (EE5FAST bit) */
mbed_official 237:f3da66175598 6919 hrtim_eecr1 |= (pEventCfg->FastMode << 24);
mbed_official 237:f3da66175598 6920 hhrtim->Instance->sCommonRegs.EECR1 = hrtim_eecr1;
mbed_official 237:f3da66175598 6921 }
mbed_official 237:f3da66175598 6922 break;
mbed_official 237:f3da66175598 6923 case HRTIM_EVENT_6:
mbed_official 237:f3da66175598 6924 {
mbed_official 237:f3da66175598 6925 hrtim_eecr2 &= ~(HRTIM_EECR2_EE6SRC | HRTIM_EECR2_EE6POL | HRTIM_EECR2_EE6SNS);
mbed_official 237:f3da66175598 6926 hrtim_eecr2 |= pEventCfg->Source;
mbed_official 237:f3da66175598 6927 hrtim_eecr2 |= (pEventCfg->Polarity & HRTIM_EECR2_EE6POL);
mbed_official 237:f3da66175598 6928 hrtim_eecr2 |= pEventCfg->Sensitivity;
mbed_official 237:f3da66175598 6929 hrtim_eecr3 &= ~(HRTIM_EECR3_EE6F);
mbed_official 237:f3da66175598 6930 hrtim_eecr3 |= pEventCfg->Filter;
mbed_official 237:f3da66175598 6931 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6932 hhrtim->Instance->sCommonRegs.EECR2 = hrtim_eecr2;
mbed_official 237:f3da66175598 6933 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 6934 }
mbed_official 237:f3da66175598 6935 break;
mbed_official 237:f3da66175598 6936 case HRTIM_EVENT_7:
mbed_official 237:f3da66175598 6937 {
mbed_official 237:f3da66175598 6938 hrtim_eecr2 &= ~(HRTIM_EECR2_EE7SRC | HRTIM_EECR2_EE7POL | HRTIM_EECR2_EE7SNS);
mbed_official 237:f3da66175598 6939 hrtim_eecr2 |= (pEventCfg->Source << 6);
mbed_official 237:f3da66175598 6940 hrtim_eecr2 |= ((pEventCfg->Polarity << 6) & (HRTIM_EECR2_EE7POL));
mbed_official 237:f3da66175598 6941 hrtim_eecr2 |= (pEventCfg->Sensitivity << 6);
mbed_official 237:f3da66175598 6942 hrtim_eecr3 &= ~(HRTIM_EECR3_EE7F);
mbed_official 237:f3da66175598 6943 hrtim_eecr3 |= (pEventCfg->Filter << 6);
mbed_official 237:f3da66175598 6944 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6945 hhrtim->Instance->sCommonRegs.EECR2 = hrtim_eecr2;
mbed_official 237:f3da66175598 6946 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 6947 }
mbed_official 237:f3da66175598 6948 break;
mbed_official 237:f3da66175598 6949 case HRTIM_EVENT_8:
mbed_official 237:f3da66175598 6950 {
mbed_official 237:f3da66175598 6951 hrtim_eecr2 &= ~(HRTIM_EECR2_EE8SRC | HRTIM_EECR2_EE8POL | HRTIM_EECR2_EE8SNS);
mbed_official 237:f3da66175598 6952 hrtim_eecr2 |= (pEventCfg->Source << 12);
mbed_official 237:f3da66175598 6953 hrtim_eecr2 |= ((pEventCfg->Polarity << 12) & (HRTIM_EECR2_EE8POL));
mbed_official 237:f3da66175598 6954 hrtim_eecr2 |= (pEventCfg->Sensitivity << 12);
mbed_official 237:f3da66175598 6955 hrtim_eecr3 &= ~(HRTIM_EECR3_EE8F);
mbed_official 237:f3da66175598 6956 hrtim_eecr3 |= (pEventCfg->Filter << 12);
mbed_official 237:f3da66175598 6957 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6958 hhrtim->Instance->sCommonRegs.EECR2 = hrtim_eecr2;
mbed_official 237:f3da66175598 6959 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 6960 }
mbed_official 237:f3da66175598 6961 break;
mbed_official 237:f3da66175598 6962 case HRTIM_EVENT_9:
mbed_official 237:f3da66175598 6963 {
mbed_official 237:f3da66175598 6964 hrtim_eecr2 &= ~(HRTIM_EECR2_EE9SRC | HRTIM_EECR2_EE9POL | HRTIM_EECR2_EE9SNS);
mbed_official 237:f3da66175598 6965 hrtim_eecr2 |= (pEventCfg->Source << 18);
mbed_official 237:f3da66175598 6966 hrtim_eecr2 |= ((pEventCfg->Polarity << 18) & (HRTIM_EECR2_EE9POL));
mbed_official 237:f3da66175598 6967 hrtim_eecr2 |= (pEventCfg->Sensitivity << 18);
mbed_official 237:f3da66175598 6968 hrtim_eecr3 &= ~(HRTIM_EECR3_EE9F);
mbed_official 237:f3da66175598 6969 hrtim_eecr3 |= (pEventCfg->Filter << 18);
mbed_official 237:f3da66175598 6970 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6971 hhrtim->Instance->sCommonRegs.EECR2 = hrtim_eecr2;
mbed_official 237:f3da66175598 6972 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 6973 }
mbed_official 237:f3da66175598 6974 break;
mbed_official 237:f3da66175598 6975 case HRTIM_EVENT_10:
mbed_official 237:f3da66175598 6976 {
mbed_official 237:f3da66175598 6977 hrtim_eecr2 &= ~(HRTIM_EECR2_EE10SRC | HRTIM_EECR2_EE10POL | HRTIM_EECR2_EE10SNS);
mbed_official 237:f3da66175598 6978 hrtim_eecr2 |= (pEventCfg->Source << 24);
mbed_official 237:f3da66175598 6979 hrtim_eecr2 |= ((pEventCfg->Polarity << 24) & (HRTIM_EECR2_EE10POL));
mbed_official 237:f3da66175598 6980 hrtim_eecr2 |= (pEventCfg->Sensitivity << 24);
mbed_official 237:f3da66175598 6981 hrtim_eecr3 &= ~(HRTIM_EECR3_EE10F);
mbed_official 237:f3da66175598 6982 hrtim_eecr3 |= (pEventCfg->Filter << 24);
mbed_official 237:f3da66175598 6983 /* Update the HRTIM registers */
mbed_official 237:f3da66175598 6984 hhrtim->Instance->sCommonRegs.EECR2 = hrtim_eecr2;
mbed_official 237:f3da66175598 6985 hhrtim->Instance->sCommonRegs.EECR3 = hrtim_eecr3;
mbed_official 237:f3da66175598 6986 }
mbed_official 237:f3da66175598 6987 break;
mbed_official 237:f3da66175598 6988 default:
mbed_official 237:f3da66175598 6989 break;
mbed_official 237:f3da66175598 6990 }
mbed_official 237:f3da66175598 6991 }
mbed_official 237:f3da66175598 6992
mbed_official 237:f3da66175598 6993 /**
mbed_official 237:f3da66175598 6994 * @brief Configures the timer counter reset
mbed_official 237:f3da66175598 6995 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 6996 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 6997 * @param Event: Event channel identifier
mbed_official 237:f3da66175598 6998 * @retval None
mbed_official 237:f3da66175598 6999 */
mbed_official 237:f3da66175598 7000 static void HRTIM_TIM_ResetConfig(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7001 uint32_t TimerIdx,
mbed_official 237:f3da66175598 7002 uint32_t Event)
mbed_official 237:f3da66175598 7003 {
mbed_official 237:f3da66175598 7004 switch (Event)
mbed_official 237:f3da66175598 7005 {
mbed_official 237:f3da66175598 7006 case HRTIM_EVENT_1:
mbed_official 237:f3da66175598 7007 {
mbed_official 237:f3da66175598 7008 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_1;
mbed_official 237:f3da66175598 7009 }
mbed_official 237:f3da66175598 7010 break;
mbed_official 237:f3da66175598 7011 case HRTIM_EVENT_2:
mbed_official 237:f3da66175598 7012 {
mbed_official 237:f3da66175598 7013 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_2;
mbed_official 237:f3da66175598 7014 }
mbed_official 237:f3da66175598 7015 break;
mbed_official 237:f3da66175598 7016 case HRTIM_EVENT_3:
mbed_official 237:f3da66175598 7017 {
mbed_official 237:f3da66175598 7018 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_3;
mbed_official 237:f3da66175598 7019 }
mbed_official 237:f3da66175598 7020 break;
mbed_official 237:f3da66175598 7021 case HRTIM_EVENT_4:
mbed_official 237:f3da66175598 7022 {
mbed_official 237:f3da66175598 7023 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_4;
mbed_official 237:f3da66175598 7024 }
mbed_official 237:f3da66175598 7025 break;
mbed_official 237:f3da66175598 7026 case HRTIM_EVENT_5:
mbed_official 237:f3da66175598 7027 {
mbed_official 237:f3da66175598 7028 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_5;
mbed_official 237:f3da66175598 7029 }
mbed_official 237:f3da66175598 7030 break;
mbed_official 237:f3da66175598 7031 case HRTIM_EVENT_6:
mbed_official 237:f3da66175598 7032 {
mbed_official 237:f3da66175598 7033 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_6;
mbed_official 237:f3da66175598 7034 }
mbed_official 237:f3da66175598 7035 break;
mbed_official 237:f3da66175598 7036 case HRTIM_EVENT_7:
mbed_official 237:f3da66175598 7037 {
mbed_official 237:f3da66175598 7038 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_7;
mbed_official 237:f3da66175598 7039 }
mbed_official 237:f3da66175598 7040 break;
mbed_official 237:f3da66175598 7041 case HRTIM_EVENT_8:
mbed_official 237:f3da66175598 7042 {
mbed_official 237:f3da66175598 7043 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_8;
mbed_official 237:f3da66175598 7044 }
mbed_official 237:f3da66175598 7045 break;
mbed_official 237:f3da66175598 7046 case HRTIM_EVENT_9:
mbed_official 237:f3da66175598 7047 {
mbed_official 237:f3da66175598 7048 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_9;
mbed_official 237:f3da66175598 7049 }
mbed_official 237:f3da66175598 7050 break;
mbed_official 237:f3da66175598 7051 case HRTIM_EVENT_10:
mbed_official 237:f3da66175598 7052 {
mbed_official 237:f3da66175598 7053 hhrtim->Instance->sTimerxRegs[TimerIdx].RSTxR = HRTIM_TIMRESETTRIGGER_EEV_10;
mbed_official 237:f3da66175598 7054 }
mbed_official 237:f3da66175598 7055 break;
mbed_official 237:f3da66175598 7056 }
mbed_official 237:f3da66175598 7057 }
mbed_official 237:f3da66175598 7058
mbed_official 237:f3da66175598 7059 /**
mbed_official 237:f3da66175598 7060 * @brief Returns the interrupt to enable or disable according to the
mbed_official 237:f3da66175598 7061 * OC mode.
mbed_official 237:f3da66175598 7062 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7063 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 7064 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 7065 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 7066 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 7067 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 7068 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 7069 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 7070 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 7071 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 7072 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 7073 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 7074 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 7075 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 7076 * @retval Interrupt to enable or disable
mbed_official 237:f3da66175598 7077 */
mbed_official 237:f3da66175598 7078 static uint32_t HRTIM_GetITFromOCMode(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7079 uint32_t TimerIdx,
mbed_official 237:f3da66175598 7080 uint32_t OCChannel)
mbed_official 237:f3da66175598 7081 {
mbed_official 237:f3da66175598 7082 uint32_t hrtim_set;
mbed_official 237:f3da66175598 7083 uint32_t hrtim_reset;
mbed_official 237:f3da66175598 7084 uint32_t interrupt = 0;
mbed_official 237:f3da66175598 7085
mbed_official 237:f3da66175598 7086 switch (OCChannel)
mbed_official 237:f3da66175598 7087 {
mbed_official 237:f3da66175598 7088 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 7089 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 7090 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 7091 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 7092 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 7093 {
mbed_official 237:f3da66175598 7094 /* Retreives actual OC mode and set interrupt accordingly */
mbed_official 237:f3da66175598 7095 hrtim_set = hhrtim->Instance->sTimerxRegs[TimerIdx].SETx1R;
mbed_official 237:f3da66175598 7096 hrtim_reset = hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx1R;
mbed_official 237:f3da66175598 7097
mbed_official 237:f3da66175598 7098 if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1) &&
mbed_official 237:f3da66175598 7099 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1))
mbed_official 237:f3da66175598 7100 {
mbed_official 237:f3da66175598 7101 /* OC mode: HRTIM_BASICOCMODE_TOGGLE */
mbed_official 237:f3da66175598 7102 interrupt = HRTIM_TIM_IT_CMP1;
mbed_official 237:f3da66175598 7103 }
mbed_official 237:f3da66175598 7104 else if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1) &&
mbed_official 237:f3da66175598 7105 (hrtim_reset == 0))
mbed_official 237:f3da66175598 7106 {
mbed_official 237:f3da66175598 7107 /* OC mode: HRTIM_BASICOCMODE_ACTIVE */
mbed_official 237:f3da66175598 7108 interrupt = HRTIM_TIM_IT_SET1;
mbed_official 237:f3da66175598 7109 }
mbed_official 237:f3da66175598 7110 else if ((hrtim_set == 0) &&
mbed_official 237:f3da66175598 7111 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1))
mbed_official 237:f3da66175598 7112 {
mbed_official 237:f3da66175598 7113 /* OC mode: HRTIM_BASICOCMODE_INACTIVE */
mbed_official 237:f3da66175598 7114 interrupt = HRTIM_TIM_IT_RST1;
mbed_official 237:f3da66175598 7115 }
mbed_official 237:f3da66175598 7116 }
mbed_official 237:f3da66175598 7117 break;
mbed_official 237:f3da66175598 7118 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 7119 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 7120 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 7121 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 7122 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 7123 {
mbed_official 237:f3da66175598 7124 /* Retreives actual OC mode and set interrupt accordingly */
mbed_official 237:f3da66175598 7125 hrtim_set = hhrtim->Instance->sTimerxRegs[TimerIdx].SETx2R;
mbed_official 237:f3da66175598 7126 hrtim_reset = hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx2R;
mbed_official 237:f3da66175598 7127
mbed_official 237:f3da66175598 7128 if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2) &&
mbed_official 237:f3da66175598 7129 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2))
mbed_official 237:f3da66175598 7130 {
mbed_official 237:f3da66175598 7131 /* OC mode: HRTIM_BASICOCMODE_TOGGLE */
mbed_official 237:f3da66175598 7132 interrupt = HRTIM_TIM_IT_CMP2;
mbed_official 237:f3da66175598 7133 }
mbed_official 237:f3da66175598 7134 else if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2) &&
mbed_official 237:f3da66175598 7135 (hrtim_reset == 0))
mbed_official 237:f3da66175598 7136 {
mbed_official 237:f3da66175598 7137 /* OC mode: HRTIM_BASICOCMODE_ACTIVE */
mbed_official 237:f3da66175598 7138 interrupt = HRTIM_TIM_IT_SET2;
mbed_official 237:f3da66175598 7139 }
mbed_official 237:f3da66175598 7140 else if ((hrtim_set == 0) &&
mbed_official 237:f3da66175598 7141 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2))
mbed_official 237:f3da66175598 7142 {
mbed_official 237:f3da66175598 7143 /* OC mode: HRTIM_BASICOCMODE_INACTIVE */
mbed_official 237:f3da66175598 7144 interrupt = HRTIM_TIM_IT_RST2;
mbed_official 237:f3da66175598 7145 }
mbed_official 237:f3da66175598 7146 }
mbed_official 237:f3da66175598 7147 break;
mbed_official 237:f3da66175598 7148 }
mbed_official 237:f3da66175598 7149
mbed_official 237:f3da66175598 7150 return interrupt;
mbed_official 237:f3da66175598 7151 }
mbed_official 237:f3da66175598 7152
mbed_official 237:f3da66175598 7153 /**
mbed_official 237:f3da66175598 7154 * @brief Returns the DMA request to enable or disable according to the
mbed_official 237:f3da66175598 7155 * OC mode.
mbed_official 237:f3da66175598 7156 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7157 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 7158 * @param OCChannel: Timer output
mbed_official 237:f3da66175598 7159 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 7160 * @arg HRTIM_OUTPUT_TA1: Timer A - Ouput 1
mbed_official 237:f3da66175598 7161 * @arg HRTIM_OUTPUT_TA2: Timer A - Ouput 2
mbed_official 237:f3da66175598 7162 * @arg HRTIM_OUTPUT_TB1: Timer B - Ouput 1
mbed_official 237:f3da66175598 7163 * @arg HRTIM_OUTPUT_TB2: Timer B - Ouput 2
mbed_official 237:f3da66175598 7164 * @arg HRTIM_OUTPUT_TC1: Timer C - Ouput 1
mbed_official 237:f3da66175598 7165 * @arg HRTIM_OUTPUT_TC2: Timer C - Ouput 2
mbed_official 237:f3da66175598 7166 * @arg HRTIM_OUTPUT_TD1: Timer D - Ouput 1
mbed_official 237:f3da66175598 7167 * @arg HRTIM_OUTPUT_TD2: Timer D - Ouput 2
mbed_official 237:f3da66175598 7168 * @arg HRTIM_OUTPUT_TE1: Timer E - Ouput 1
mbed_official 237:f3da66175598 7169 * @arg HRTIM_OUTPUT_TE2: Timer E - Ouput 2
mbed_official 237:f3da66175598 7170 * @retval DMA request to enable or disable
mbed_official 237:f3da66175598 7171 */
mbed_official 237:f3da66175598 7172 static uint32_t HRTIM_GetDMAFromOCMode(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7173 uint32_t TimerIdx,
mbed_official 237:f3da66175598 7174 uint32_t OCChannel)
mbed_official 237:f3da66175598 7175 {
mbed_official 237:f3da66175598 7176 uint32_t hrtim_set;
mbed_official 237:f3da66175598 7177 uint32_t hrtim_reset;
mbed_official 237:f3da66175598 7178 uint32_t dma_request = 0;
mbed_official 237:f3da66175598 7179
mbed_official 237:f3da66175598 7180 switch (OCChannel)
mbed_official 237:f3da66175598 7181 {
mbed_official 237:f3da66175598 7182 case HRTIM_OUTPUT_TA1:
mbed_official 237:f3da66175598 7183 case HRTIM_OUTPUT_TB1:
mbed_official 237:f3da66175598 7184 case HRTIM_OUTPUT_TC1:
mbed_official 237:f3da66175598 7185 case HRTIM_OUTPUT_TD1:
mbed_official 237:f3da66175598 7186 case HRTIM_OUTPUT_TE1:
mbed_official 237:f3da66175598 7187 {
mbed_official 237:f3da66175598 7188 /* Retreives actual OC mode and set dma_request accordingly */
mbed_official 237:f3da66175598 7189 hrtim_set = hhrtim->Instance->sTimerxRegs[TimerIdx].SETx1R;
mbed_official 237:f3da66175598 7190 hrtim_reset = hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx1R;
mbed_official 237:f3da66175598 7191
mbed_official 237:f3da66175598 7192 if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1) &&
mbed_official 237:f3da66175598 7193 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1))
mbed_official 237:f3da66175598 7194 {
mbed_official 237:f3da66175598 7195 /* OC mode: HRTIM_BASICOCMODE_TOGGLE */
mbed_official 237:f3da66175598 7196 dma_request = HRTIM_TIM_DMA_CMP1;
mbed_official 237:f3da66175598 7197 }
mbed_official 237:f3da66175598 7198 else if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1) &&
mbed_official 237:f3da66175598 7199 (hrtim_reset == 0))
mbed_official 237:f3da66175598 7200 {
mbed_official 237:f3da66175598 7201 /* OC mode: HRTIM_BASICOCMODE_ACTIVE */
mbed_official 237:f3da66175598 7202 dma_request = HRTIM_TIM_DMA_SET1;
mbed_official 237:f3da66175598 7203 }
mbed_official 237:f3da66175598 7204 else if ((hrtim_set == 0) &&
mbed_official 237:f3da66175598 7205 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP1) == HRTIM_OUTPUTSET_TIMCMP1))
mbed_official 237:f3da66175598 7206 {
mbed_official 237:f3da66175598 7207 /* OC mode: HRTIM_BASICOCMODE_INACTIVE */
mbed_official 237:f3da66175598 7208 dma_request = HRTIM_TIM_DMA_RST1;
mbed_official 237:f3da66175598 7209 }
mbed_official 237:f3da66175598 7210 }
mbed_official 237:f3da66175598 7211 break;
mbed_official 237:f3da66175598 7212 case HRTIM_OUTPUT_TA2:
mbed_official 237:f3da66175598 7213 case HRTIM_OUTPUT_TB2:
mbed_official 237:f3da66175598 7214 case HRTIM_OUTPUT_TC2:
mbed_official 237:f3da66175598 7215 case HRTIM_OUTPUT_TD2:
mbed_official 237:f3da66175598 7216 case HRTIM_OUTPUT_TE2:
mbed_official 237:f3da66175598 7217 {
mbed_official 237:f3da66175598 7218 /* Retreives actual OC mode and set dma_request accordingly */
mbed_official 237:f3da66175598 7219 hrtim_set = hhrtim->Instance->sTimerxRegs[TimerIdx].SETx2R;
mbed_official 237:f3da66175598 7220 hrtim_reset = hhrtim->Instance->sTimerxRegs[TimerIdx].RSTx2R;
mbed_official 237:f3da66175598 7221
mbed_official 237:f3da66175598 7222 if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2) &&
mbed_official 237:f3da66175598 7223 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2))
mbed_official 237:f3da66175598 7224 {
mbed_official 237:f3da66175598 7225 /* OC mode: HRTIM_BASICOCMODE_TOGGLE */
mbed_official 237:f3da66175598 7226 dma_request = HRTIM_TIM_DMA_CMP2;
mbed_official 237:f3da66175598 7227 }
mbed_official 237:f3da66175598 7228 else if (((hrtim_set & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2) &&
mbed_official 237:f3da66175598 7229 (hrtim_reset == 0))
mbed_official 237:f3da66175598 7230 {
mbed_official 237:f3da66175598 7231 /* OC mode: HRTIM_BASICOCMODE_ACTIVE */
mbed_official 237:f3da66175598 7232 dma_request = HRTIM_TIM_DMA_SET2;
mbed_official 237:f3da66175598 7233 }
mbed_official 237:f3da66175598 7234 else if ((hrtim_set == 0) &&
mbed_official 237:f3da66175598 7235 ((hrtim_reset & HRTIM_OUTPUTSET_TIMCMP2) == HRTIM_OUTPUTSET_TIMCMP2))
mbed_official 237:f3da66175598 7236 {
mbed_official 237:f3da66175598 7237 /* OC mode: HRTIM_BASICOCMODE_INACTIVE */
mbed_official 237:f3da66175598 7238 dma_request = HRTIM_TIM_DMA_RST2;
mbed_official 237:f3da66175598 7239 }
mbed_official 237:f3da66175598 7240 }
mbed_official 237:f3da66175598 7241 break;
mbed_official 237:f3da66175598 7242 }
mbed_official 237:f3da66175598 7243
mbed_official 237:f3da66175598 7244 return dma_request;
mbed_official 237:f3da66175598 7245 }
mbed_official 237:f3da66175598 7246
mbed_official 237:f3da66175598 7247 static DMA_HandleTypeDef * HRTIM_GetDMAHandleFromTimerIdx(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7248 uint32_t TimerIdx)
mbed_official 237:f3da66175598 7249 {
mbed_official 237:f3da66175598 7250 DMA_HandleTypeDef * hdma = (DMA_HandleTypeDef *)NULL;
mbed_official 237:f3da66175598 7251
mbed_official 237:f3da66175598 7252 switch (TimerIdx)
mbed_official 237:f3da66175598 7253 {
mbed_official 237:f3da66175598 7254 case HRTIM_TIMERINDEX_MASTER:
mbed_official 237:f3da66175598 7255 {
mbed_official 237:f3da66175598 7256 hdma = hhrtim->hdmaMaster;
mbed_official 237:f3da66175598 7257 }
mbed_official 237:f3da66175598 7258 break;
mbed_official 237:f3da66175598 7259 case HRTIM_TIMERINDEX_TIMER_A:
mbed_official 237:f3da66175598 7260 {
mbed_official 237:f3da66175598 7261 hdma = hhrtim->hdmaTimerA;
mbed_official 237:f3da66175598 7262 }
mbed_official 237:f3da66175598 7263 break;
mbed_official 237:f3da66175598 7264 case HRTIM_TIMERINDEX_TIMER_B:
mbed_official 237:f3da66175598 7265 {
mbed_official 237:f3da66175598 7266 hdma = hhrtim->hdmaTimerB;
mbed_official 237:f3da66175598 7267 }
mbed_official 237:f3da66175598 7268 break;
mbed_official 237:f3da66175598 7269 case HRTIM_TIMERINDEX_TIMER_C:
mbed_official 237:f3da66175598 7270 {
mbed_official 237:f3da66175598 7271 hdma = hhrtim->hdmaTimerC;
mbed_official 237:f3da66175598 7272 }
mbed_official 237:f3da66175598 7273 break;
mbed_official 237:f3da66175598 7274 case HRTIM_TIMERINDEX_TIMER_D:
mbed_official 237:f3da66175598 7275 {
mbed_official 237:f3da66175598 7276 hdma = hhrtim->hdmaTimerD;
mbed_official 237:f3da66175598 7277 }
mbed_official 237:f3da66175598 7278 break;
mbed_official 237:f3da66175598 7279 case HRTIM_TIMERINDEX_TIMER_E:
mbed_official 237:f3da66175598 7280 {
mbed_official 237:f3da66175598 7281 hdma = hhrtim->hdmaTimerE;
mbed_official 237:f3da66175598 7282 }
mbed_official 237:f3da66175598 7283 break;
mbed_official 237:f3da66175598 7284 }
mbed_official 237:f3da66175598 7285
mbed_official 237:f3da66175598 7286 return hdma;
mbed_official 237:f3da66175598 7287 }
mbed_official 237:f3da66175598 7288
mbed_official 237:f3da66175598 7289 static uint32_t GetTimerIdxFromDMAHandle(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 7290 {
mbed_official 237:f3da66175598 7291 uint32_t timed_idx = 0xFFFFFFFF;
mbed_official 237:f3da66175598 7292
mbed_official 237:f3da66175598 7293 if (hdma->Instance == DMA1_Channel2)
mbed_official 237:f3da66175598 7294 {
mbed_official 237:f3da66175598 7295 timed_idx = HRTIM_TIMERINDEX_MASTER;
mbed_official 237:f3da66175598 7296 }
mbed_official 237:f3da66175598 7297 else if (hdma->Instance == DMA1_Channel3)
mbed_official 237:f3da66175598 7298 {
mbed_official 237:f3da66175598 7299 timed_idx = HRTIM_TIMERINDEX_TIMER_A;
mbed_official 237:f3da66175598 7300 }
mbed_official 237:f3da66175598 7301 else if (hdma->Instance == DMA1_Channel4)
mbed_official 237:f3da66175598 7302 {
mbed_official 237:f3da66175598 7303 timed_idx = HRTIM_TIMERINDEX_TIMER_B;
mbed_official 237:f3da66175598 7304 }
mbed_official 237:f3da66175598 7305 else if (hdma->Instance == DMA1_Channel5)
mbed_official 237:f3da66175598 7306 {
mbed_official 237:f3da66175598 7307 timed_idx = HRTIM_TIMERINDEX_TIMER_C;
mbed_official 237:f3da66175598 7308 }
mbed_official 237:f3da66175598 7309 else if (hdma->Instance == DMA1_Channel6)
mbed_official 237:f3da66175598 7310 {
mbed_official 237:f3da66175598 7311 timed_idx = HRTIM_TIMERINDEX_TIMER_D;
mbed_official 237:f3da66175598 7312 }
mbed_official 237:f3da66175598 7313 else if (hdma->Instance == DMA1_Channel7)
mbed_official 237:f3da66175598 7314 {
mbed_official 237:f3da66175598 7315 timed_idx = HRTIM_TIMERINDEX_TIMER_E;
mbed_official 237:f3da66175598 7316 }
mbed_official 237:f3da66175598 7317
mbed_official 237:f3da66175598 7318 return timed_idx;
mbed_official 237:f3da66175598 7319 }
mbed_official 237:f3da66175598 7320
mbed_official 237:f3da66175598 7321 /**
mbed_official 237:f3da66175598 7322 * @brief Forces an immediate transfer from the preload to the active
mbed_official 237:f3da66175598 7323 * registers.
mbed_official 237:f3da66175598 7324 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7325 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 7326 * @retval None
mbed_official 237:f3da66175598 7327 */
mbed_official 237:f3da66175598 7328 static void HRTIM_ForceRegistersUpdate(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7329 uint32_t TimerIdx)
mbed_official 237:f3da66175598 7330 {
mbed_official 237:f3da66175598 7331 switch (TimerIdx)
mbed_official 237:f3da66175598 7332 {
mbed_official 237:f3da66175598 7333 case HRTIM_TIMERINDEX_MASTER:
mbed_official 237:f3da66175598 7334 {
mbed_official 237:f3da66175598 7335 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_MSWU;
mbed_official 237:f3da66175598 7336 }
mbed_official 237:f3da66175598 7337 break;
mbed_official 237:f3da66175598 7338 case HRTIM_TIMERINDEX_TIMER_A:
mbed_official 237:f3da66175598 7339 {
mbed_official 237:f3da66175598 7340 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_TASWU;
mbed_official 237:f3da66175598 7341 }
mbed_official 237:f3da66175598 7342 break;
mbed_official 237:f3da66175598 7343 case HRTIM_TIMERINDEX_TIMER_B:
mbed_official 237:f3da66175598 7344 {
mbed_official 237:f3da66175598 7345 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_TBSWU;
mbed_official 237:f3da66175598 7346 }
mbed_official 237:f3da66175598 7347 break;
mbed_official 237:f3da66175598 7348 case HRTIM_TIMERINDEX_TIMER_C:
mbed_official 237:f3da66175598 7349 {
mbed_official 237:f3da66175598 7350 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_TCSWU;
mbed_official 237:f3da66175598 7351 }
mbed_official 237:f3da66175598 7352 break;
mbed_official 237:f3da66175598 7353 case HRTIM_TIMERINDEX_TIMER_D:
mbed_official 237:f3da66175598 7354 {
mbed_official 237:f3da66175598 7355 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_TDSWU;
mbed_official 237:f3da66175598 7356 }
mbed_official 237:f3da66175598 7357 break;
mbed_official 237:f3da66175598 7358 case HRTIM_TIMERINDEX_TIMER_E:
mbed_official 237:f3da66175598 7359 {
mbed_official 237:f3da66175598 7360 hhrtim->Instance->sCommonRegs.CR2 |= HRTIM_CR2_TESWU;
mbed_official 237:f3da66175598 7361 }
mbed_official 237:f3da66175598 7362 break;
mbed_official 237:f3da66175598 7363 }
mbed_official 237:f3da66175598 7364 }
mbed_official 237:f3da66175598 7365
mbed_official 237:f3da66175598 7366
mbed_official 237:f3da66175598 7367 /**
mbed_official 237:f3da66175598 7368 * @brief HRTIM interrupts service routine
mbed_official 237:f3da66175598 7369 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7370 * @retval None
mbed_official 237:f3da66175598 7371 */
mbed_official 237:f3da66175598 7372 static void HRTIM_HRTIM_ISR(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 7373 {
mbed_official 237:f3da66175598 7374 /* Fault 1 event */
mbed_official 237:f3da66175598 7375 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_FLT1) != RESET)
mbed_official 237:f3da66175598 7376 {
mbed_official 237:f3da66175598 7377 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_FLT1) != RESET)
mbed_official 237:f3da66175598 7378 {
mbed_official 237:f3da66175598 7379 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_FLT1);
mbed_official 237:f3da66175598 7380
mbed_official 237:f3da66175598 7381 /* Invoke Fault 1 event callback */
mbed_official 237:f3da66175598 7382 HAL_HRTIM_Fault1Callback(hhrtim);
mbed_official 237:f3da66175598 7383 }
mbed_official 237:f3da66175598 7384 }
mbed_official 237:f3da66175598 7385
mbed_official 237:f3da66175598 7386 /* Fault 2 event */
mbed_official 237:f3da66175598 7387 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_FLT2) != RESET)
mbed_official 237:f3da66175598 7388 {
mbed_official 237:f3da66175598 7389 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_FLT2) != RESET)
mbed_official 237:f3da66175598 7390 {
mbed_official 237:f3da66175598 7391 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_FLT2);
mbed_official 237:f3da66175598 7392
mbed_official 237:f3da66175598 7393 /* Invoke Fault 2 event callback */
mbed_official 237:f3da66175598 7394 HAL_HRTIM_Fault2Callback(hhrtim);
mbed_official 237:f3da66175598 7395 }
mbed_official 237:f3da66175598 7396 }
mbed_official 237:f3da66175598 7397
mbed_official 237:f3da66175598 7398 /* Fault 3 event */
mbed_official 237:f3da66175598 7399 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_FLT3) != RESET)
mbed_official 237:f3da66175598 7400 {
mbed_official 237:f3da66175598 7401 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_FLT3) != RESET)
mbed_official 237:f3da66175598 7402 {
mbed_official 237:f3da66175598 7403 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_FLT3);
mbed_official 237:f3da66175598 7404
mbed_official 237:f3da66175598 7405 /* Invoke Fault 3 event callback */
mbed_official 237:f3da66175598 7406 HAL_HRTIM_Fault3Callback(hhrtim);
mbed_official 237:f3da66175598 7407 }
mbed_official 237:f3da66175598 7408 }
mbed_official 237:f3da66175598 7409
mbed_official 237:f3da66175598 7410 /* Fault 4 event */
mbed_official 237:f3da66175598 7411 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_FLT4) != RESET)
mbed_official 237:f3da66175598 7412 {
mbed_official 237:f3da66175598 7413 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_FLT4) != RESET)
mbed_official 237:f3da66175598 7414 {
mbed_official 237:f3da66175598 7415 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_FLT4);
mbed_official 237:f3da66175598 7416
mbed_official 237:f3da66175598 7417 /* Invoke Fault 4 event callback */
mbed_official 237:f3da66175598 7418 HAL_HRTIM_Fault4Callback(hhrtim);
mbed_official 237:f3da66175598 7419 }
mbed_official 237:f3da66175598 7420 }
mbed_official 237:f3da66175598 7421
mbed_official 237:f3da66175598 7422 /* Fault 5 event */
mbed_official 237:f3da66175598 7423 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_FLT5) != RESET)
mbed_official 237:f3da66175598 7424 {
mbed_official 237:f3da66175598 7425 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_FLT5) != RESET)
mbed_official 237:f3da66175598 7426 {
mbed_official 237:f3da66175598 7427 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_FLT5);
mbed_official 237:f3da66175598 7428
mbed_official 237:f3da66175598 7429 /* Invoke Fault 5 event callback */
mbed_official 237:f3da66175598 7430 HAL_HRTIM_Fault5Callback(hhrtim);
mbed_official 237:f3da66175598 7431 }
mbed_official 237:f3da66175598 7432 }
mbed_official 237:f3da66175598 7433
mbed_official 237:f3da66175598 7434 /* System fault event */
mbed_official 237:f3da66175598 7435 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_SYSFLT) != RESET)
mbed_official 237:f3da66175598 7436 {
mbed_official 237:f3da66175598 7437 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_SYSFLT) != RESET)
mbed_official 237:f3da66175598 7438 {
mbed_official 237:f3da66175598 7439 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_SYSFLT);
mbed_official 237:f3da66175598 7440
mbed_official 237:f3da66175598 7441 /* Invoke System fault event callback */
mbed_official 237:f3da66175598 7442 HAL_HRTIM_SystemFaultCallback(hhrtim);
mbed_official 237:f3da66175598 7443 }
mbed_official 237:f3da66175598 7444 }
mbed_official 237:f3da66175598 7445 }
mbed_official 237:f3da66175598 7446
mbed_official 237:f3da66175598 7447 /**
mbed_official 237:f3da66175598 7448 * @brief Master timer interrupts service routine
mbed_official 237:f3da66175598 7449 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7450 * @retval None
mbed_official 237:f3da66175598 7451 */
mbed_official 237:f3da66175598 7452 static void HRTIM_Master_ISR(HRTIM_HandleTypeDef * hhrtim)
mbed_official 237:f3da66175598 7453 {
mbed_official 237:f3da66175598 7454 /* DLL calibration ready event */
mbed_official 237:f3da66175598 7455 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_DLLRDY) != RESET)
mbed_official 237:f3da66175598 7456 {
mbed_official 237:f3da66175598 7457 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_DLLRDY) != RESET)
mbed_official 237:f3da66175598 7458 {
mbed_official 237:f3da66175598 7459 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_DLLRDY);
mbed_official 237:f3da66175598 7460
mbed_official 237:f3da66175598 7461 /* Set HRTIM State */
mbed_official 237:f3da66175598 7462 hhrtim->State = HAL_HRTIM_STATE_READY;
mbed_official 237:f3da66175598 7463
mbed_official 237:f3da66175598 7464 /* Process unlocked */
mbed_official 237:f3da66175598 7465 __HAL_UNLOCK(hhrtim);
mbed_official 237:f3da66175598 7466
mbed_official 237:f3da66175598 7467 /* Invoke System fault event callback */
mbed_official 237:f3da66175598 7468 HAL_HRTIM_DLLCalbrationReadyCallback(hhrtim);
mbed_official 237:f3da66175598 7469 }
mbed_official 237:f3da66175598 7470 }
mbed_official 237:f3da66175598 7471
mbed_official 237:f3da66175598 7472 /* Burst mode period event */
mbed_official 237:f3da66175598 7473 if(__HAL_HRTIM_GET_FLAG(hhrtim, HRTIM_FLAG_BMPER) != RESET)
mbed_official 237:f3da66175598 7474 {
mbed_official 237:f3da66175598 7475 if(__HAL_HRTIM_GET_ITSTATUS(hhrtim, HRTIM_IT_BMPER) != RESET)
mbed_official 237:f3da66175598 7476 {
mbed_official 237:f3da66175598 7477 __HAL_HRTIM_CLEAR_IT(hhrtim, HRTIM_IT_BMPER);
mbed_official 237:f3da66175598 7478
mbed_official 237:f3da66175598 7479 /* Invoke Burst mode period event callback */
mbed_official 237:f3da66175598 7480 HAL_HRTIM_BurstModePeriodCallback(hhrtim);
mbed_official 237:f3da66175598 7481 }
mbed_official 237:f3da66175598 7482 }
mbed_official 237:f3da66175598 7483
mbed_official 237:f3da66175598 7484 /* Master timer compare 1 event */
mbed_official 237:f3da66175598 7485 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MCMP1) != RESET)
mbed_official 237:f3da66175598 7486 {
mbed_official 237:f3da66175598 7487 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MCMP1) != RESET)
mbed_official 237:f3da66175598 7488 {
mbed_official 237:f3da66175598 7489 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MCMP1);
mbed_official 237:f3da66175598 7490
mbed_official 237:f3da66175598 7491 /* Invoke compare 1 event callback */
mbed_official 237:f3da66175598 7492 HAL_HRTIM_Compare1EventCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7493 }
mbed_official 237:f3da66175598 7494 }
mbed_official 237:f3da66175598 7495
mbed_official 237:f3da66175598 7496 /* Master timer compare 2 event */
mbed_official 237:f3da66175598 7497 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MCMP2) != RESET)
mbed_official 237:f3da66175598 7498 {
mbed_official 237:f3da66175598 7499 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MCMP2) != RESET)
mbed_official 237:f3da66175598 7500 {
mbed_official 237:f3da66175598 7501 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MCMP2);
mbed_official 237:f3da66175598 7502
mbed_official 237:f3da66175598 7503 /* Invoke compare 2 event callback */
mbed_official 237:f3da66175598 7504 HAL_HRTIM_Compare2EventCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7505 }
mbed_official 237:f3da66175598 7506 }
mbed_official 237:f3da66175598 7507
mbed_official 237:f3da66175598 7508 /* Master timer compare 3 event */
mbed_official 237:f3da66175598 7509 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MCMP3) != RESET)
mbed_official 237:f3da66175598 7510 {
mbed_official 237:f3da66175598 7511 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MCMP3) != RESET)
mbed_official 237:f3da66175598 7512 {
mbed_official 237:f3da66175598 7513 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MCMP3);
mbed_official 237:f3da66175598 7514
mbed_official 237:f3da66175598 7515 /* Invoke compare 3 event callback */
mbed_official 237:f3da66175598 7516 HAL_HRTIM_Compare3EventCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7517 }
mbed_official 237:f3da66175598 7518 }
mbed_official 237:f3da66175598 7519
mbed_official 237:f3da66175598 7520 /* Master timer compare 4 event */
mbed_official 237:f3da66175598 7521 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MCMP4) != RESET)
mbed_official 237:f3da66175598 7522 {
mbed_official 237:f3da66175598 7523 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MCMP4) != RESET)
mbed_official 237:f3da66175598 7524 {
mbed_official 237:f3da66175598 7525 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MCMP4);
mbed_official 237:f3da66175598 7526
mbed_official 237:f3da66175598 7527 /* Invoke compare 4 event callback */
mbed_official 237:f3da66175598 7528 HAL_HRTIM_Compare4EventCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7529 }
mbed_official 237:f3da66175598 7530 }
mbed_official 237:f3da66175598 7531
mbed_official 237:f3da66175598 7532 /* Master timer repetition event */
mbed_official 237:f3da66175598 7533 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MREP) != RESET)
mbed_official 237:f3da66175598 7534 {
mbed_official 237:f3da66175598 7535 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MREP) != RESET)
mbed_official 237:f3da66175598 7536 {
mbed_official 237:f3da66175598 7537 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MREP);
mbed_official 237:f3da66175598 7538
mbed_official 237:f3da66175598 7539 /* Invoke repetition event callback */
mbed_official 237:f3da66175598 7540 HAL_HRTIM_RepetitionEventCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7541 }
mbed_official 237:f3da66175598 7542 }
mbed_official 237:f3da66175598 7543
mbed_official 237:f3da66175598 7544 /* Synchronization input event */
mbed_official 237:f3da66175598 7545 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_SYNC) != RESET)
mbed_official 237:f3da66175598 7546 {
mbed_official 237:f3da66175598 7547 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_SYNC) != RESET)
mbed_official 237:f3da66175598 7548 {
mbed_official 237:f3da66175598 7549 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_SYNC);
mbed_official 237:f3da66175598 7550
mbed_official 237:f3da66175598 7551 /* Invoke synchronization event callback */
mbed_official 237:f3da66175598 7552 HAL_HRTIM_SynchronizationEventCallback(hhrtim);
mbed_official 237:f3da66175598 7553 }
mbed_official 237:f3da66175598 7554 }
mbed_official 237:f3da66175598 7555
mbed_official 237:f3da66175598 7556 /* Master timer registers update event */
mbed_official 237:f3da66175598 7557 if(__HAL_HRTIM_MASTER_GET_FLAG(hhrtim, HRTIM_MASTER_FLAG_MUPD) != RESET)
mbed_official 237:f3da66175598 7558 {
mbed_official 237:f3da66175598 7559 if(__HAL_HRTIM_MASTER_GET_ITSTATUS(hhrtim, HRTIM_MASTER_IT_MUPD) != RESET)
mbed_official 237:f3da66175598 7560 {
mbed_official 237:f3da66175598 7561 __HAL_HRTIM_MASTER_CLEAR_IT(hhrtim, HRTIM_MASTER_IT_MUPD);
mbed_official 237:f3da66175598 7562
mbed_official 237:f3da66175598 7563 /* Invoke registers update event callback */
mbed_official 237:f3da66175598 7564 HAL_HRTIM_RegistersUpdateCallback(hhrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7565 }
mbed_official 237:f3da66175598 7566 }
mbed_official 237:f3da66175598 7567 }
mbed_official 237:f3da66175598 7568
mbed_official 237:f3da66175598 7569 /**
mbed_official 237:f3da66175598 7570 * @brief Timer interrupts service routine
mbed_official 237:f3da66175598 7571 * @param hhrtim: pointer to HAL HRTIM handle
mbed_official 237:f3da66175598 7572 * @param TimerIdx: Timer index
mbed_official 237:f3da66175598 7573 * This parameter can be one of the following values:
mbed_official 237:f3da66175598 7574 * @arg HRTIM_TIMERINDEX_TIMER_A for timer A
mbed_official 237:f3da66175598 7575 * @arg HRTIM_TIMERINDEX_TIMER_B for timer B
mbed_official 237:f3da66175598 7576 * @arg HRTIM_TIMERINDEX_TIMER_C for timer C
mbed_official 237:f3da66175598 7577 * @arg HRTIM_TIMERINDEX_TIMER_D for timer D
mbed_official 237:f3da66175598 7578 * @arg HRTIM_TIMERINDEX_TIMER_E for timer E
mbed_official 237:f3da66175598 7579 * @retval None
mbed_official 237:f3da66175598 7580 */
mbed_official 237:f3da66175598 7581 static void HRTIM_Timer_ISR(HRTIM_HandleTypeDef * hhrtim,
mbed_official 237:f3da66175598 7582 uint32_t TimerIdx)
mbed_official 237:f3da66175598 7583 {
mbed_official 237:f3da66175598 7584 /* Timer compare 1 event */
mbed_official 237:f3da66175598 7585 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CMP1) != RESET)
mbed_official 237:f3da66175598 7586 {
mbed_official 237:f3da66175598 7587 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1) != RESET)
mbed_official 237:f3da66175598 7588 {
mbed_official 237:f3da66175598 7589 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP1);
mbed_official 237:f3da66175598 7590
mbed_official 237:f3da66175598 7591 /* Invoke compare 1 event callback */
mbed_official 237:f3da66175598 7592 HAL_HRTIM_Compare1EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7593 }
mbed_official 237:f3da66175598 7594 }
mbed_official 237:f3da66175598 7595
mbed_official 237:f3da66175598 7596 /* Timer compare 2 event */
mbed_official 237:f3da66175598 7597 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CMP2) != RESET)
mbed_official 237:f3da66175598 7598 {
mbed_official 237:f3da66175598 7599 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2) != RESET)
mbed_official 237:f3da66175598 7600 {
mbed_official 237:f3da66175598 7601 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP2);
mbed_official 237:f3da66175598 7602
mbed_official 237:f3da66175598 7603 /* Invoke compare 2 event callback */
mbed_official 237:f3da66175598 7604 HAL_HRTIM_Compare2EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7605 }
mbed_official 237:f3da66175598 7606 }
mbed_official 237:f3da66175598 7607
mbed_official 237:f3da66175598 7608 /* Timer compare 3 event */
mbed_official 237:f3da66175598 7609 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CMP3) != RESET)
mbed_official 237:f3da66175598 7610 {
mbed_official 237:f3da66175598 7611 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP3) != RESET)
mbed_official 237:f3da66175598 7612 {
mbed_official 237:f3da66175598 7613 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP3);
mbed_official 237:f3da66175598 7614
mbed_official 237:f3da66175598 7615 /* Invoke compare 3 event callback */
mbed_official 237:f3da66175598 7616 HAL_HRTIM_Compare3EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7617 }
mbed_official 237:f3da66175598 7618 }
mbed_official 237:f3da66175598 7619
mbed_official 237:f3da66175598 7620 /* Timer compare 4 event */
mbed_official 237:f3da66175598 7621 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CMP4) != RESET)
mbed_official 237:f3da66175598 7622 {
mbed_official 237:f3da66175598 7623 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP4) != RESET)
mbed_official 237:f3da66175598 7624 {
mbed_official 237:f3da66175598 7625 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CMP4);
mbed_official 237:f3da66175598 7626
mbed_official 237:f3da66175598 7627 /* Invoke compare 4 event callback */
mbed_official 237:f3da66175598 7628 HAL_HRTIM_Compare4EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7629 }
mbed_official 237:f3da66175598 7630 }
mbed_official 237:f3da66175598 7631
mbed_official 237:f3da66175598 7632 /* Timer repetition event */
mbed_official 237:f3da66175598 7633 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_REP) != RESET)
mbed_official 237:f3da66175598 7634 {
mbed_official 237:f3da66175598 7635 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_REP) != RESET)
mbed_official 237:f3da66175598 7636 {
mbed_official 237:f3da66175598 7637 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_REP);
mbed_official 237:f3da66175598 7638
mbed_official 237:f3da66175598 7639 /* Invoke repetition event callback */
mbed_official 237:f3da66175598 7640 HAL_HRTIM_RepetitionEventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7641 }
mbed_official 237:f3da66175598 7642 }
mbed_official 237:f3da66175598 7643
mbed_official 237:f3da66175598 7644 /* Timer registers update event */
mbed_official 237:f3da66175598 7645 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_UPD) != RESET)
mbed_official 237:f3da66175598 7646 {
mbed_official 237:f3da66175598 7647 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_UPD) != RESET)
mbed_official 237:f3da66175598 7648 {
mbed_official 237:f3da66175598 7649 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_UPD);
mbed_official 237:f3da66175598 7650
mbed_official 237:f3da66175598 7651 /* Invoke registers update event callback */
mbed_official 237:f3da66175598 7652 HAL_HRTIM_RegistersUpdateCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7653 }
mbed_official 237:f3da66175598 7654 }
mbed_official 237:f3da66175598 7655
mbed_official 237:f3da66175598 7656 /* Timer capture 1 event */
mbed_official 237:f3da66175598 7657 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CPT1) != RESET)
mbed_official 237:f3da66175598 7658 {
mbed_official 237:f3da66175598 7659 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT1) != RESET)
mbed_official 237:f3da66175598 7660 {
mbed_official 237:f3da66175598 7661 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT1);
mbed_official 237:f3da66175598 7662
mbed_official 237:f3da66175598 7663 /* Invoke capture 1 event callback */
mbed_official 237:f3da66175598 7664 HAL_HRTIM_Capture1EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7665 }
mbed_official 237:f3da66175598 7666 }
mbed_official 237:f3da66175598 7667
mbed_official 237:f3da66175598 7668 /* Timer capture 2 event */
mbed_official 237:f3da66175598 7669 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_CPT2) != RESET)
mbed_official 237:f3da66175598 7670 {
mbed_official 237:f3da66175598 7671 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT2) != RESET)
mbed_official 237:f3da66175598 7672 {
mbed_official 237:f3da66175598 7673 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_CPT2);
mbed_official 237:f3da66175598 7674
mbed_official 237:f3da66175598 7675 /* Invoke capture 2 event callback */
mbed_official 237:f3da66175598 7676 HAL_HRTIM_Capture2EventCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7677 }
mbed_official 237:f3da66175598 7678 }
mbed_official 237:f3da66175598 7679
mbed_official 237:f3da66175598 7680 /* Timer ouput 1 set event */
mbed_official 237:f3da66175598 7681 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_SET1) != RESET)
mbed_official 237:f3da66175598 7682 {
mbed_official 237:f3da66175598 7683 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_SET1) != RESET)
mbed_official 237:f3da66175598 7684 {
mbed_official 237:f3da66175598 7685 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_SET1);
mbed_official 237:f3da66175598 7686
mbed_official 237:f3da66175598 7687 /* Invoke ouput 1 set event callback */
mbed_official 237:f3da66175598 7688 HAL_HRTIM_Output1SetCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7689 }
mbed_official 237:f3da66175598 7690 }
mbed_official 237:f3da66175598 7691
mbed_official 237:f3da66175598 7692 /* Timer ouput 1 reset event */
mbed_official 237:f3da66175598 7693 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_RST1) != RESET)
mbed_official 237:f3da66175598 7694 {
mbed_official 237:f3da66175598 7695 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_RST1) != RESET)
mbed_official 237:f3da66175598 7696 {
mbed_official 237:f3da66175598 7697 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_RST1);
mbed_official 237:f3da66175598 7698
mbed_official 237:f3da66175598 7699 /* Invoke ouput 1 reset event callback */
mbed_official 237:f3da66175598 7700 HAL_HRTIM_Output1ResetCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7701 }
mbed_official 237:f3da66175598 7702 }
mbed_official 237:f3da66175598 7703
mbed_official 237:f3da66175598 7704 /* Timer ouput 2 set event */
mbed_official 237:f3da66175598 7705 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_SET2) != RESET)
mbed_official 237:f3da66175598 7706 {
mbed_official 237:f3da66175598 7707 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_SET2) != RESET)
mbed_official 237:f3da66175598 7708 {
mbed_official 237:f3da66175598 7709 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_SET2);
mbed_official 237:f3da66175598 7710
mbed_official 237:f3da66175598 7711 /* Invoke ouput 2 set event callback */
mbed_official 237:f3da66175598 7712 HAL_HRTIM_Output2SetCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7713 }
mbed_official 237:f3da66175598 7714 }
mbed_official 237:f3da66175598 7715
mbed_official 237:f3da66175598 7716 /* Timer ouput 2 reset event */
mbed_official 237:f3da66175598 7717 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_RST2) != RESET)
mbed_official 237:f3da66175598 7718 {
mbed_official 237:f3da66175598 7719 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_RST2) != RESET)
mbed_official 237:f3da66175598 7720 {
mbed_official 237:f3da66175598 7721 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_RST2);
mbed_official 237:f3da66175598 7722
mbed_official 237:f3da66175598 7723 /* Invoke ouput 2 reset event callback */
mbed_official 237:f3da66175598 7724 HAL_HRTIM_Output2ResetCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7725 }
mbed_official 237:f3da66175598 7726 }
mbed_official 237:f3da66175598 7727
mbed_official 237:f3da66175598 7728 /* Timer reset event */
mbed_official 237:f3da66175598 7729 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_RST) != RESET)
mbed_official 237:f3da66175598 7730 {
mbed_official 237:f3da66175598 7731 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_RST) != RESET)
mbed_official 237:f3da66175598 7732 {
mbed_official 237:f3da66175598 7733 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_RST);
mbed_official 237:f3da66175598 7734
mbed_official 237:f3da66175598 7735 /* Invoke timer reset callback */
mbed_official 237:f3da66175598 7736 HAL_HRTIM_CounterResetCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7737 }
mbed_official 237:f3da66175598 7738 }
mbed_official 237:f3da66175598 7739
mbed_official 237:f3da66175598 7740 /* Delayed protection event */
mbed_official 237:f3da66175598 7741 if(__HAL_HRTIM_TIMER_GET_FLAG(hhrtim, TimerIdx, HRTIM_TIM_FLAG_DLYPRT) != RESET)
mbed_official 237:f3da66175598 7742 {
mbed_official 237:f3da66175598 7743 if(__HAL_HRTIM_TIMER_GET_ITSTATUS(hhrtim, TimerIdx, HRTIM_TIM_IT_DLYPRT) != RESET)
mbed_official 237:f3da66175598 7744 {
mbed_official 237:f3da66175598 7745 __HAL_HRTIM_TIMER_CLEAR_IT(hhrtim, TimerIdx, HRTIM_TIM_IT_DLYPRT);
mbed_official 237:f3da66175598 7746
mbed_official 237:f3da66175598 7747 /* Invoke delayed protection callback */
mbed_official 237:f3da66175598 7748 HAL_HRTIM_DelayedProtectionCallback(hhrtim, TimerIdx);
mbed_official 237:f3da66175598 7749 }
mbed_official 237:f3da66175598 7750 }
mbed_official 237:f3da66175598 7751 }
mbed_official 237:f3da66175598 7752
mbed_official 237:f3da66175598 7753 /**
mbed_official 237:f3da66175598 7754 * @brief DMA callback invoked upon master timer related DMA request completion
mbed_official 237:f3da66175598 7755 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 7756 * @retval None
mbed_official 237:f3da66175598 7757 */
mbed_official 237:f3da66175598 7758 static void HRTIM_DMAMasterCplt(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 7759 {
mbed_official 237:f3da66175598 7760 HRTIM_HandleTypeDef * hrtim = (HRTIM_HandleTypeDef *)((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 7761
mbed_official 237:f3da66175598 7762 if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MCMP1) != RESET)
mbed_official 237:f3da66175598 7763 {
mbed_official 237:f3da66175598 7764 HAL_HRTIM_Compare1EventCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7765 }
mbed_official 237:f3da66175598 7766 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MCMP2) != RESET)
mbed_official 237:f3da66175598 7767 {
mbed_official 237:f3da66175598 7768 HAL_HRTIM_Compare2EventCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7769 }
mbed_official 237:f3da66175598 7770 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MCMP3) != RESET)
mbed_official 237:f3da66175598 7771 {
mbed_official 237:f3da66175598 7772 HAL_HRTIM_Compare3EventCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7773 }
mbed_official 237:f3da66175598 7774 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MCMP4) != RESET)
mbed_official 237:f3da66175598 7775 {
mbed_official 237:f3da66175598 7776 HAL_HRTIM_Compare4EventCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7777 }
mbed_official 237:f3da66175598 7778 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MREP) != RESET)
mbed_official 237:f3da66175598 7779 {
mbed_official 237:f3da66175598 7780 HAL_HRTIM_RepetitionEventCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7781 }
mbed_official 237:f3da66175598 7782 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_SYNC) != RESET)
mbed_official 237:f3da66175598 7783 {
mbed_official 237:f3da66175598 7784 HAL_HRTIM_SynchronizationEventCallback(hrtim);
mbed_official 237:f3da66175598 7785 }
mbed_official 237:f3da66175598 7786 else if ((hrtim->Instance->sMasterRegs.MDIER & HRTIM_MASTER_DMA_MUPD) != RESET)
mbed_official 237:f3da66175598 7787 {
mbed_official 237:f3da66175598 7788 HAL_HRTIM_RegistersUpdateCallback(hrtim, HRTIM_TIMERINDEX_MASTER);
mbed_official 237:f3da66175598 7789 }
mbed_official 237:f3da66175598 7790 }
mbed_official 237:f3da66175598 7791
mbed_official 237:f3da66175598 7792 /**
mbed_official 237:f3da66175598 7793 * @brief DMA callback invoked upon timer A..E related DMA request completion
mbed_official 237:f3da66175598 7794 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 7795 * @retval None
mbed_official 237:f3da66175598 7796 */
mbed_official 237:f3da66175598 7797 static void HRTIM_DMATimerxCplt(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 7798 {
mbed_official 237:f3da66175598 7799 uint8_t timer_idx;
mbed_official 237:f3da66175598 7800
mbed_official 237:f3da66175598 7801 HRTIM_HandleTypeDef * hrtim = (HRTIM_HandleTypeDef *)((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 7802
mbed_official 237:f3da66175598 7803 timer_idx = GetTimerIdxFromDMAHandle(hdma);
mbed_official 237:f3da66175598 7804
mbed_official 237:f3da66175598 7805 if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CMP1) != RESET)
mbed_official 237:f3da66175598 7806 {
mbed_official 237:f3da66175598 7807 HAL_HRTIM_Compare1EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7808 }
mbed_official 237:f3da66175598 7809 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CMP2) != RESET)
mbed_official 237:f3da66175598 7810 {
mbed_official 237:f3da66175598 7811 HAL_HRTIM_Compare2EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7812 }
mbed_official 237:f3da66175598 7813 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CMP3) != RESET)
mbed_official 237:f3da66175598 7814 {
mbed_official 237:f3da66175598 7815 HAL_HRTIM_Compare3EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7816 }
mbed_official 237:f3da66175598 7817 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CMP4) != RESET)
mbed_official 237:f3da66175598 7818 {
mbed_official 237:f3da66175598 7819 HAL_HRTIM_Compare4EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7820 }
mbed_official 237:f3da66175598 7821 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_REP) != RESET)
mbed_official 237:f3da66175598 7822 {
mbed_official 237:f3da66175598 7823 HAL_HRTIM_RepetitionEventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7824 }
mbed_official 237:f3da66175598 7825 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_UPD) != RESET)
mbed_official 237:f3da66175598 7826 {
mbed_official 237:f3da66175598 7827 HAL_HRTIM_RegistersUpdateCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7828 }
mbed_official 237:f3da66175598 7829 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CPT1) != RESET)
mbed_official 237:f3da66175598 7830 {
mbed_official 237:f3da66175598 7831 HAL_HRTIM_Capture1EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7832 }
mbed_official 237:f3da66175598 7833 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_CPT2) != RESET)
mbed_official 237:f3da66175598 7834 {
mbed_official 237:f3da66175598 7835 HAL_HRTIM_Capture2EventCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7836 }
mbed_official 237:f3da66175598 7837 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_SET1) != RESET)
mbed_official 237:f3da66175598 7838 {
mbed_official 237:f3da66175598 7839 HAL_HRTIM_Output1SetCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7840 }
mbed_official 237:f3da66175598 7841 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_RST1) != RESET)
mbed_official 237:f3da66175598 7842 {
mbed_official 237:f3da66175598 7843 HAL_HRTIM_Output1ResetCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7844 }
mbed_official 237:f3da66175598 7845 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_SET2) != RESET)
mbed_official 237:f3da66175598 7846 {
mbed_official 237:f3da66175598 7847 HAL_HRTIM_Output2SetCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7848 }
mbed_official 237:f3da66175598 7849 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_RST2) != RESET)
mbed_official 237:f3da66175598 7850 {
mbed_official 237:f3da66175598 7851 HAL_HRTIM_Output2ResetCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7852 }
mbed_official 237:f3da66175598 7853 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_RST) != RESET)
mbed_official 237:f3da66175598 7854 {
mbed_official 237:f3da66175598 7855 HAL_HRTIM_CounterResetCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7856 }
mbed_official 237:f3da66175598 7857 else if ((hrtim->Instance->sTimerxRegs[timer_idx].TIMxDIER & HRTIM_TIM_DMA_DLYPRT) != RESET)
mbed_official 237:f3da66175598 7858 {
mbed_official 237:f3da66175598 7859 HAL_HRTIM_DelayedProtectionCallback(hrtim, timer_idx);
mbed_official 237:f3da66175598 7860 }
mbed_official 237:f3da66175598 7861 }
mbed_official 237:f3da66175598 7862
mbed_official 237:f3da66175598 7863 /**
mbed_official 237:f3da66175598 7864 * @brief DMA error callback
mbed_official 237:f3da66175598 7865 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 7866 * @retval None
mbed_official 237:f3da66175598 7867 */
mbed_official 237:f3da66175598 7868 static void HRTIM_DMAError(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 7869 {
mbed_official 237:f3da66175598 7870 HRTIM_HandleTypeDef * hrtim = (HRTIM_HandleTypeDef *)((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 7871
mbed_official 237:f3da66175598 7872 HAL_HRTIM_ErrorCallback(hrtim);
mbed_official 237:f3da66175598 7873 }
mbed_official 237:f3da66175598 7874
mbed_official 237:f3da66175598 7875 /**
mbed_official 237:f3da66175598 7876 * @brief DMA callback invoked upon burst DMA transfer completion
mbed_official 237:f3da66175598 7877 * @param hdma: pointer to DMA handle.
mbed_official 237:f3da66175598 7878 * @retval None
mbed_official 237:f3da66175598 7879 */
mbed_official 237:f3da66175598 7880 static void HRTIM_BurstDMACplt(DMA_HandleTypeDef *hdma)
mbed_official 237:f3da66175598 7881 {
mbed_official 237:f3da66175598 7882 HRTIM_HandleTypeDef * hrtim = (HRTIM_HandleTypeDef *)((DMA_HandleTypeDef* )hdma)->Parent;
mbed_official 237:f3da66175598 7883
mbed_official 237:f3da66175598 7884 HAL_HRTIM_BurstDMATransferCallback(hrtim, GetTimerIdxFromDMAHandle(hdma));
mbed_official 237:f3da66175598 7885 }
mbed_official 237:f3da66175598 7886
mbed_official 237:f3da66175598 7887 /**
mbed_official 237:f3da66175598 7888 * @}
mbed_official 237:f3da66175598 7889 */
mbed_official 237:f3da66175598 7890
mbed_official 237:f3da66175598 7891 #endif /* STM32F334x8 */
mbed_official 237:f3da66175598 7892
mbed_official 237:f3da66175598 7893 #endif /* HAL_HRTIM_MODULE_ENABLED */
mbed_official 237:f3da66175598 7894 /**
mbed_official 237:f3da66175598 7895 * @}
mbed_official 237:f3da66175598 7896 */
mbed_official 237:f3da66175598 7897
mbed_official 237:f3da66175598 7898 /**
mbed_official 237:f3da66175598 7899 * @}
mbed_official 237:f3da66175598 7900 */
mbed_official 237:f3da66175598 7901
mbed_official 237:f3da66175598 7902 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 237:f3da66175598 7903
mbed_official 237:f3da66175598 7904
mbed_official 237:f3da66175598 7905