/** ****************************************************************************** * @file xl_ftm.h * @author software group * @brief This file contains all the functions prototypes for the FTM * firmware library. ****************************************************************************** * @attention * * 2019 by Chipways Communications,Inc. All Rights Reserved. * This software is supplied under the terms of a license * agreement or non-disclosure agreement with Chipways. * Passing on and copying of this document,and communication * of its contents is not permitted without prior written * authorization. * *

© COPYRIGHT 2019 Chipways

****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef XL_FTM_H__ #define XL_FTM_H__ #ifdef __cplusplus extern "C" { #endif /* Includes ---------------------------------------------------------------*/ #include /* Register define ------------------------------------------------------------*/ /* SC Bit Fields */ #define FTM_SC_PS_MASK 0x7u #define FTM_SC_PS_SHIFT 0 #define FTM_SC_CLKS_MASK 0x18u #define FTM_SC_CLKS_SHIFT 3 #define FTM_SC_CPWMS_MASK 0x20u #define FTM_SC_CPWMS_SHIFT 5 #define FTM_SC_TOIE_MASK 0x40u #define FTM_SC_TOIE_SHIFT 6 #define FTM_SC_TOF_MASK 0x80u #define FTM_SC_TOF_SHIFT 7 /* CNT Bit Fields */ #define FTM_CNT_COUNT_MASK 0xFFFFu #define FTM_CNT_COUNT_SHIFT 0 /* MOD Bit Fields */ #define FTM_MOD_MOD_MASK 0xFFFFu #define FTM_MOD_MOD_SHIFT 0 /* CnSC Bit Fields */ #define FTM_CnSC_ELSA_MASK 0x4u #define FTM_CnSC_ELSA_SHIFT 2 #define FTM_CnSC_ELSB_MASK 0x8u #define FTM_CnSC_ELSB_SHIFT 3 #define FTM_CnSC_MSA_MASK 0x10u #define FTM_CnSC_MSA_SHIFT 4 #define FTM_CnSC_MSB_MASK 0x20u #define FTM_CnSC_MSB_SHIFT 5 #define FTM_CnSC_CHIE_MASK 0x40u #define FTM_CnSC_CHIE_SHIFT 6 #define FTM_CnSC_CHF_MASK 0x80u #define FTM_CnSC_CHF_SHIFT 7 /* CnV Bit Fields */ #define FTM_CnV_VAL_MASK 0xFFFFu #define FTM_CnV_VAL_SHIFT 0 /* CNTIN Bit Fields */ #define FTM_CNTIN_INIT_MASK 0xFFFFu #define FTM_CNTIN_INIT_SHIFT 0 /* STATUS Bit Fields */ #define FTM_STATUS_CH0F_MASK 0x1u #define FTM_STATUS_CH0F_SHIFT 0 #define FTM_STATUS_CH1F_MASK 0x2u #define FTM_STATUS_CH1F_SHIFT 1 #define FTM_STATUS_CH2F_MASK 0x4u #define FTM_STATUS_CH2F_SHIFT 2 #define FTM_STATUS_CH3F_MASK 0x8u #define FTM_STATUS_CH3F_SHIFT 3 #define FTM_STATUS_CH4F_MASK 0x10u #define FTM_STATUS_CH4F_SHIFT 4 #define FTM_STATUS_CH5F_MASK 0x20u #define FTM_STATUS_CH5F_SHIFT 5 #define FTM_STATUS_CH6F_MASK 0x40u #define FTM_STATUS_CH6F_SHIFT 6 #define FTM_STATUS_CH7F_MASK 0x80u #define FTM_STATUS_CH7F_SHIFT 7 /* MODE Bit Fields */ #define FTM_MODE_SYNCLOADEN_MASK 0x1u #define FTM_MODE_SYNCLOADEN_SHIFT 0 #define FTM_MODE_INIT_MASK 0x2u #define FTM_MODE_INIT_SHIFT 1 #define FTM_MODE_WPDIS_MASK 0x4u #define FTM_MODE_WPDIS_SHIFT 2 #define FTM_MODE_PWMSYNC_MASK 0x8u #define FTM_MODE_PWMSYNC_SHIFT 3 #define FTM_MODE_CAPTEST_MASK 0x10u #define FTM_MODE_CAPTEST_SHIFT 4 #define FTM_MODE_FAULTM_MASK 0x60u #define FTM_MODE_FAULTM_SHIFT 5 #define FTM_MODE_FAULTIE_MASK 0x80u #define FTM_MODE_FAULTIE_SHIFT 7 /* SYNC Bit Fields */ #define FTM_SYNC_CNTMIN_MASK 0x1u #define FTM_SYNC_CNTMIN_SHIFT 0 #define FTM_SYNC_CNTMAX_MASK 0x2u #define FTM_SYNC_CNTMAX_SHIFT 1 #define FTM_SYNC_REINIT_MASK 0x4u #define FTM_SYNC_REINIT_SHIFT 2 #define FTM_SYNC_SYNCHOM_MASK 0x8u #define FTM_SYNC_SYNCHOM_SHIFT 3 #define FTM_SYNC_TRIG0_MASK 0x10u #define FTM_SYNC_TRIG0_SHIFT 4 #define FTM_SYNC_TRIG1_MASK 0x20u #define FTM_SYNC_TRIG1_SHIFT 5 #define FTM_SYNC_TRIG2_MASK 0x40u #define FTM_SYNC_TRIG2_SHIFT 6 #define FTM_SYNC_SWSYNC_MASK 0x80u #define FTM_SYNC_SWSYNC_SHIFT 7 /* OUTINIT Bit Fields */ #define FTM_OUTINIT_CH0OI_MASK 0x1u #define FTM_OUTINIT_CH0OI_SHIFT 0 #define FTM_OUTINIT_CH1OI_MASK 0x2u #define FTM_OUTINIT_CH1OI_SHIFT 1 #define FTM_OUTINIT_CH2OI_MASK 0x4u #define FTM_OUTINIT_CH2OI_SHIFT 2 #define FTM_OUTINIT_CH3OI_MASK 0x8u #define FTM_OUTINIT_CH3OI_SHIFT 3 #define FTM_OUTINIT_CH4OI_MASK 0x10u #define FTM_OUTINIT_CH4OI_SHIFT 4 #define FTM_OUTINIT_CH5OI_MASK 0x20u #define FTM_OUTINIT_CH5OI_SHIFT 5 #define FTM_OUTINIT_CH6OI_MASK 0x40u #define FTM_OUTINIT_CH6OI_SHIFT 6 #define FTM_OUTINIT_CH7OI_MASK 0x80u #define FTM_OUTINIT_CH7OI_SHIFT 7 /* OUTMASK Bit Fields */ #define FTM_OUTMASK_CH0OM_MASK 0x1u #define FTM_OUTMASK_CH0OM_SHIFT 0 #define FTM_OUTMASK_CH1OM_MASK 0x2u #define FTM_OUTMASK_CH1OM_SHIFT 1 #define FTM_OUTMASK_CH2OM_MASK 0x4u #define FTM_OUTMASK_CH2OM_SHIFT 2 #define FTM_OUTMASK_CH3OM_MASK 0x8u #define FTM_OUTMASK_CH3OM_SHIFT 3 #define FTM_OUTMASK_CH4OM_MASK 0x10u #define FTM_OUTMASK_CH4OM_SHIFT 4 #define FTM_OUTMASK_CH5OM_MASK 0x20u #define FTM_OUTMASK_CH5OM_SHIFT 5 #define FTM_OUTMASK_CH6OM_MASK 0x40u #define FTM_OUTMASK_CH6OM_SHIFT 6 #define FTM_OUTMASK_CH7OM_MASK 0x80u #define FTM_OUTMASK_CH7OM_SHIFT 7 /* COMBINE Bit Fields */ #define FTM_COMBINE_COMBINE0_MASK 0x1u #define FTM_COMBINE_COMBINE0_SHIFT 0 #define FTM_COMBINE_COMP0_MASK 0x2u #define FTM_COMBINE_COMP0_SHIFT 1 #define FTM_COMBINE_DECAPEN0_MASK 0x4u #define FTM_COMBINE_DECAPEN0_SHIFT 2 #define FTM_COMBINE_DECAP0_MASK 0x8u #define FTM_COMBINE_DECAP0_SHIFT 3 #define FTM_COMBINE_DTEN0_MASK 0x10u #define FTM_COMBINE_DTEN0_SHIFT 4 #define FTM_COMBINE_SYNCEN0_MASK 0x20u #define FTM_COMBINE_SYNCEN0_SHIFT 5 #define FTM_COMBINE_FAULTEN0_MASK 0x40u #define FTM_COMBINE_FAULTEN0_SHIFT 6 #define FTM_COMBINE_COMBINE1_MASK 0x100u #define FTM_COMBINE_COMBINE1_SHIFT 8 #define FTM_COMBINE_COMP1_MASK 0x200u #define FTM_COMBINE_COMP1_SHIFT 9 #define FTM_COMBINE_DECAPEN1_MASK 0x400u #define FTM_COMBINE_DECAPEN1_SHIFT 10 #define FTM_COMBINE_DECAP1_MASK 0x800u #define FTM_COMBINE_DECAP1_SHIFT 11 #define FTM_COMBINE_DTEN1_MASK 0x1000u #define FTM_COMBINE_DTEN1_SHIFT 12 #define FTM_COMBINE_SYNCEN1_MASK 0x2000u #define FTM_COMBINE_SYNCEN1_SHIFT 13 #define FTM_COMBINE_FAULTEN1_MASK 0x4000u #define FTM_COMBINE_FAULTEN1_SHIFT 14 #define FTM_COMBINE_COMBINE2_MASK 0x10000u #define FTM_COMBINE_COMBINE2_SHIFT 16 #define FTM_COMBINE_COMP2_MASK 0x20000u #define FTM_COMBINE_COMP2_SHIFT 17 #define FTM_COMBINE_DECAPEN2_MASK 0x40000u #define FTM_COMBINE_DECAPEN2_SHIFT 18 #define FTM_COMBINE_DECAP2_MASK 0x80000u #define FTM_COMBINE_DECAP2_SHIFT 19 #define FTM_COMBINE_DTEN2_MASK 0x100000u #define FTM_COMBINE_DTEN2_SHIFT 20 #define FTM_COMBINE_SYNCEN2_MASK 0x200000u #define FTM_COMBINE_SYNCEN2_SHIFT 21 #define FTM_COMBINE_FAULTEN2_MASK 0x400000u #define FTM_COMBINE_FAULTEN2_SHIFT 22 #define FTM_COMBINE_COMBINE3_MASK 0x1000000u #define FTM_COMBINE_COMBINE3_SHIFT 24 #define FTM_COMBINE_COMP3_MASK 0x2000000u #define FTM_COMBINE_COMP3_SHIFT 25 #define FTM_COMBINE_DECAPEN3_MASK 0x4000000u #define FTM_COMBINE_DECAPEN3_SHIFT 26 #define FTM_COMBINE_DECAP3_MASK 0x8000000u #define FTM_COMBINE_DECAP3_SHIFT 27 #define FTM_COMBINE_DTEN3_MASK 0x10000000u #define FTM_COMBINE_DTEN3_SHIFT 28 #define FTM_COMBINE_SYNCEN3_MASK 0x20000000u #define FTM_COMBINE_SYNCEN3_SHIFT 29 #define FTM_COMBINE_FAULTEN3_MASK 0x40000000u #define FTM_COMBINE_FAULTEN3_SHIFT 30 /* DEADTIME Bit Fields */ #define FTM_DEADTIME_DTVAL_MASK 0x3Fu #define FTM_DEADTIME_DTVAL_SHIFT 0 #define FTM_DEADTIME_DTPS_MASK 0xC0u #define FTM_DEADTIME_DTPS_SHIFT 6 /* EXTTRIG Bit Fields */ #define FTM_EXTTRIG_CH2TRIG_MASK 0x1u #define FTM_EXTTRIG_CH2TRIG_SHIFT 0 #define FTM_EXTTRIG_CH3TRIG_MASK 0x2u #define FTM_EXTTRIG_CH3TRIG_SHIFT 1 #define FTM_EXTTRIG_CH4TRIG_MASK 0x4u #define FTM_EXTTRIG_CH4TRIG_SHIFT 2 #define FTM_EXTTRIG_CH5TRIG_MASK 0x8u #define FTM_EXTTRIG_CH5TRIG_SHIFT 3 #define FTM_EXTTRIG_CH0TRIG_MASK 0x10u #define FTM_EXTTRIG_CH0TRIG_SHIFT 4 #define FTM_EXTTRIG_CH1TRIG_MASK 0x20u #define FTM_EXTTRIG_CH1TRIG_SHIFT 5 #define FTM_EXTTRIG_INITTRIGEN_MASK 0x40u #define FTM_EXTTRIG_INITTRIGEN_SHIFT 6 #define FTM_EXTTRIG_TRIGF_MASK 0x80u #define FTM_EXTTRIG_TRIGF_SHIFT 7 /* POL Bit Fields */ #define FTM_POL_POL0_MASK 0x1u #define FTM_POL_POL0_SHIFT 0 #define FTM_POL_POL1_MASK 0x2u #define FTM_POL_POL1_SHIFT 1 #define FTM_POL_POL2_MASK 0x4u #define FTM_POL_POL2_SHIFT 2 #define FTM_POL_POL3_MASK 0x8u #define FTM_POL_POL3_SHIFT 3 #define FTM_POL_POL4_MASK 0x10u #define FTM_POL_POL4_SHIFT 4 #define FTM_POL_POL5_MASK 0x20u #define FTM_POL_POL5_SHIFT 5 #define FTM_POL_POL6_MASK 0x40u #define FTM_POL_POL6_SHIFT 6 #define FTM_POL_POL7_MASK 0x80u #define FTM_POL_POL7_SHIFT 7 /* FMS Bit Fields */ #define FTM_FMS_FAULTF0_MASK 0x1u #define FTM_FMS_FAULTF0_SHIFT 0 #define FTM_FMS_FAULTF1_MASK 0x2u #define FTM_FMS_FAULTF1_SHIFT 1 #define FTM_FMS_FAULTF2_MASK 0x4u #define FTM_FMS_FAULTF2_SHIFT 2 #define FTM_FMS_FAULTF3_MASK 0x8u #define FTM_FMS_FAULTF3_SHIFT 3 #define FTM_FMS_FAULTIN_MASK 0x20u #define FTM_FMS_FAULTIN_SHIFT 5 #define FTM_FMS_WPEN_MASK 0x40u #define FTM_FMS_WPEN_SHIFT 6 #define FTM_FMS_FAULTF_MASK 0x80u #define FTM_FMS_FAULTF_SHIFT 7 /* FILTER Bit Fields */ #define FTM_FILTER_CH0FVAL_MASK 0xFu #define FTM_FILTER_CH0FVAL_SHIFT 0 #define FTM_FILTER_CH1FVAL_MASK 0xF0u #define FTM_FILTER_CH1FVAL_SHIFT 4 #define FTM_FILTER_CH2FVAL_MASK 0xF00u #define FTM_FILTER_CH2FVAL_SHIFT 8 #define FTM_FILTER_CH3FVAL_MASK 0xF000u #define FTM_FILTER_CH3FVAL_SHIFT 12 /* FLTCTRL Bit Fields */ #define FTM_FLTCTRL_FAULT0EN_MASK 0x1u #define FTM_FLTCTRL_FAULT0EN_SHIFT 0 #define FTM_FLTCTRL_FAULT1EN_MASK 0x2u #define FTM_FLTCTRL_FAULT1EN_SHIFT 1 #define FTM_FLTCTRL_FAULT2EN_MASK 0x4u #define FTM_FLTCTRL_FAULT2EN_SHIFT 2 #define FTM_FLTCTRL_FAULT3EN_MASK 0x8u #define FTM_FLTCTRL_FAULT3EN_SHIFT 3 #define FTM_FLTCTRL_FFLTR0EN_MASK 0x10u #define FTM_FLTCTRL_FFLTR0EN_SHIFT 4 #define FTM_FLTCTRL_FFLTR1EN_MASK 0x20u #define FTM_FLTCTRL_FFLTR1EN_SHIFT 5 #define FTM_FLTCTRL_FFLTR2EN_MASK 0x40u #define FTM_FLTCTRL_FFLTR2EN_SHIFT 6 #define FTM_FLTCTRL_FFLTR3EN_MASK 0x80u #define FTM_FLTCTRL_FFLTR3EN_SHIFT 7 #define FTM_FLTCTRL_FFVAL_MASK 0xF00u #define FTM_FLTCTRL_FFVAL_SHIFT 8 /* CONF Bit Fields */ #define FTM_CONF_NUMTOF_MASK 0x1Fu #define FTM_CONF_NUMTOF_SHIFT 0 #define FTM_CONF_BDMMODE_MASK 0xC0u #define FTM_CONF_BDMMODE_SHIFT 6 #define FTM_CONF_GTBEEN_MASK 0x200u #define FTM_CONF_GTBEEN_SHIFT 9 #define FTM_CONF_GTBEOUT_MASK 0x400u #define FTM_CONF_GTBEOUT_SHIFT 10 /* FLTPOL Bit Fields */ #define FTM_FLTPOL_FLT0POL_MASK 0x1u #define FTM_FLTPOL_FLT0POL_SHIFT 0 #define FTM_FLTPOL_FLT1POL_MASK 0x2u #define FTM_FLTPOL_FLT1POL_SHIFT 1 #define FTM_FLTPOL_FLT2POL_MASK 0x4u #define FTM_FLTPOL_FLT2POL_SHIFT 2 #define FTM_FLTPOL_FLT3POL_MASK 0x8u #define FTM_FLTPOL_FLT3POL_SHIFT 3 /* SYNCONF Bit Fields */ #define FTM_SYNCONF_HWTRIGMODE_MASK 0x1u #define FTM_SYNCONF_HWTRIGMODE_SHIFT 0 #define FTM_SYNCONF_CNTINC_MASK 0x4u #define FTM_SYNCONF_CNTINC_SHIFT 2 #define FTM_SYNCONF_INVC_MASK 0x10u #define FTM_SYNCONF_INVC_SHIFT 4 #define FTM_SYNCONF_SWOC_MASK 0x20u #define FTM_SYNCONF_SWOC_SHIFT 5 #define FTM_SYNCONF_SYNCMODE_MASK 0x80u #define FTM_SYNCONF_SYNCMODE_SHIFT 7 #define FTM_SYNCONF_SWRSTCNT_MASK 0x100u #define FTM_SYNCONF_SWRSTCNT_SHIFT 8 #define FTM_SYNCONF_SWWRBUF_MASK 0x200u #define FTM_SYNCONF_SWWRBUF_SHIFT 9 #define FTM_SYNCONF_SWOM_MASK 0x400u #define FTM_SYNCONF_SWOM_SHIFT 10 #define FTM_SYNCONF_SWINVC_MASK 0x800u #define FTM_SYNCONF_SWINVC_SHIFT 11 #define FTM_SYNCONF_SWSOC_MASK 0x1000u #define FTM_SYNCONF_SWSOC_SHIFT 12 #define FTM_SYNCONF_HWRSTCNT_MASK 0x10000u #define FTM_SYNCONF_HWRSTCNT_SHIFT 16 #define FTM_SYNCONF_HWWRBUF_MASK 0x20000u #define FTM_SYNCONF_HWWRBUF_SHIFT 17 #define FTM_SYNCONF_HWOM_MASK 0x40000u #define FTM_SYNCONF_HWOM_SHIFT 18 #define FTM_SYNCONF_HWINVC_MASK 0x80000u #define FTM_SYNCONF_HWINVC_SHIFT 19 #define FTM_SYNCONF_HWSOC_MASK 0x100000u #define FTM_SYNCONF_HWSOC_SHIFT 20 /* INVCTRL Bit Fields */ #define FTM_INVCTRL_INV0EN_MASK 0x1u #define FTM_INVCTRL_INV0EN_SHIFT 0 #define FTM_INVCTRL_INV1EN_MASK 0x2u #define FTM_INVCTRL_INV1EN_SHIFT 1 #define FTM_INVCTRL_INV2EN_MASK 0x4u #define FTM_INVCTRL_INV2EN_SHIFT 2 #define FTM_INVCTRL_INV3EN_MASK 0x8u #define FTM_INVCTRL_INV3EN_SHIFT 3 /* SWOCTRL Bit Fields */ #define FTM_SWOCTRL_CH0OC_MASK 0x1u #define FTM_SWOCTRL_CH0OC_SHIFT 0 #define FTM_SWOCTRL_CH1OC_MASK 0x2u #define FTM_SWOCTRL_CH1OC_SHIFT 1 #define FTM_SWOCTRL_CH2OC_MASK 0x4u #define FTM_SWOCTRL_CH2OC_SHIFT 2 #define FTM_SWOCTRL_CH3OC_MASK 0x8u #define FTM_SWOCTRL_CH3OC_SHIFT 3 #define FTM_SWOCTRL_CH4OC_MASK 0x10u #define FTM_SWOCTRL_CH4OC_SHIFT 4 #define FTM_SWOCTRL_CH5OC_MASK 0x20u #define FTM_SWOCTRL_CH5OC_SHIFT 5 #define FTM_SWOCTRL_CH6OC_MASK 0x40u #define FTM_SWOCTRL_CH6OC_SHIFT 6 #define FTM_SWOCTRL_CH7OC_MASK 0x80u #define FTM_SWOCTRL_CH7OC_SHIFT 7 #define FTM_SWOCTRL_CH0OCV_MASK 0x100u #define FTM_SWOCTRL_CH0OCV_SHIFT 8 #define FTM_SWOCTRL_CH1OCV_MASK 0x200u #define FTM_SWOCTRL_CH1OCV_SHIFT 9 #define FTM_SWOCTRL_CH2OCV_MASK 0x400u #define FTM_SWOCTRL_CH2OCV_SHIFT 10 #define FTM_SWOCTRL_CH3OCV_MASK 0x800u #define FTM_SWOCTRL_CH3OCV_SHIFT 11 #define FTM_SWOCTRL_CH4OCV_MASK 0x1000u #define FTM_SWOCTRL_CH4OCV_SHIFT 12 #define FTM_SWOCTRL_CH5OCV_MASK 0x2000u #define FTM_SWOCTRL_CH5OCV_SHIFT 13 #define FTM_SWOCTRL_CH6OCV_MASK 0x4000u #define FTM_SWOCTRL_CH6OCV_SHIFT 14 #define FTM_SWOCTRL_CH7OCV_MASK 0x8000u #define FTM_SWOCTRL_CH7OCV_SHIFT 15 /* PWMLOAD Bit Fields */ #define FTM_PWMLOAD_CH0SEL_MASK 0x1u #define FTM_PWMLOAD_CH0SEL_SHIFT 0 #define FTM_PWMLOAD_CH1SEL_MASK 0x2u #define FTM_PWMLOAD_CH1SEL_SHIFT 1 #define FTM_PWMLOAD_CH2SEL_MASK 0x4u #define FTM_PWMLOAD_CH2SEL_SHIFT 2 #define FTM_PWMLOAD_CH3SEL_MASK 0x8u #define FTM_PWMLOAD_CH3SEL_SHIFT 3 #define FTM_PWMLOAD_CH4SEL_MASK 0x10u #define FTM_PWMLOAD_CH4SEL_SHIFT 4 #define FTM_PWMLOAD_CH5SEL_MASK 0x20u #define FTM_PWMLOAD_CH5SEL_SHIFT 5 #define FTM_PWMLOAD_CH6SEL_MASK 0x40u #define FTM_PWMLOAD_CH6SEL_SHIFT 6 #define FTM_PWMLOAD_CH7SEL_MASK 0x80u #define FTM_PWMLOAD_CH7SEL_SHIFT 7 #define FTM_PWMLOAD_LDOK_MASK 0x200u #define FTM_PWMLOAD_LDOK_SHIFT 9 /** FTM - Register Layout Typedef */ typedef struct { __IO uint32_t SC; /*!< ״̬ºÍ¿ØÖƼĴæÆ÷, offset: 0x0 */ __IO uint32_t CNT; /*!< ¼ÆÊý¼Ä´æÆ÷, offset: 0x4 */ __IO uint32_t MOD; /*!< Ä£Êý¼Ä´æÆ÷, offset: 0x8 */ struct { __IO uint32_t CnSC; /*!< ͨµÀ״̬ºÍ¿ØÖƼĴæÆ÷, array offset: 0xC, array step: 0x8 */ __IO uint32_t CnV; /*!< ͨµÀÖµ¼Ä´æÆ÷, array offset: 0x10, array step: 0x8 */ } CONTROLS[8]; __IO uint32_t CNTIN; /*!< ¼ÆÊýÆ÷³õʼֵ¼Ä´æÆ÷, offset: 0x4C */ __IO uint32_t STATUS; /*!< ²¶×½ºÍ±È½Ï״̬¼Ä´æÆ÷, offset: 0x50 */ __IO uint32_t MODE; /*!< ÌØÐÔģʽѡÔñ¼Ä´æÆ÷, offset: 0x54 */ __IO uint32_t SYNC; /*!< ͬ²½¼Ä´æÆ÷, offset: 0x58 */ __IO uint32_t OUTINIT; /*!< ͨµÀÊä³öµÄ³õʼ״̬¼Ä´æÆ÷, offset: 0x5C */ __IO uint32_t OUTMASK; /*!< Êä³öÆÁ±Î¼Ä´æÆ÷, offset: 0x60 */ __IO uint32_t COMBINE; /*!< ÒÑÁ¬½ÓÐŵÀ¹¦ÄܼĴæÆ÷, offset: 0x64 */ __IO uint32_t DEADTIME; /*!< ËÀÇøÊ±¼ä²åÈë¿ØÖÆ, offset: 0x68 */ __IO uint32_t EXTTRIG; /*!< FTMÍⲿ´¥·¢¼Ä´æÆ÷, offset: 0x6C */ __IO uint32_t POL; /*!< ͨµÀ¼«ÐԼĴæÆ÷, offset: 0x70 */ __IO uint32_t FMS; /*!< ¹ÊÕÏģʽ״̬¼Ä´æÆ÷, offset: 0x74 */ __IO uint32_t FILTER; /*!< ÊäÈë²¶×½Â˲¨Æ÷¿ØÖƼĴæÆ÷, offset: 0x78 */ __IO uint32_t FLTCTRL; /*!< ¹ÊÕÏ¿ØÖƼĴæÆ÷, offset: 0x7C */ uint8_t RESERVED_1[4]; __IO uint32_t CONF; /*!< ÅäÖüĴæÆ÷, offset: 0x84 */ __IO uint32_t FLTPOL; /*!< FTM ¹ÊÕÏÊäÈ뼫ÐԼĴæÆ÷, offset: 0x88 */ __IO uint32_t SYNCONF; /*!< FTM Èí¼þÊä³ö¿ØÖƼĴæÆ÷, offset: 0x8C */ __IO uint32_t INVCTRL; /*!< FTM Èí¼þÊä³ö¿ØÖƼĴæÆ÷, offset: 0x90 */ __IO uint32_t SWOCTRL; /*!< FTM Èí¼þÊä³ö¿ØÖƼĴæÆ÷, offset: 0x94 */ __IO uint32_t PWMLOAD; /*!< FTM PWM ¼ÓÔØ¼Ä´æÆ÷, offset: 0x98 */ } FTM_Type, *FTM_MemMapPtr; extern FTM_Type* FTM0; extern FTM_Type* FTM1; extern FTM_Type* FTM2; /** @addtogroup XL6600_StdPeriph_Driver * @{ */ /** @addtogroup FTM * @{ */ /* Exported types ------------------------------------------------------------*/ /** * @brief FTM ʱÖÓ³õʼ»¯½á¹¹Ìå */ typedef struct { uint32_t FTM_ClkSource; /*!< ʱÖÓÔ´ */ uint32_t FTM_Prescaler; /*!< ʱÖÓÔ¤·ÖƵϵÊý */ }FTM_InitTypeDef, *FTM_InitConfigPtr; /** * @brief FTM ×éºÏģʽ³õʼ»¯½á¹¹Ì嶨Òå */ typedef struct { uint32_t FTM_ChannelPair; /*!< ͨµÀ¶Ô */ uint32_t PWMEdgeSelect; /*!< PWM±ßÑØÑ¡Ôñ */ uint32_t FTM_CombineEn; /*!< ×éºÏͨµÀʹÄÜ */ uint32_t FTM_CompEn; /*!< ͨµÀ»¥²¹Ê¹ÄÜ */ uint32_t FTM_DeadtimeEn; /*!< ËÀÇøÊ±¼äʹÄÜ */ uint32_t FTM_SynchronizationEn; /*!< ʹÄܼĴæÆ÷C(n)V ºÍC(n+1)VµÄPWMͬ²½ */ uint32_t FTM_FaultControlEn; /*!< ¹ÊÕÏ¿ØÖÆÊ¹ÄÜ */ }FTM_CombinePWMTypeDef, *FTM_CombinePWMConfigPtr; /** * @brief FTM ±È½Ï¹¦Äܳõʼ»¯½á¹¹Ìå */ typedef struct { uint32_t FTM_ChannelPair; /*!< ͨµÀ¶Ô */ uint32_t FTM_CaptureMode; /*!< ²¶»ñģʽ: µ¥´Î²¶»ñºÍÁ¬Ðø */ uint32_t FTM_Channel_N_Edge; /*!< ͨµÀN±ßÑØ¼ì²â */ uint32_t FTM_Channel_Np1_Edge; /*!< ͨµÀN+1±ßÑØ¼ì²â */ }FTM_DualEdgeCaptureTypeDef, *FTM_DualEdgeCaptureConfigPtr; /* Exported constants --------------------------------------------------------*/ /** @defgroup FTM_Exported_Constants FTMÄ£¿éʹÓòÎÊý¶¨Òå * @{ */ /** @defgroup FTM_Deinit_Value FTM¼Ä´æÆ÷ĬÈÏÖµ * @{ */ #define FTM_MOD_INIT ((uint32_t)20000-(uint32_t)1) /*!< MOD inite value */ #define FTM_C0V_INIT (uint32_t)1000 /*!< C0V inite value */ #define FTM_C1V_INIT (uint32_t)1000 /*!< C1V inite value */ #define FTM_C2V_INIT (uint32_t)1000 /*!< C2V inite value */ #define FTM_C3V_INIT (uint32_t)1000 /*!< C3V inite value */ #define FTM_C4V_INIT (uint32_t)1000 /*!< C4V inite value */ #define FTM_C5V_INIT (uint32_t)1000 /*!< C5V inite value */ #define FTM_C6V_INIT (uint32_t)1000 /*!< C6V inite value */ #define FTM_C7V_INIT (uint32_t)1000 /*!< C7V inite value */ /** * @} */ /** @defgroup FTM_Clocksource_Seclect FTMʱÖÓÔ´Ñ¡Ôñ¶¨Òå * @{ */ #define FTM_CLOCK_NOCLOCK 0 /*!< δѡ¶¨Ê±ÖÓ£¬¸ÃÉèÖÃÉúЧºó¿É½ûÓÃFTM¼ÆÊýÆ÷ */ #define FTM_CLOCK_SYSTEMCLOCK 1 /*!< System clock */ #define FTM_CLOCK_FIXEDFREQCLOCK 2 /*!< Fixed Freq Clock */ #define FTM_CLOCK_EXTERNALCLOCK 3 /*!< External Clock */ /** * @} */ /** @defgroup FTM_Clockprescale_Seclect FTMʱÖÓ·ÖÆµÑ¡Ôñ¶¨Òå * @{ */ #define FTM_CLOCK_PS_DIV1 0 /*!< 1·ÖƵ */ #define FTM_CLOCK_PS_DIV2 1 /*!< 2·ÖƵ */ #define FTM_CLOCK_PS_DIV4 2 /*!< 4·ÖƵ */ #define FTM_CLOCK_PS_DIV8 3 /*!< 8·ÖƵ */ #define FTM_CLOCK_PS_DIV16 4 /*!< 16·ÖƵ */ #define FTM_CLOCK_PS_DIV32 5 /*!< 32·ÖƵ */ #define FTM_CLOCK_PS_DIV64 6 /*!< 64·ÖƵ */ #define FTM_CLOCK_PS_DIV128 7 /*!< 128·ÖƵ */ /** * @} */ /** @defgroup FTM_Deadtime_Clockprescale_Seclect FTMËÀÇøÊ±¼äʱÖÓ·ÖÆµÑ¡Ôñ¶¨Òå * @{ */ #define FTM_DEADTIME_DTPS_DIV1 0 /*!< 1·ÖƵ */ #define FTM_DEADTIME_DTPS_DIV4 2 /*!< 4·ÖƵ */ #define FTM_DEADTIME_DTPS_DIV16 3 /*!< 16·ÖƵ */ /** * @} */ /** @defgroup FTM_Channels_Modes_Definition FTMͨµÀģʽ¶¨Òå * @{ */ #define FTM_PWMMODE_EDGEALLIGNED (uint8_t)1 /*!< ±ßÑØ¶ÔÆëPWM */ #define FTM_PWMMODE_CENTERALLIGNED (uint8_t)2 /*!< ÖÐÐÄ¶ÔÆëPWM */ #define FTM_PWMMODE_COMBINE (uint8_t)3 /*!< ×éºÏPWM */ /** * @} */ /** @defgroup FTM_PWM_High/Low_TruePulse FTM_PWM¸ß/µÍÕæÊµÂö³å * @{ */ #define FTM_PWM_HIGHTRUEPULSE 2u /*!< ¸ßÕæÂö³å£¨Í¨µÀ(n)Æ¥ÅäʱÖÃλ£¬Í¨µÀ(n+1)Æ¥ÅäʱÇåÁ㣩 */ #define FTM_PWM_LOWTRUEPULSE 1u /*!< µÍÕæÂö³å£¨Í¨µÀ(n)Æ¥ÅäʱÇåÁ㣬ͨµÀ(n+1)Æ¥ÅäʱÖÃλ */ /** * @} */ /** @defgroup FTM_InputcaptureEdge_Seclect FTMÊäÈë²¶»ñ±ßÑØÀàÐÍÑ¡Ôñ * @{ */ #define FTM_INPUTCAPTURE_RISINGEDGE 1u /*!< ÉÏÉýÑØ */ #define FTM_INPUTCAPTURE_FALLINGEDGE 2u /*!< ϽµÑØ */ #define FTM_INPUTCAPTURE_BOTHEDGE 3u /*!< Ë«±ßÑØ */ /** * @} */ /** @defgroup FTM_InputcaptureDualEdge_Seclect FTMÊäÈë²¶»ñË«±ßÑØÀàÐÍÑ¡Ôñ * @{ */ #define FTM_INPUTCAPTURE_DUALEDGE_NOEDGE 0u /*!< ÎÞ±ßÑØ */ #define FTM_INPUTCAPTURE_DUALEDGE_RISING 1u /*!< ÉÏÉýÑØ */ #define FTM_INPUTCAPTURE_DUALEDGE_FALLING 2u /*!< ϽµÑØ */ #define FTM_INPUTCAPTURE_DUALEDGE_BOTHEDGE 3u /*!< Ë«±ßÑØ */ /** * @} */ /** @defgroup FTM_DualCapture_Mode FTMË«±È½Ïģʽ * @{ */ #define FTM_INPUTCAPTURE_DUALEDGE_ONESHOT 2u /*!< µ¥´Î²¶»ñģʽ */ #define FTM_INPUTCAPTURE_DUALEDGE_CONTINUOUS 1u /*!< Á¬Ðø²¶»ñģʽ */ /** * @} */ /** @defgroup FTM_OutCompare_Mode FTMÊä³ö±È½Ïģʽ * @{ */ #define FTM_OUTPUT_TOGGLE 1u /*!< Æ¥ÅäʱÇл»Êä³ö */ #define FTM_OUTPUT_CLEAR 2u /*!< Æ¥ÅäʱÇåÁãÊä³ö */ #define FTM_OUTPUT_SET 3u /*!< Æ¥ÅäʱÖÃλÊä³ö */ /** * @} */ /** @defgroup FTM_SYNC_TRIGGER_List FTMͬ²½´¥·¢¹¦ÄÜÁбí * @{ */ #define FTM_SYNC_TRIGGER_TRIGGER0 0x10 /*!< ͬ²½Ó²¼þ´¥·¢0 */ #define FTM_SYNC_TRIGGER_TRIGGER1 0x20 /*!< ͬ²½Ó²¼þ´¥·¢1 */ #define FTM_SYNC_TRIGGER_TRIGGER2 0x40 /*!< ͬ²½Ó²¼þ´¥·¢2 */ /** * @} */ /** @defgroup FTM_Update_SYNC_TRIGGER_List FTM¸üÐÂͬ²½´¥·¢¹¦ÄÜÁбí * @{ */ #define FTM_UPDATE_RISINGCLK 0u /*!< ¼Ä´æÆ÷½«ÔÚËùÓÐSYSCLKµÄÉÏÉýÑØÒﮊȼ³åÇøµÄÊýÖµ½øÐиüР*/ #define FTM_UPDATE_PWMSYNC 1u /*!< ¼Ä´æÆ÷½öͨ¹ýPWM ͬ²½Òﮊȼ³åÇøÖµ½øÐиüР*/ /** * @} */ /** @defgroup FTM_Synchronization_Mode_list FTMͬ²½Ä£Ê½ * @{ */ #define FTM_SYNCMODE_LEGACY 0u /*!< Ñ¡Ôñ´«Í³PWMͬ²½ */ #define FTM_SYNCMODE_ENHANCED 1u /*!< Ñ¡ÔñÔöÇ¿PWMͬ²½ */ /** * @} */ /** @defgroup FTM_PWM_Synchronization_Mode_list FTM_PWMÈíÓ²¼þ´¥·¢Ä£Ê½Ñ¡Ôñ * @{ */ #define FTM_PWMSYNC_NORESTRICT 0u /*!< ÎÞÏÞÖÆ£¬Ñ¡Ôñ¿ÉÓÃÓÚMOD¡¢CnV¡¢OUTMASK ºÍFTM ¼ÆÊýÆ÷ͬ²½µÄÈí¼þºÍÓ²¼þ´¥·¢ */ #define FTM_PWMSYNC_SWANDHW 1u /*!< Èí¼þ´¥·¢Ö»ÄÜÓÃÓÚMOD ºÍCnV ͬ²½£¬Ó²¼þ´¥·¢Ö»ÄÜÓÃÓÚFTM¼ÆÊýÆ÷ͬ²½ */ /** * @} */ /** @defgroup FTM_Hardware_Trigger_Mode_list FTMÓ²¼þ´¥·¢Ä£Ê½ÆÁ±Î * @{ */ #define FTM_HWTRIGMODE_CLEAR 0u /*!< ¼ì²âµ½Ó²¼þ´¥·¢jʱ£¨j=0¡¢1¡¢2£©£¬FTMÇåÁãTRIGjλ */ #define FTM_HWTRIGMODE_UNCLEAR 1u /*!< ¼ì²âµ½Ó²¼þ´¥·¢jʱ£¨j=0¡¢1¡¢2£©£¬FTM²»ÇåÁãTRIGjλ */ /** * @} */ /** @defgroup FTM_Synconf_Reg_List FTMͬ²½ * @{ */ #define FTM_SYNCONF_CNTREG 0u /*!< FTMͬ²½¼ÆÊýÆ÷ */ #define FTM_SYNCONF_MODCNTINCVREG 1u /*!< MOD, CNTIN,ºÍCVͬ²½¼Ä´æÆ÷ */ #define FTM_SYNCONF_OUTMASKREG 2u /*!< ͬ²½Êä³öÆÁ±Î */ #define FTM_SYNCONF_INVCTRLREG 3u /*!< INVCTRL¼Ä´æÆ÷ͬ²½ */ #define FTM_SYNCONF_SWOCTRLREG 4u /*!< SWOCTRL¼Ä´æÆ÷ͬ²½ */ /** * @} */ /** @defgroup FTM_Synchronization_Mode_Seclect FTMͬ²½Ä£Ê½´¥·¢Ñ¡Ôñ * @{ */ #define FTM_SYNCONF_SWTRIGGER 0u /*!< ͬ²½Èí¼þ´¥·¢ */ #define FTM_SYNCONF_HWTRIGGER 1u /*!< ͬ²½Ó²¼þ´¥·¢ */ /** * @} */ /** @defgroup FTM_Reinitialization_List FTM¸üÐÂÊä³öÖµ * @{ */ #define FTM_REINIT_NORMALLY 0u /*!< FTM¼ÆÊýÆ÷¼ÌÐøÕý³£¼ÆÊý */ #define FTM_REINIT_UPDATED 1u /*!< FTM¼ÆÊýÆ÷ÒÔÆä³õʼֵ¸üР*/ /** * @} */ /** @defgroup FTM_Channel_List FTMͨµÀÁбí * @{ */ #define FTM_CHANNEL0 0u /*!< FTMxͨµÀ0 */ #define FTM_CHANNEL1 1u /*!< FTMxͨµÀ1 */ #define FTM_CHANNEL2 2u /*!< FTMxͨµÀ2 */ #define FTM_CHANNEL3 3u /*!< FTMxͨµÀ3 */ #define FTM_CHANNEL4 4u /*!< FTMxͨµÀ4 */ #define FTM_CHANNEL5 5u /*!< FTMxͨµÀ5 */ #define FTM_CHANNEL6 6u /*!< FTMxͨµÀ6 */ #define FTM_CHANNEL7 7u /*!< FTMxͨµÀ7 */ /** * @} */ /** @defgroup FTM_ChannelPair_List FTM×éºÏģʽͨµÀÁбí * @{ */ #define FTM_CHANNELPAIR0 0u /*!< ͨµÀ¶Ô0:ch0 & ch1 */ #define FTM_CHANNELPAIR1 2u /*!< ͨµÀ¶Ô1:ch2 & ch3 */ #define FTM_CHANNELPAIR2 4u /*!< ͨµÀ¶Ô2:ch4 & ch5 */ #define FTM_CHANNELPAIR3 6u /*!< ͨµÀ¶Ô3:ch6 & ch7 */ /** * @} */ /** @defgroup FTM_ChannelFlag_List FTMͨµÀ±êÖ¾Áбí * @{ */ #define FTM_CHANNEL0_FLAG 0u /*!< FTMͨµÀ±êÖ¾0 */ #define FTM_CHANNEL1_FLAG 1u /*!< FTMͨµÀ±êÖ¾1 */ #define FTM_CHANNEL2_FLAG 2u /*!< FTMͨµÀ±êÖ¾2 */ #define FTM_CHANNEL3_FLAG 3u /*!< FTMͨµÀ±êÖ¾3 */ #define FTM_CHANNEL4_FLAG 4u /*!< FTMͨµÀ±êÖ¾4 */ #define FTM_CHANNEL5_FLAG 5u /*!< FTMͨµÀ±êÖ¾5 */ #define FTM_CHANNEL6_FLAG 6u /*!< FTMͨµÀ±êÖ¾6 */ #define FTM_CHANNEL7_FLAG 7u /*!< FTMͨµÀ±êÖ¾7 */ /** * @} */ /** @defgroup FTM_IntialValue_list FTM³õʼֵÁбí * @{ */ #define FTM_INITIALVALUE0 0u /*!< FTM³õʼֵ0 */ #define FTM_INITIALVALUE1 1u /*!< FTM³õʼֵ1 */ /** * @} */ /** @defgroup FTM_ChannelPolarity_List FTMͨµÀ¼«ÐÔÁбí * @{ */ #define FTM_CHANNELPOLARITY_HIGH 0u /*!< FTMͨµÀ¼«ÐÔΪ¸ßµçƽ */ #define FTM_CHANNELPOLARITY_LOW 1u /*!< FTMͨµÀ¼«ÐÔΪµÍµçƽ */ /** * @} */ /** @defgroup FTM_FaultDetectionFlag_List FTMͨµÀ´íÎó±êÖ¾Áбí * @{ */ #define FTM_FAULTDETECTION_FLAG0 0u /*!< ¹ÊÕϼì²â±êÖ¾0 */ #define FTM_FAULTDETECTION_FLAG1 1u /*!< ¹ÊÕϼì²â±êÖ¾1 */ #define FTM_FAULTDETECTION_FLAG2 2u /*!< ¹ÊÕϼì²â±êÖ¾2 */ #define FTM_FAULTDETECTION_FLAG3 3u /*!< ¹ÊÕϼì²â±êÖ¾3 */ /** * @} */ /** @defgroup FaultControlChanne_List FTM¹ÊÕÏ¿ØÖÆÍ¨µÀÁбí * @{ */ #define FaultControlChanne0 0x00000040u /*!< ¹ÊÕÏ¿ØÖÆÍ¨µÀ0 */ #define FaultControlChanne1 0x00004000u /*!< ¹ÊÕÏ¿ØÖÆÍ¨µÀ1 */ #define FaultControlChanne2 0x00400000u /*!< ¹ÊÕÏ¿ØÖÆÍ¨µÀ2 */ #define FaultControlChanne3 0x40000000u /*!< ¹ÊÕÏ¿ØÖÆÍ¨µÀ3 */ /** * @} */ /** @defgroup FTM_InputFilterChannel_List FTMÊäÈëÂ˲¨Í¨µÀÁбí * @{ */ #define FTM_INPUTFILTER_CHANNEL0 0u /*!< ͨµÀ0ÊäÈëÂ˲¨ */ #define FTM_INPUTFILTER_CHANNEL1 1u /*!< ͨµÀ1ÊäÈëÂ˲¨ */ #define FTM_INPUTFILTER_CHANNEL2 2u /*!< ͨµÀ2ÊäÈëÂ˲¨ */ #define FTM_INPUTFILTER_CHANNEL3 3u /*!< ͨµÀ3ÊäÈëÂ˲¨ */ /** * @} */ /** @defgroup FTM_FaultInput_List FTM¹ÊÕÏÊäÈëÁбí * @{ */ #define FTM_FAULT_INPUT0 0u /*!< ¹ÊÕÏÊäÈë0 */ #define FTM_FAULT_INPUT1 1u /*!< ¹ÊÕÏÊäÈë1 */ #define FTM_FAULT_INPUT2 2u /*!< ¹ÊÕÏÊäÈë2 */ #define FTM_FAULT_INPUT3 3u /*!< ¹ÊÕÏÊäÈë3 */ /** * @} */ /** @defgroup FTM_FaultInputFilter_List FTM¹ÊÕÏÂ˲¨ÊäÈëÁбí * @{ */ #define FTM_FAULTINPUT_FILTER0 0u /*!< ¹ÊÕÏÂ˲¨ÊäÈë0 */ #define FTM_FAULTINPUT_FILTER1 1u /*!< ¹ÊÕÏÂ˲¨ÊäÈë1 */ #define FTM_FAULTINPUT_FILTER2 2u /*!< ¹ÊÕÏÂ˲¨ÊäÈë2 */ #define FTM_FAULTINPUT_FILTER3 3u /*!< ¹ÊÕÏÂ˲¨ÊäÈë3 */ /** * @} */ /** @defgroup FTM_FaultPolarityFilter_List FTM¹ÊÕÏÂ˲¨ÊäÈëÁбí * @{ */ #define FTM_FAULTINPOLARITY_HIGH 0u /*!< ¹ÊÕÏÊäÈ뼫ÐÔΪ¸ß */ #define FTM_FAULTINPOLARITY_LOW 1u /*!< ¹ÊÕÏÊäÈ뼫ÐÔΪµÍ */ /** * @} */ /** @defgroup FTM_invert_pair_channel_list FTMͨµÀ·´×ª * @{ */ #define FTM_INVERT_PAIRCHANNEL0 0u /*!< ͨµÀ¶Ô0·´×ªÊ¹ÄÜ */ #define FTM_INVERT_PAIRCHANNEL1 1u /*!< ͨµÀ¶Ô1·´×ªÊ¹ÄÜ */ #define FTM_INVERT_PAIRCHANNEL2 2u /*!< ͨµÀ¶Ô2·´×ªÊ¹ÄÜ */ #define FTM_INVERT_PAIRCHANNEL3 3u /*!< ͨµÀ¶Ô3·´×ªÊ¹ÄÜ */ /** * @} */ /** @defgroup FTM_Software_Control_Outvalue_list FTMÈí¼þ¿ØÖÆÊä³öÖµÁбí * @{ */ #define FTM_SWCONTROL_OUT0 0u /*!< FTMÈí¼þ¿ØÖÆÊä³öÖµÇ¿ÖÆÎª0 */ #define FTM_SWCONTROL_OUT1 1u /*!< FTMÈí¼þ¿ØÖÆÊä³öÖµÇ¿ÖÆÎª1 */ /** * @} */ /** @defgroup FTM_ChannelMatch_list FTMͨµÀÆ¥Åä¿ØÖÆÁбí * @{ */ #define FTM_CHANNELMATCH_NOTINCLUDE 0u /*!< Æ¥Åä¹ý³ÌÖв»°üÀ¨Í¨µÀ */ #define FTM_CHANNELMATCH_INCLUDE 1u /*!< Æ¥Åä¹ý³ÌÖаüÀ¨Í¨µÀ */ /** * @} */ /** @defgroup FTM_Software_Sync_Activate FTMÈí¼þͬ²½´¥·¢¹¦ÄÜ * @{ */ #define FTM_SOFTWARE_SYN_CNT FTM_SYNCONF_SWRSTCNT_MASK #define FTM_SOFTWARE_SYN_MOD_CNTIN_CV FTM_SYNCONF_SWWRBUF_MASK #define FTM_SOFTWARE_SYN_OUTMASK FTM_SYNCONF_SWOM_MASK #define FTM_SOFTWARE_SYN_INVCTRL FTM_SYNCONF_SWINVC_MASK #define FTM_SOFTWARE_SYN_OUTCTRL FTM_SYNCONF_SWSOC_MASK /** * @} */ /** @defgroup FTM_Shardware_Sync_Activate FTMÓ²¼þͬ²½´¥·¢¹¦ÄÜ * @{ */ #define FTM_HARDWARE_SYN_CNT FTM_SYNCONF_HWRSTCNT_MASK #define FTM_HARDWARE_SYN_MOD_CNTIN_CV FTM_SYNCONF_HWWRBUF_MASK #define FTM_HARDWARE_SYN_OUTMASK FTM_SYNCONF_HWOM_MASK #define FTM_HARDWARE_SYN_INVCTRL FTM_SYNCONF_HWINVC_MASK #define FTM_HARDWARE_SYN_OUTCTRL FTM_SYNCONF_HWSOC_MASK /** * @} */ /** @defgroup FTM Interrupt Enable FTMÖжÏʹÄÜ * @{ */ typedef enum { FTM_ALLDISABLE= 0, /*!< ËùÓÐͨµÀ½ûÓùÊÕÏ¿ØÖÆ */ FTM_EVENENABLE_MANUALCLEAR, /*!< ½öÕë¶ÔżÊýÐŵÀ£¨ÐŵÀ0¡¢2¡¢4 ºÍ6£©Ê¹ÄܹÊÕÏ¿ØÖÆ£¬ËùѡģʽΪÊÖ¶¯¹ÊÕÏÇåÁã */ FTM_ALLENABLE_MANUALCLEAR, /*!< ËùÓÐͨµÀʹÄܹÊÕÏ¿ØÖÆ£¬ËùѡģʽΪÊÖ¶¯¹ÊÕÏÇåÁã */ FTM_ALLENABLE_AUTOCLEAR /*!< ËùÓÐͨµÀʹÄܹÊÕÏ¿ØÖÆ£¬ËùѡģʽΪ×Ô¶¯¹ÊÕÏÇåÁã */ } FTM_FaultControlModeDef; /** * @} */ /** * @} */ /* Exported macro ------------------------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ void FTM_WriteProtectEnable(FTM_Type* FTMx); void FTM_WriteProtectDisable(FTM_Type* FTMx); void FTM_DeInit(FTM_Type* FTMx); void FTM_Init(FTM_Type* FTMx, const FTM_InitTypeDef* FTM_InitStruct); void FTM_EdgeAlignedPWMInit(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t PWMEdgeSelect); void FTM_CenterAlignedPWMInit(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t PWMEdgeSelect); void FTM_CombinePWMPWMInit(FTM_Type* FTMx, const FTM_CombinePWMTypeDef *FTM_CombinePWMStruct); void FTM_PWMInit(FTM_Type* FTMx, uint8_t PWMModeSelect, uint8_t PWMEdgeSelect); void FTM_InputCaptureInit(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t CaptureMode); void FTM_DualEdgeCaptureInit(FTM_Type* FTMx, const FTM_DualEdgeCaptureTypeDef* FTM_DualEdgeStruct); void FTM_OutputCompareInit(FTM_Type* FTMx, uint8_t FTM_Channel, uint32_t CompareMode); void FTM_OverflowITCmd(FTM_Type* FTMx, FunctionalState NewState); FlagStatus FTM_GetOverFlowFlag(const FTM_Type* FTMx); void FTM_ClrOverFlowFlag(FTM_Type* FTMx); uint16_t FTM_GetCountValue(const FTM_Type* FTMx); void FTM_SetModValue(FTM_Type* FTMx, uint16_t ModValue); void FTM_SetCountInitValue(FTM_Type* FTMx, uint16_t InitialValue); void FTM_ChannelIntCmd(FTM_Type* FTMx, uint8_t FTM_Channel, FunctionalState NewState); FlagStatus FTM_GetChannelFlag(const FTM_Type* FTMx, uint8_t FTM_Channel); void FTM_ClrChannelFlag(FTM_Type* FTMx, uint8_t FTM_Channel); void FTM_SetChannelValue(FTM_Type* FTMx, uint8_t FTM_Channel, uint16_t ChannelValue); uint16_t FTM_GetChannelValue(const FTM_Type* FTMx, uint8_t FTM_Channel ); uint32_t FTM_GetStatusRegFlag(const FTM_Type* FTMx); void FTM_ClrStatusRegFlag(FTM_Type* FTMx); FlagStatus FTM_GetStatusChannelFlag(const FTM_Type* FTMx, uint8_t ChannelFlag); void FTM_ClrStatusChannelFlag(FTM_Type* FTMx, uint8_t ChannelFlag); void FTM_FaultITCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_SetFaultControlMode(FTM_Type* FTMx, FTM_FaultControlModeDef FTM_FaultControlMode); void FTM_CaptureTestCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_SoftwareSync(FTM_Type* FTMx, FunctionalState NewState); void FTM_HardwareSync(FTM_Type* FTMx, uint8_t TriggerN, FunctionalState NewState); void FTM_RegSyncCmd(FTM_Type* FTMx, uint8_t TriggerType, uint8_t RegType, FunctionalState NewState); void FTM_OutMaskSync(FTM_Type* FTMx, uint8_t update); void FTM_CNTINCSync(FTM_Type* FTMx, uint8_t update); void FTM_INVCSync(FTM_Type* FTMx, uint8_t update); void FTM_SWOCSync(FTM_Type* FTMx, uint8_t update); void FTM_SetSyncMode(FTM_Type* FTMx, uint8_t mode); void FTM_SetPWMSyncMode(FTM_Type* FTMx, uint8_t mode); void FTM_SetHardwareTriggerMode(FTM_Type* FTMx, uint8_t mode); void FTM_CNTMAXCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_CNTMINCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_Reinitialization(FTM_Type* FTMx, uint8_t mode); void FTM_SetInitOut(FTM_Type* FTMx, uint8_t initialvalue); void FTM_SetChannelOutInitValue(FTM_Type* FTMx,uint8_t FTM_Channel, uint8_t initialvalue); void FTM_SetOutMask(FTM_Type* FTMx, uint8_t outmask); void FTM_SetChannelOutMaskCmd(FTM_Type* FTMx, uint8_t FTM_Channel, FunctionalState NewState); void FTM_PWMDeadtimeSet(FTM_Type* FTMx, uint32_t PrescalerValue, uint32_t DeadtimeValue); FlagStatus FTM_GetExternalTriggerFlag(const FTM_Type* FTMx); void FTM_ClrExternalTriggerFlag(FTM_Type* FTMx); void FTM_SetChnTriggerCmd(FTM_Type* FTMx, uint8_t FTM_Channel, FunctionalState NewState); void FTM_SetInitTriggerCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_SetChannelsPolarity(FTM_Type* FTMx, uint8_t PolarityValue); void FTM_SetSingleChannelPolarity(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t FTM_Polarity); FlagStatus FTM_GetFaultDetectLogicORFlag(const FTM_Type* FTMx); FlagStatus FTM_GetFaultDetectFlag(const FTM_Type* FTMx, uint8_t FaultDetectFlag); uint32_t FTM_GetFaultInLogicORValue(const FTM_Type* FTMx); void FTM_ClrFaultDetectLogicORFlag(FTM_Type* FTMx); void FTM_ClrFaultDetectFlag(FTM_Type* FTMx, uint8_t FaultDetectFlag); void FTM_SetChannelInFilter(FTM_Type* FTMx, uint8_t FTM_FilterChannel, uint32_t FilterValue); void FTM_SetInCapFilter(FTM_Type* FTMx, uint16_t filter); void FTM_FaultPinCmd(FTM_Type* FTMx, uint8_t FaultInput, FunctionalState NewState); void FTM_FaultPinFilterCmd(FTM_Type* FTMx, uint8_t FaultFilter, FunctionalState NewState); void FTM_SetFaultInFilter(FTM_Type* FTMx, uint32_t FilterValue); void FTM_GTBEENCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_GTBEOUTCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_SetDebugModeBehavior(FTM_Type* FTMx, uint32_t DebugMode); void FTM_SetFaultInPolarity(FTM_Type* FTMx, uint8_t FaultInput, uint8_t polarity); void FTM_PairChannelsInvertCmd(FTM_Type* FTMx, uint8_t channelpair, FunctionalState NewState); void FTM_SWOutControlCmd(FTM_Type* FTMx, uint8_t FTM_Channel, FunctionalState NewState); void FTM_SetSWOutControlValue(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t outvalue); void FTM_SetLoadMatchChannels(FTM_Type* FTMx, uint32_t Matchchannel); void FTM_SetLoadMatchChannel(FTM_Type* FTMx, uint8_t FTM_Channel, uint8_t include); void FTM_SetLoadCmd(FTM_Type* FTMx, FunctionalState NewState); void FTM_CVSyncEnable(FTM_Type* FTMx,uint8_t FTM_Channel,FunctionalState State); void FTM_SoftSyncActivateTypeEnable(FTM_Type* FTMx, uint32_t type, FunctionalState NewState); void FTM_HardSyncActivateTypeEnable(FTM_Type* FTMx, uint32_t type, FunctionalState NewState); void FTM_SyncLoadEnable(FTM_Type* FTMx, FunctionalState NewState); void FTM_FaultControlEnable(FTM_Type* FTMx, uint32_t FaultControlChannel,FunctionalState NewState); #ifdef __cplusplus } #endif #endif /*__XL_FTM_H__ */ /** * @} */ /** * @} */