QQT912/原单片机-CW32F030/原项目程序/SW/Libraries/inc/cw32f030_btim.h

277 lines
10 KiB
C
Raw Normal View History

/**
* @file cw32f030_btim.h
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2021-05-27
*
* @copyright Copyright (c) 2021
*
*/
/*******************************************************************************
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* <EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD>뵼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD>̴<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ר<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɴ<EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ɸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƹ<EFBFBD><EFBFBD>ܡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><EFBFBD>ܱ<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>κη<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿪷<EFBFBD><EFBFBD>̺͹<EFBFBD>Ӧ<EFBFBD>̶Գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>;<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ı<EFBFBD>֤
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ۺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD>人<EFBFBD><EFBFBD>Դ<EFBFBD>뵼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޹<EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򿪷<EFBFBD><EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֪<EFBFBD>䷢<EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶ<EFBFBD>ʧ<EFBFBD><EFBFBD><EFBFBD>𻵣<EFBFBD>ֱ<EFBFBD>ӵġ<EFBFBD><EFBFBD>ر<EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>𺦣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ծ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𺦣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD>ڿɽ<EFBFBD>ʡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>
* ijЩ˾<EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӵġ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κε<EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijЩ<EFBFBD><EFBFBD>
* ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƿ<EFBFBD><EFBFBD>ܲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
*******************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __CW32F030_BTIM_H
#define __CW32F030_BTIM_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "cw32f030.h"
/** @addtogroup STM32F10x_StdPeriph_Driver
* @{
*/
/** @addtogroup BTIM
* @{
*/
/** @defgroup BTIM_Exported_Types
* @{
*/
/**
* @brief BTIM Time Base Init structure definition
* @note This structure is used with all BTIMx except for BTIM6 and BTIM7.
*/
typedef struct
{
uint16_t BTIM_Prescaler; /* Ԥ<><D4A4><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>Χ2<CEA7><32>n<EFBFBD><6E><EFBFBD>ݣ<EFBFBD>n=0,1,2<><32>15 */
uint16_t BTIM_Mode; /* <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>00<30><30><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ģʽ
01<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
10<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
11<EFBFBD><EFBFBD><EFBFBD>ſؼ<EFBFBD><EFBFBD><EFBFBD>ģʽ */
uint16_t BTIM_Period; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>ȡֵ<C8A1><D6B5>Χ0x0000 <20><> 0xFFFF. */
uint16_t BTIM_OPMode; /* <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD> */
} BTIM_TimeBaseInitTypeDef;
/** @defgroup BTIM_Exported_constants
* @{
*/
#define IS_BTIM_ALL_PERIPH(PERIPH) (((PERIPH) == CW_BTIM1) || \
((PERIPH) == CW_BTIM2) || \
((PERIPH) == CW_BTIM3))
/**
* @}
*/
/** @defgroup BTIM_One_Pulse_Mode
* @{
*/
#define BTIM_OPMode_Single ((uint16_t)0x0020)
#define BTIM_OPMode_Repetitive ((uint16_t)0x0000)
#define IS_BTIM_OPM_MODE(MODE) (((MODE) == BTIM_OPMode_Single) || \
((MODE) == BTIM_OPMode_Repetitive))
/**
* @}
*/
/** @defgroup BTIM_Prescaler_Division
* @{
*/
#define BTIM_PRS_DIV1 ((uint16_t)0x0000)
#define BTIM_PRS_DIV2 ((uint16_t)0x0080)
#define BTIM_PRS_DIV4 ((uint16_t)0x0100)
#define BTIM_PRS_DIV8 ((uint16_t)0x0180)
#define BTIM_PRS_DIV16 ((uint16_t)0x0200)
#define BTIM_PRS_DIV32 ((uint16_t)0x0280)
#define BTIM_PRS_DIV64 ((uint16_t)0x0300)
#define BTIM_PRS_DIV128 ((uint16_t)0x0380)
#define BTIM_PRS_DIV256 ((uint16_t)0x0400)
#define BTIM_PRS_DIV512 ((uint16_t)0x0480)
#define BTIM_PRS_DIV1024 ((uint16_t)0x0500)
#define BTIM_PRS_DIV2048 ((uint16_t)0x0580)
#define BTIM_PRS_DIV4096 ((uint16_t)0x0600)
#define BTIM_PRS_DIV8192 ((uint16_t)0x0680)
#define BTIM_PRS_DIV16384 ((uint16_t)0x0700)
#define BTIM_PRS_DIV32768 ((uint16_t)0x0780)
#define IS_BTIM_PRS_DIV(DIV) (((DIV) == BTIM_PRS_DIV1) || \
((DIV) == BTIM_PRS_DIV2) || \
((DIV) == BTIM_PRS_DIV4) || \
((DIV) == BTIM_PRS_DIV8) || \
((DIV) == BTIM_PRS_DIV16) || \
((DIV) == BTIM_PRS_DIV32) || \
((DIV) == BTIM_PRS_DIV64) || \
((DIV) == BTIM_PRS_DIV128) || \
((DIV) == BTIM_PRS_DIV256) || \
((DIV) == BTIM_PRS_DIV512) || \
((DIV) == BTIM_PRS_DIV1024) || \
((DIV) == BTIM_PRS_DIV2048) || \
((DIV) == BTIM_PRS_DIV4096) || \
((DIV) == BTIM_PRS_DIV8192) || \
((DIV) == BTIM_PRS_DIV16384) || \
((DIV) == BTIM_PRS_DIV32768))
/**
* @}
*/
/** @defgroup BTIM_Mode
* @{
*/
#define BTIM_Mode_TIMER ((uint16_t)0x0000)
#define BTIM_Mode_COUNTER ((uint16_t)0x0002)
#define BTIM_Mode_TRIGGER ((uint16_t)0x00004)
#define BTIM_Mode_GATE ((uint16_t)0x0006)
#define IS_BTIM_MODE(MODE) (((MODE) == BTIM_Mode_TIMER) || \
((MODE) == BTIM_Mode_COUNTER) || \
((MODE) == BTIM_Mode_TRIGGER) || \
((MODE) == BTIM_Mode_GATE))
/** @defgroup BTIM_interrupt_sources
* @{
*/
#define BTIM_IT_OV ((uint16_t)0x0001)
#define BTIM_IT_TI ((uint16_t)0x0002)
#define BTIM_IT_TOP ((uint16_t)0x0004)
#define IS_BTIM_IT(IT) ((((IT) & (uint16_t)0xFFF8) == 0x0000) && ((IT) != 0x0000))
#define IS_BTIM_GET_IT(IT) (((IT) == BTIM_IT_OV) || \
((IT) == BTIM_IT_TI) || \
((IT) == BTIM_IT_TOP))
/**
* @}
*/
/** @defgroup BTIM_DMA_sources
* @{
*/
#define BTIM_DMA_OV ((uint16_t)0x0001)
#define BTIM_DMA_TRS ((uint16_t)0x0002)
#define IS_BTIM_DMA_SOURCE(SOURCE) (((SOURCE) == BTIM_DMA_OV) ||\
((SOURCE) == BTIM_DMA_TRS))
/**
* @}
*/
/** @defgroup BTIM_Internal_Trigger_Selection
* @{
*/
#define BTIM_TS_ITR ((uint16_t)0x0008)
#define BTIM_TS_ETR ((uint16_t)0x0000)
#define IS_BTIM_TRIGGER_SELECTION(SELECTION) (((SELECTION) == BTIM_TS_ITR) || \
((SELECTION) == BTIM_TS_ETR))
/**
* @}
*/
/** @defgroup BTIM_ETR_Polarity
* @{
*/
#define BTIM_ETR_Polarity_Positive ((uint16_t)0x0000)
#define BTIM_ETR_Polarity_Negative ((uint16_t)0x0010)
#define IS_BTIM_ETR_POLARITY(MODE) (((MODE) == BTIM_ETR_Polarity_Positive) || \
((MODE) == BTIM_ETR_Polarity_Negative))
/**
* @}
*/
/** @defgroup BTIM_Prescaler_Reload_Mode
* @{
*/
#define BTIM_PSCReloadMode_Update ((uint16_t)0x0000)
#define BTIM_PSCReloadMode_Immediate ((uint16_t)0x0001)
#define IS_BTIM_PRESCALER_RELOAD(RELOAD) (((RELOAD) == BTIM_PSCReloadMode_Update) || \
((RELOAD) == BTIM_PSCReloadMode_Immediate))
/**
* @}
*/
/** @defgroup BTIM_External_Trigger_Filter
* @{
*/
#define BTIM_EXT_FILTER_NONE 0x0000
#define BTIM_EXT_FILTER_PCLK_N2 0x0010
#define BTIM_EXT_FILTER_PCLK_N4 0x0020
#define BTIM_EXT_FILTER_PCLK_N6 0x0030
#define BTIM_EXT_FILTER_PCLKDIV4_N4 0x0040
#define BTIM_EXT_FILTER_PCLKDIV4_N6 0x0050
#define BTIM_EXT_FILTER_PCLKDIV16_N4 0x0060
#define BTIM_EXT_FILTER_PCLKDIV16_N6 0x0070
#define IS_BTIM_EXT_FILTER(EXTFILTER) (((EXTFILTER) == BTIM_EXT_FILTER_NONE) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLK_N2) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLK_N4) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLK_N6) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLKDIV4_N4) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLKDIV4_N6) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLKDIV16_N4) || \
((EXTFILTER) == BTIM_EXT_FILTER_PCLKDIV16_N6))
/**
* @}
*/
/** @defgroup BTIM_Exported_Functions
* @{
*/
void BTIM_DeInit(BTIM_TypeDef* BTIMx);
void BTIM_TimeBaseInit(BTIM_TypeDef* BTIMx, BTIM_TimeBaseInitTypeDef* BTIM_TimeBaseInitStruct);
void BTIM_TimeBaseStructInit(BTIM_TimeBaseInitTypeDef* BTIM_TimeBaseInitStruct);
void BTIM_Cmd(BTIM_TypeDef* BTIMx, FunctionalState NewState);
void BTIM_ITConfig(BTIM_TypeDef* BTIMx, uint16_t BTIM_IT, FunctionalState NewState);
void BTIM_DMACmd(BTIM_TypeDef* BTIMx, uint16_t BTIM_DMASource, FunctionalState NewState);
void BTIM_PrescalerConfig(BTIM_TypeDef* BTIMx, uint16_t Prescaler, uint16_t BTIM_PSCReloadMode);
void BTIM_ModeConfig(BTIM_TypeDef* BTIMx, uint16_t BTIM_Mode);
void BTIM_SelectInputTrigger(BTIM_TypeDef* BTIMx, uint16_t BTIM_InputTriggerSource);
void BTIM_SelectOnePulseMode(BTIM_TypeDef* BTIMx, uint16_t BTIM_OPMode);
void BTIM_OutputToggleCmd(BTIM_TypeDef* BTIMx, FunctionalState NewState);
void BTIM_ETRConfig(BTIM_TypeDef* BTIMx, uint16_t BTIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
void BTIM_SetCounter(BTIM_TypeDef* BTIMx, uint16_t Counter);
void BTIM_SetAutoreload(BTIM_TypeDef* BTIMx, uint16_t Autoreload);
uint16_t BTIM_GetCounter(BTIM_TypeDef* BTIMx);
uint16_t BTIM_GetAutoreload(BTIM_TypeDef* BTIMx);
uint16_t BTIM_GetPrescaler(BTIM_TypeDef* BTIMx);
FlagStatus BTIM_GetFlagStatus(BTIM_TypeDef* BTIMx, uint16_t BTIM_FLAG);
void BTIM_ClearFlag(BTIM_TypeDef* BTIMx, uint16_t BTIM_FLAG);
ITStatus BTIM_GetITStatus(BTIM_TypeDef* BTIMx, uint16_t BTIM_IT);
void BTIM_ClearITPendingBit(BTIM_TypeDef* BTIMx, uint16_t BTIM_IT);
#ifdef __cplusplus
}
#endif
#endif /*__STM32F10x_BTIM_H */
/**
* @}
*/