1#ifndef DOXYGEN_SHOULD_SKIP_THIS
14#include "MIMXRT1061_features.h"
31#define FSL_PWM_DRIVER_VERSION (MAKE_VERSION(2, 8, 4))
35#define PWM_SUBMODULE_SWCONTROL_WIDTH 2
37#define PWM_SUBMODULE_CHANNEL 2
40typedef enum _pwm_submodule
45#if defined(FSL_FEATURE_PWM_SUBMODULE_COUNT) && (FSL_FEATURE_PWM_SUBMODULE_COUNT > 3U)
51typedef enum _pwm_channels
59typedef enum _pwm_value_register
61 kPWM_ValueRegister_0 = 0U,
67} pwm_value_register_t;
70enum _pwm_value_register_mask
72 kPWM_ValueRegisterMask_0 = (1U << 0),
73 kPWM_ValueRegisterMask_1 = (1U << 1),
74 kPWM_ValueRegisterMask_2 = (1U << 2),
75 kPWM_ValueRegisterMask_3 = (1U << 3),
76 kPWM_ValueRegisterMask_4 = (1U << 4),
77 kPWM_ValueRegisterMask_5 = (1U << 5)
81typedef enum _pwm_clock_source
89typedef enum _pwm_clock_prescale
91 kPWM_Prescale_Divide_1 = 0U,
92 kPWM_Prescale_Divide_2,
93 kPWM_Prescale_Divide_4,
94 kPWM_Prescale_Divide_8,
95 kPWM_Prescale_Divide_16,
96 kPWM_Prescale_Divide_32,
97 kPWM_Prescale_Divide_64,
98 kPWM_Prescale_Divide_128
99} pwm_clock_prescale_t;
102typedef enum _pwm_force_output_trigger
104 kPWM_Force_Local = 0U,
106 kPWM_Force_LocalReload,
108 kPWM_Force_MasterReload,
109 kPWM_Force_LocalSync,
110 kPWM_Force_MasterSync,
112 kPWM_Force_ExternalSync
113} pwm_force_output_trigger_t;
116typedef enum _pwm_output_state
126typedef enum _pwm_init_source
128 kPWM_Initialize_LocalSync = 0U,
129 kPWM_Initialize_MasterReload,
130 kPWM_Initialize_MasterSync,
131 kPWM_Initialize_ExtSync
135typedef enum _pwm_load_frequency
137 kPWM_LoadEveryOportunity = 0U,
138 kPWM_LoadEvery2Oportunity,
139 kPWM_LoadEvery3Oportunity,
140 kPWM_LoadEvery4Oportunity,
141 kPWM_LoadEvery5Oportunity,
142 kPWM_LoadEvery6Oportunity,
143 kPWM_LoadEvery7Oportunity,
144 kPWM_LoadEvery8Oportunity,
145 kPWM_LoadEvery9Oportunity,
146 kPWM_LoadEvery10Oportunity,
147 kPWM_LoadEvery11Oportunity,
148 kPWM_LoadEvery12Oportunity,
149 kPWM_LoadEvery13Oportunity,
150 kPWM_LoadEvery14Oportunity,
151 kPWM_LoadEvery15Oportunity,
152 kPWM_LoadEvery16Oportunity
153} pwm_load_frequency_t;
156typedef enum _pwm_fault_input
165typedef enum _pwm_fault_disable
167 kPWM_FaultDisable_0 = (1U << 0),
168 kPWM_FaultDisable_1 = (1U << 1),
169 kPWM_FaultDisable_2 = (1U << 2),
170 kPWM_FaultDisable_3 = (1U << 3)
171} pwm_fault_disable_t;
174typedef enum _pwm_fault_channels
176 kPWM_faultchannel_0 = 0U,
178} pwm_fault_channels_t;
181typedef enum _pwm_input_capture_edge
187} pwm_input_capture_edge_t;
190typedef enum _pwm_force_signal
194 kPWM_SoftwareControl,
199typedef enum _pwm_chnl_pair_operation
201 kPWM_Independent = 0U,
202 kPWM_ComplementaryPwmA,
203 kPWM_ComplementaryPwmB
204} pwm_chnl_pair_operation_t;
207typedef enum _pwm_register_reload
209 kPWM_ReloadImmediate = 0U,
210 kPWM_ReloadPwmHalfCycle,
211 kPWM_ReloadPwmFullCycle,
212 kPWM_ReloadPwmHalfAndFullCycle
213} pwm_register_reload_t;
216typedef enum _pwm_fault_recovery_mode
218 kPWM_NoRecovery = 0U,
219 kPWM_RecoverHalfCycle,
220 kPWM_RecoverFullCycle,
221 kPWM_RecoverHalfAndFullCycle
222} pwm_fault_recovery_mode_t;
225typedef enum _pwm_interrupt_enable
227 kPWM_CompareVal0InterruptEnable = (1U << 0),
228 kPWM_CompareVal1InterruptEnable = (1U << 1),
229 kPWM_CompareVal2InterruptEnable = (1U << 2),
230 kPWM_CompareVal3InterruptEnable = (1U << 3),
231 kPWM_CompareVal4InterruptEnable = (1U << 4),
232 kPWM_CompareVal5InterruptEnable = (1U << 5),
233#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX
234 kPWM_CaptureX0InterruptEnable = (1U << 6),
235 kPWM_CaptureX1InterruptEnable = (1U << 7),
237#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB
238 kPWM_CaptureB0InterruptEnable = (1U << 8),
239 kPWM_CaptureB1InterruptEnable = (1U << 9),
241#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA
242 kPWM_CaptureA0InterruptEnable = (1U << 10),
243 kPWM_CaptureA1InterruptEnable = (1U << 11),
245 kPWM_ReloadInterruptEnable = (1U << 12),
246 kPWM_ReloadErrorInterruptEnable = (1U << 13),
247 kPWM_Fault0InterruptEnable = (1U << 16),
248 kPWM_Fault1InterruptEnable = (1U << 17),
249 kPWM_Fault2InterruptEnable = (1U << 18),
250 kPWM_Fault3InterruptEnable = (1U << 19)
251} pwm_interrupt_enable_t;
254typedef enum _pwm_status_flags
256 kPWM_CompareVal0Flag = (1U << 0),
257 kPWM_CompareVal1Flag = (1U << 1),
258 kPWM_CompareVal2Flag = (1U << 2),
259 kPWM_CompareVal3Flag = (1U << 3),
260 kPWM_CompareVal4Flag = (1U << 4),
261 kPWM_CompareVal5Flag = (1U << 5),
262#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX
263 kPWM_CaptureX0Flag = (1U << 6),
264 kPWM_CaptureX1Flag = (1U << 7),
266#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB
267 kPWM_CaptureB0Flag = (1U << 8),
268 kPWM_CaptureB1Flag = (1U << 9),
270#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA
271 kPWM_CaptureA0Flag = (1U << 10),
272 kPWM_CaptureA1Flag = (1U << 11),
274 kPWM_ReloadFlag = (1U << 12),
275 kPWM_ReloadErrorFlag = (1U << 13),
276 kPWM_RegUpdatedFlag = (1U << 14),
277 kPWM_Fault0Flag = (1U << 16),
278 kPWM_Fault1Flag = (1U << 17),
279 kPWM_Fault2Flag = (1U << 18),
280 kPWM_Fault3Flag = (1U << 19)
284typedef enum _pwm_dma_enable
286#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX
287 kPWM_CaptureX0DMAEnable = (1U << 0),
288 kPWM_CaptureX1DMAEnable = (1U << 1),
290#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB
291 kPWM_CaptureB0DMAEnable = (1U << 2),
292 kPWM_CaptureB1DMAEnable = (1U << 3),
294#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA
295 kPWM_CaptureA0DMAEnable = (1U << 4),
296 kPWM_CaptureA1DMAEnable = (1U << 5)
301typedef enum _pwm_dma_source_select
303 kPWM_DMARequestDisable = 0U,
304 kPWM_DMAWatermarksEnable,
307} pwm_dma_source_select_t;
310typedef enum _pwm_watermark_control
312 kPWM_FIFOWatermarksOR = 0U,
313 kPWM_FIFOWatermarksAND
314} pwm_watermark_control_t;
317typedef enum _pwm_mode
319 kPWM_SignedCenterAligned = 0U,
321 kPWM_SignedEdgeAligned,
326typedef enum _pwm_level_select
333typedef enum _pwm_fault_state
335 kPWM_PwmFaultState0 =
343typedef enum _pwm_reload_source_select
345 kPWM_LocalReload = 0U,
347} pwm_reload_source_select_t;
350typedef enum _pwm_fault_clear
358typedef enum _pwm_module_control
360 kPWM_Control_Module_0 = (1U << 0),
361 kPWM_Control_Module_1 = (1U << 1),
362 kPWM_Control_Module_2 = (1U << 2),
363 kPWM_Control_Module_3 = (1U << 3)
364} pwm_module_control_t;
367typedef struct _pwm_signal_param
369 pwm_channels_t pwmChannel;
370 uint8_t dutyCyclePercent;
373 pwm_level_select_t level;
374 uint16_t deadtimeValue;
375 pwm_fault_state_t faultState;
376 bool pwmchannelenable;
388typedef struct _pwm_config
390 bool enableDebugMode;
392#if !defined(FSL_FEATURE_PWM_HAS_NO_WAITEN) || (!FSL_FEATURE_PWM_HAS_NO_WAITEN)
396 pwm_init_source_t initializationControl;
397 pwm_clock_source_t clockSource;
398 pwm_clock_prescale_t prescale;
399 pwm_chnl_pair_operation_t pairOperation;
400 pwm_register_reload_t reloadLogic;
401 pwm_reload_source_select_t reloadSelect;
402 pwm_load_frequency_t reloadFrequency;
404 pwm_force_output_trigger_t forceTrigger;
408typedef struct _pwm_fault_input_filter_param
410 uint8_t faultFilterCount;
411 uint8_t faultFilterPeriod;
412 bool faultGlitchStretch;
414} pwm_fault_input_filter_param_t;
417typedef struct _pwm_fault_param
419 pwm_fault_clear_t faultClearingMode;
422 bool enableCombinationalPath;
424 pwm_fault_recovery_mode_t recoverMode;
430typedef struct _pwm_input_capture_param
432 bool captureInputSel;
434 uint8_t edgeCompareValue;
435 pwm_input_capture_edge_t edge0;
436 pwm_input_capture_edge_t edge1;
437 bool enableOneShotCapture;
439 uint8_t fifoWatermark;
442} pwm_input_capture_param_t;
448#if defined(__cplusplus)
468status_t PWM_Init(PWM_Type *base, pwm_submodule_t subModule,
const pwm_config_t *config);
476void PWM_Deinit(PWM_Type *base, pwm_submodule_t subModule);
496void PWM_GetDefaultConfig(pwm_config_t *config);
525status_t PWM_SetupPwm(PWM_Type *base,
526 pwm_submodule_t subModule,
527 const pwm_signal_param_t *chnlParams,
531 uint32_t srcClock_Hz);
547status_t PWM_SetupPwmPhaseShift(PWM_Type *base,
548 pwm_submodule_t subModule,
549 pwm_channels_t pwmChannel,
551 uint32_t srcClock_Hz,
570void PWM_UpdatePwmDutycycle(PWM_Type *base,
571 pwm_submodule_t subModule,
572 pwm_channels_t pwmSignal,
573 pwm_mode_t currPwmMode,
574 uint8_t dutyCyclePercent);
591void PWM_UpdatePwmDutycycleHighAccuracy(
592 PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmSignal, pwm_mode_t currPwmMode, uint16_t dutyCycle);
617void PWM_UpdatePwmPeriodAndDutycycle(PWM_Type *base,
618 pwm_submodule_t subModule,
619 pwm_channels_t pwmSignal,
620 pwm_mode_t currPwmMode,
637void PWM_SetupInputCapture(PWM_Type *base,
638 pwm_submodule_t subModule,
639 pwm_channels_t pwmChannel,
640 const pwm_input_capture_param_t *inputCaptureParams);
648void PWM_SetupFaultInputFilter(PWM_Type *base,
const pwm_fault_input_filter_param_t *faultInputFilterParams);
659void PWM_SetupFaults(PWM_Type *base, pwm_fault_input_t faultNum,
const pwm_fault_param_t *faultParams);
673void PWM_FaultDefaultConfig(pwm_fault_param_t *config);
686void PWM_SetupForceSignal(PWM_Type *base,
687 pwm_submodule_t subModule,
688 pwm_channels_t pwmChannel,
689 pwm_force_signal_t mode);
704void PWM_EnableInterrupts(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask);
714void PWM_DisableInterrupts(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask);
725uint32_t PWM_GetEnabledInterrupts(PWM_Type *base, pwm_submodule_t subModule);
741static inline void PWM_DMAFIFOWatermarkControl(PWM_Type *base,
742 pwm_submodule_t subModule,
743 pwm_watermark_control_t pwm_watermark_control)
745 uint16_t reg = base->SM[subModule].DMAEN;
746 if (pwm_watermark_control == kPWM_FIFOWatermarksOR)
748 reg &= ~((uint16_t)PWM_DMAEN_FAND_MASK);
752 reg |= ((uint16_t)PWM_DMAEN_FAND_MASK);
754 base->SM[subModule].DMAEN = reg;
764static inline void PWM_DMACaptureSourceSelect(PWM_Type *base,
765 pwm_submodule_t subModule,
766 pwm_dma_source_select_t pwm_dma_source_select)
768 uint16_t reg = base->SM[subModule].DMAEN;
770 reg &= ~((uint16_t)PWM_DMAEN_CAPTDE_MASK);
771 reg |= (((uint16_t)pwm_dma_source_select << (uint16_t)PWM_DMAEN_CAPTDE_SHIFT) & (uint16_t)PWM_DMAEN_CAPTDE_MASK);
773 base->SM[subModule].DMAEN = reg;
785static inline void PWM_EnableDMACapture(PWM_Type *base, pwm_submodule_t subModule, uint16_t mask,
bool activate)
787 uint16_t reg = base->SM[subModule].DMAEN;
790 reg |= (uint16_t)(mask);
794 reg &= ~((uint16_t)(mask));
796 base->SM[subModule].DMAEN = reg;
806static inline void PWM_EnableDMAWrite(PWM_Type *base, pwm_submodule_t subModule,
bool activate)
808 uint16_t reg = base->SM[subModule].DMAEN;
811 reg |= ((uint16_t)PWM_DMAEN_VALDE_MASK);
815 reg &= ~((uint16_t)PWM_DMAEN_VALDE_MASK);
817 base->SM[subModule].DMAEN = reg;
836uint32_t PWM_GetStatusFlags(PWM_Type *base, pwm_submodule_t subModule);
846void PWM_ClearStatusFlags(PWM_Type *base, pwm_submodule_t subModule, uint32_t mask);
865static inline void PWM_StartTimer(PWM_Type *base, uint8_t subModulesToStart)
867 base->MCTRL |= PWM_MCTRL_RUN(subModulesToStart);
880static inline void PWM_StopTimer(PWM_Type *base, uint8_t subModulesToStop)
882 base->MCTRL &= ~(PWM_MCTRL_RUN(subModulesToStop));
900static inline void PWM_SetVALxValue(PWM_Type *base,
901 pwm_submodule_t subModule,
902 pwm_value_register_t valueRegister,
905 switch (valueRegister)
907 case kPWM_ValueRegister_0:
908 base->SM[subModule].VAL0 = value;
910 case kPWM_ValueRegister_1:
911 base->SM[subModule].VAL1 = value;
913 case kPWM_ValueRegister_2:
914 base->SM[subModule].VAL2 = value;
916 case kPWM_ValueRegister_3:
917 base->SM[subModule].VAL3 = value;
919 case kPWM_ValueRegister_4:
920 base->SM[subModule].VAL4 = value;
922 case kPWM_ValueRegister_5:
923 base->SM[subModule].VAL5 = value;
939static inline uint16_t PWM_GetVALxValue(PWM_Type *base, pwm_submodule_t subModule, pwm_value_register_t valueRegister)
943 switch (valueRegister)
945 case kPWM_ValueRegister_0:
946 temp = base->SM[subModule].VAL0;
948 case kPWM_ValueRegister_1:
949 temp = base->SM[subModule].VAL1;
951 case kPWM_ValueRegister_2:
952 temp = base->SM[subModule].VAL2;
954 case kPWM_ValueRegister_3:
955 temp = base->SM[subModule].VAL3;
957 case kPWM_ValueRegister_4:
958 temp = base->SM[subModule].VAL4;
960 case kPWM_ValueRegister_5:
961 temp = base->SM[subModule].VAL5;
983static inline void PWM_OutputTriggerEnable(PWM_Type *base,
984 pwm_submodule_t subModule,
985 pwm_value_register_t valueRegister,
990 base->SM[subModule].TCTRL |= ((uint16_t)1U << (uint16_t)valueRegister);
994 base->SM[subModule].TCTRL &= ~((uint16_t)1U << (uint16_t)valueRegister);
1008static inline void PWM_ActivateOutputTrigger(PWM_Type *base, pwm_submodule_t subModule, uint16_t valueRegisterMask)
1010 base->SM[subModule].TCTRL |= (PWM_TCTRL_OUT_TRIG_EN_MASK & (valueRegisterMask));
1023static inline void PWM_DeactivateOutputTrigger(PWM_Type *base, pwm_submodule_t subModule, uint16_t valueRegisterMask)
1025 base->SM[subModule].TCTRL &= ~(PWM_TCTRL_OUT_TRIG_EN_MASK & (valueRegisterMask));
1039static inline void PWM_SetupSwCtrlOut(PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmChannel,
bool value)
1044 ((uint16_t)1U << (((uint16_t)subModule * (uint16_t)PWM_SUBMODULE_SWCONTROL_WIDTH) + (uint16_t)pwmChannel));
1049 ~((uint16_t)1U << (((uint16_t)subModule * (uint16_t)PWM_SUBMODULE_SWCONTROL_WIDTH) + (uint16_t)pwmChannel));
1066static inline void PWM_SetPwmLdok(PWM_Type *base, uint8_t subModulesToUpdate,
bool value)
1070 base->MCTRL |= PWM_MCTRL_LDOK(subModulesToUpdate);
1074 base->MCTRL |= PWM_MCTRL_CLDOK(subModulesToUpdate);
1091static inline void PWM_SetPwmFaultState(PWM_Type *base,
1092 pwm_submodule_t subModule,
1093 pwm_channels_t pwmChannel,
1094 pwm_fault_state_t faultState)
1096 uint16_t reg = base->SM[subModule].OCTRL;
1100 reg &= ~((uint16_t)PWM_OCTRL_PWMAFS_MASK);
1101 reg |= (((uint16_t)faultState << (uint16_t)PWM_OCTRL_PWMAFS_SHIFT) & (uint16_t)PWM_OCTRL_PWMAFS_MASK);
1104 reg &= ~((uint16_t)PWM_OCTRL_PWMBFS_MASK);
1105 reg |= (((uint16_t)faultState << (uint16_t)PWM_OCTRL_PWMBFS_SHIFT) & (uint16_t)PWM_OCTRL_PWMBFS_MASK);
1108 reg &= ~((uint16_t)PWM_OCTRL_PWMXFS_MASK);
1109 reg |= (((uint16_t)faultState << (uint16_t)PWM_OCTRL_PWMXFS_SHIFT) & (uint16_t)PWM_OCTRL_PWMXFS_MASK);
1115 base->SM[subModule].OCTRL = reg;
1133static inline void PWM_SetupFaultDisableMap(PWM_Type *base,
1134 pwm_submodule_t subModule,
1135 pwm_channels_t pwmChannel,
1136 pwm_fault_channels_t pwm_fault_channels,
1139 uint16_t reg = base->SM[subModule].DISMAP[pwm_fault_channels];
1143 reg &= ~((uint16_t)PWM_DISMAP_DIS0A_MASK);
1144 reg |= (((uint16_t)(value) << (uint16_t)PWM_DISMAP_DIS0A_SHIFT) & (uint16_t)PWM_DISMAP_DIS0A_MASK);
1147 reg &= ~((uint16_t)PWM_DISMAP_DIS0B_MASK);
1148 reg |= (((uint16_t)(value) << (uint16_t)PWM_DISMAP_DIS0B_SHIFT) & (uint16_t)PWM_DISMAP_DIS0B_MASK);
1151 reg &= ~((uint16_t)PWM_DISMAP_DIS0X_MASK);
1152 reg |= (((uint16_t)(value) << (uint16_t)PWM_DISMAP_DIS0X_SHIFT) & (uint16_t)PWM_DISMAP_DIS0X_MASK);
1158 base->SM[subModule].DISMAP[pwm_fault_channels] = reg;
1170static inline void PWM_OutputEnable(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule)
1176 base->OUTEN |= ((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMA_EN_SHIFT + (uint16_t)subModule));
1179 base->OUTEN |= ((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMB_EN_SHIFT + (uint16_t)subModule));
1182 base->OUTEN |= ((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMX_EN_SHIFT + (uint16_t)subModule));
1199static inline void PWM_OutputDisable(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule)
1204 base->OUTEN &= ~((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMA_EN_SHIFT + (uint16_t)subModule));
1207 base->OUTEN &= ~((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMB_EN_SHIFT + (uint16_t)subModule));
1210 base->OUTEN &= ~((uint16_t)1U << ((uint16_t)PWM_OUTEN_PWMX_EN_SHIFT + (uint16_t)subModule));
1227uint8_t PWM_GetPwmChannelState(PWM_Type *base, pwm_submodule_t subModule, pwm_channels_t pwmChannel);
1241status_t PWM_SetOutputToIdle(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule,
bool idleStatus);
1250void PWM_SetClockMode(PWM_Type *base, pwm_submodule_t subModule, pwm_clock_prescale_t prescaler);
1261void PWM_SetPwmForceOutputToZero(PWM_Type *base,
1262 pwm_submodule_t subModule,
1263 pwm_channels_t pwmChannel,
1274void PWM_SetChannelOutput(PWM_Type *base,
1275 pwm_submodule_t subModule,
1276 pwm_channels_t pwmChannel,
1277 pwm_output_state_t outputstate);
1279#if defined(FSL_FEATURE_PWM_HAS_PHASE_DELAY) && FSL_FEATURE_PWM_HAS_PHASE_DELAY
1291status_t PWM_SetPhaseDelay(PWM_Type *base, pwm_channels_t pwmChannel, pwm_submodule_t subModule, uint16_t delayCycles);
1294#if defined(FSL_FEATURE_PWM_HAS_INPUT_FILTER_CAPTURE) && FSL_FEATURE_PWM_HAS_INPUT_FILTER_CAPTURE
1303static inline void PWM_SetFilterSampleCount(PWM_Type *base,
1304 pwm_channels_t pwmChannel,
1305 pwm_submodule_t subModule,
1306 uint8_t filterSampleCount)
1310#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA
1312 base->SM[subModule].CAPTFILTA &= ~((uint16_t)PWM_CAPTFILTA_CAPTA_FILT_CNT_MASK);
1313 base->SM[subModule].CAPTFILTA |= PWM_CAPTFILTA_CAPTA_FILT_CNT(filterSampleCount);
1316#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB
1318 base->SM[subModule].CAPTFILTB &= ~((uint16_t)PWM_CAPTFILTB_CAPTB_FILT_CNT_MASK);
1319 base->SM[subModule].CAPTFILTB |= PWM_CAPTFILTB_CAPTB_FILT_CNT(filterSampleCount);
1322#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX
1324 base->SM[subModule].CAPTFILTX &= ~((uint16_t)PWM_CAPTFILTX_CAPTX_FILT_CNT_MASK);
1325 base->SM[subModule].CAPTFILTX |= PWM_CAPTFILTX_CAPTX_FILT_CNT(filterSampleCount);
1342static inline void PWM_SetFilterSamplePeriod(PWM_Type *base,
1343 pwm_channels_t pwmChannel,
1344 pwm_submodule_t subModule,
1345 uint8_t filterSamplePeriod)
1349#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELA
1351 base->SM[subModule].CAPTFILTA &= ~((uint16_t)PWM_CAPTFILTA_CAPTA_FILT_PER_MASK);
1352 base->SM[subModule].CAPTFILTA |= PWM_CAPTFILTA_CAPTA_FILT_PER(filterSamplePeriod);
1355#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELB
1357 base->SM[subModule].CAPTFILTB &= ~((uint16_t)PWM_CAPTFILTB_CAPTB_FILT_PER_MASK);
1358 base->SM[subModule].CAPTFILTB |= PWM_CAPTFILTB_CAPTB_FILT_PER(filterSamplePeriod);
1361#if defined(FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX) && FSL_FEATURE_PWM_HAS_CAPTURE_ON_CHANNELX
1363 base->SM[subModule].CAPTFILTX &= ~((uint16_t)PWM_CAPTFILTX_CAPTX_FILT_PER_MASK);
1364 base->SM[subModule].CAPTFILTX |= PWM_CAPTFILTX_CAPTX_FILT_PER(filterSamplePeriod);
1374#if defined(__cplusplus)
int32_t status_t
Type used for all status and error return values.
Definition fsl_common.h:228