Watchdog Timer

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Mon Sep 28 20:15:09 2015 +0100
Revision:
635:ac7d6880524d
Parent:
633: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 635:ac7d6880524d 5 * @version V1.1.0
mbed_official 635: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 635: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 635: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 635:ac7d6880524d 497 hhrtim->hdmaMaster = (DMA_HandleTypeDef *)HAL_NULL;
mbed_official 635:ac7d6880524d 498 hhrtim->hdmaTimerA = (DMA_HandleTypeDef *)HAL_NULL;
mbed_official 635:ac7d6880524d 499 hhrtim->hdmaTimerB = (DMA_HandleTypeDef *)HAL_NULL;
mbed_official 635:ac7d6880524d 500 hhrtim->hdmaTimerC = (DMA_HandleTypeDef *)HAL_NULL;
mbed_official 635:ac7d6880524d 501 hhrtim->hdmaTimerD = (DMA_HandleTypeDef *)HAL_NULL;
mbed_official 635: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 635: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 635:ac7d6880524d 1218 HRTIM_CompareCfgTypeDef CompareCfg;
mbed_official 635: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 635: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