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:
Mon Sep 28 20:15:09 2015 +0100
Revision:
634:ac7d6880524d
Parent:
632:7687fb9c4f91
Synchronized with git revision 9b7d23d47153c298a6d24de9a415202705889d11

Full URL: https://github.com/mbedmicro/mbed/commit/9b7d23d47153c298a6d24de9a415202705889d11/

Revert "[NUCLEO_F303K8] add support of the STM32F303K8"

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