595 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			595 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /********************************** (C) COPYRIGHT *******************************
 | ||
|  * File Name          : CH59x_timer.h
 | ||
|  * Author             : WCH
 | ||
|  * Version            : V1.2
 | ||
|  * Date               : 2021/11/17
 | ||
|  * Description
 | ||
|  *********************************************************************************
 | ||
|  * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
 | ||
|  * Attention: This software (modified or not) and binary are used for 
 | ||
|  * microcontroller manufactured by Nanjing Qinheng Microelectronics.
 | ||
|  *******************************************************************************/
 | ||
| 
 | ||
| #ifndef __CH59x_TIMER_H__
 | ||
| #define __CH59x_TIMER_H__
 | ||
| 
 | ||
| #ifdef __cplusplus
 | ||
| extern "C" {
 | ||
| #endif
 | ||
| 
 | ||
| #define DataBit_25            (1 << 25)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief  TMR0 interrupt bit define
 | ||
|  */
 | ||
| 
 | ||
| #define TMR0_3_IT_CYC_END     0x01  // 周期结束标志:捕捉-超时,定时-周期结束,PWM-周期结束
 | ||
| #define TMR0_3_IT_DATA_ACT    0x02  // 数据有效标志:捕捉-新数据,PWM-有效电平结束
 | ||
| #define TMR0_3_IT_FIFO_HF     0x04  // FIFO 使用过半:捕捉- FIFO>=4, PWM- FIFO<4
 | ||
| #define TMR1_2_IT_DMA_END     0x08  // DMA 结束,支持TMR1和TMR2
 | ||
| #define TMR0_3_IT_FIFO_OV     0x10  // FIFO 溢出:捕捉- FIFO满, PWM- FIFO空
 | ||
| 
 | ||
| /**
 | ||
|  * @brief  Configuration PWM effective level repeat times
 | ||
|  */
 | ||
| typedef enum
 | ||
| {
 | ||
|     PWM_Times_1 = 0, // PWM 有效输出重复1次数
 | ||
|     PWM_Times_4,     // PWM 有效输出重复4次数
 | ||
|     PWM_Times_8,     // PWM 有效输出重复8次数
 | ||
|     PWM_Times_16,    // PWM 有效输出重复16次数
 | ||
| } PWM_RepeatTsTypeDef;
 | ||
| 
 | ||
| /**
 | ||
|  * @brief  Configuration Cap mode
 | ||
|  */
 | ||
| typedef enum
 | ||
| {
 | ||
|     CAP_NULL = 0,         // 不捕捉 & 不计数
 | ||
|     Edge_To_Edge,         // 任意边沿之间  &  计数任意边沿
 | ||
|     FallEdge_To_FallEdge, // 下降沿到下降沿  & 计数下降沿
 | ||
|     RiseEdge_To_RiseEdge, // 上升沿到上升沿  &  计数上升沿
 | ||
| } CapModeTypeDef;
 | ||
| 
 | ||
| /**
 | ||
|  * @brief  Configuration DMA mode
 | ||
|  */
 | ||
| typedef enum
 | ||
| {
 | ||
|     Mode_Single = 0, // 单次模式
 | ||
|     Mode_LOOP,       // 循环模式
 | ||
| } DMAModeTypeDef;
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   定时功能初始化
 | ||
|  *
 | ||
|  * @param   t       - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
 | ||
|  */
 | ||
| void TMR0_TimerInit(uint32_t t);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前定时器值,最大67108864
 | ||
|  *
 | ||
|  * @return  当前定时器值
 | ||
|  */
 | ||
| #define TMR0_GetCurrentTimer()    R32_TMR0_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   边沿计数功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - 采集计数类型
 | ||
|  */
 | ||
| void TMR0_EXTSingleCounterInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   设置计数统计溢出大小,最大67108862
 | ||
|  *
 | ||
|  * @param   cyc     - 计数统计溢出大小
 | ||
|  */
 | ||
| #define TMR0_CountOverflowCfg(cyc)    (R32_TMR0_CNT_END = (cyc + 2))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前计数值,最大67108862
 | ||
|  *
 | ||
|  * @return  当前计数值
 | ||
|  */
 | ||
| #define TMR0_GetCurrentCount()        R32_TMR0_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM0 通道输出波形周期配置, 最大67108864
 | ||
|  *
 | ||
|  * @param   cyc     - 输出波形周期
 | ||
|  */
 | ||
| #define TMR0_PWMCycleCfg(cyc)         (R32_TMR0_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM 输出初始化
 | ||
|  *
 | ||
|  * @param   pr      - select wave polar, refer to PWMX_PolarTypeDef
 | ||
|  * @param   ts      - set pwm repeat times, refer to PWM_RepeatTsTypeDef
 | ||
|  */
 | ||
| void TMR0_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM0 有效数据脉宽, 最大67108864
 | ||
|  *
 | ||
|  * @param   d       - 有效数据脉宽
 | ||
|  */
 | ||
| #define TMR0_PWMActDataWidth(d)    (R32_TMR0_FIFO = d)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   CAP0 捕捉电平超时配置, 最大33554432
 | ||
|  *
 | ||
|  * @param   cyc     - 捕捉电平超时
 | ||
|  */
 | ||
| #define TMR0_CAPTimeoutCfg(cyc)    (R32_TMR0_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   外部信号捕捉功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - select capture mode, refer to CapModeTypeDef
 | ||
|  */
 | ||
| void TMR0_CapInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取脉冲数据
 | ||
|  *
 | ||
|  * @return  脉冲数据
 | ||
|  */
 | ||
| #define TMR0_CAPGetData()        R32_TMR0_FIFO
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前已捕获数据个数
 | ||
|  *
 | ||
|  * @return  当前已捕获数据个数
 | ||
|  */
 | ||
| #define TMR0_CAPDataCounter()    R8_TMR0_FIFO_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR0 PWM输出
 | ||
|  */
 | ||
| #define TMR0_PWMDisable()           (R8_TMR0_CTRL_MOD &= ~RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR0 PWM输出
 | ||
|  */
 | ||
| #define TMR0_PWMEnable()           (R8_TMR0_CTRL_MOD |= RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR0
 | ||
|  */
 | ||
| #define TMR0_Disable()           (R8_TMR0_CTRL_MOD &= ~RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR0
 | ||
|  */
 | ||
| #define TMR0_Enable()            (R8_TMR0_CTRL_MOD |= RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   中断配置
 | ||
|  *
 | ||
|  * @param   s       - 使能/关闭
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR0_ITCfg(s, f)         ((s) ? (R8_TMR0_INTER_EN |= f) : (R8_TMR0_INTER_EN &= ~f))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   清除中断标志
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR0_ClearITFlag(f)      (R8_TMR0_INT_FLAG = f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   查询中断标志状态
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR0_GetITFlag(f)        (R8_TMR0_INT_FLAG & f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   定时功能初始化
 | ||
|  *
 | ||
|  * @param   t       - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
 | ||
|  */
 | ||
| void TMR1_TimerInit(uint32_t t);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前定时器值,最大67108864
 | ||
|  *
 | ||
|  * @return  当前定时器值
 | ||
|  */
 | ||
| #define TMR1_GetCurrentTimer()    R32_TMR1_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   边沿计数功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - 采集计数类型
 | ||
|  */
 | ||
| void TMR1_EXTSingleCounterInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   设置计数统计溢出大小,最大67108862
 | ||
|  *
 | ||
|  * @param   cyc     - 计数统计溢出大小
 | ||
|  */
 | ||
| #define TMR1_CountOverflowCfg(cyc)    (R32_TMR1_CNT_END = (cyc + 2))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前计数值,最大67108862
 | ||
|  *
 | ||
|  * @return  当前计数值
 | ||
|  */
 | ||
| #define TMR1_GetCurrentCount()        R32_TMR1_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM1 通道输出波形周期配置, 最大67108864
 | ||
|  *
 | ||
|  * @param   cyc     - 输出波形周期
 | ||
|  */
 | ||
| #define TMR1_PWMCycleCfg(cyc)         (R32_TMR1_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM 输出初始化
 | ||
|  *
 | ||
|  * @param   pr      - select wave polar, refer to PWMX_PolarTypeDef
 | ||
|  * @param   ts      - set pwm repeat times, refer to PWM_RepeatTsTypeDef
 | ||
|  */
 | ||
| void TMR1_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM1 有效数据脉宽, 最大67108864
 | ||
|  *
 | ||
|  * @param   d       - 有效数据脉宽
 | ||
|  */
 | ||
| #define TMR1_PWMActDataWidth(d)    (R32_TMR1_FIFO = d)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   CAP1 捕捉电平超时配置, 最大33554432
 | ||
|  *
 | ||
|  * @param   cyc     - 捕捉电平超时
 | ||
|  */
 | ||
| #define TMR1_CAPTimeoutCfg(cyc)    (R32_TMR1_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   外部信号捕捉功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - select capture mode, refer to CapModeTypeDef
 | ||
|  */
 | ||
| void TMR1_CapInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取脉冲数据
 | ||
|  *
 | ||
|  * @return  脉冲数据
 | ||
|  */
 | ||
| #define TMR1_CAPGetData()        R32_TMR1_FIFO
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前已捕获数据个数
 | ||
|  *
 | ||
|  * @return  当前已捕获数据个数
 | ||
|  */
 | ||
| #define TMR1_CAPDataCounter()    R8_TMR1_FIFO_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   配置DMA功能
 | ||
|  *
 | ||
|  * @param   s           - 是否打开DMA功能
 | ||
|  * @param   startAddr   - DMA 起始地址
 | ||
|  * @param   endAddr     - DMA 结束地址
 | ||
|  * @param   m           - 配置DMA模式
 | ||
|  */
 | ||
| void TMR1_DMACfg(uint8_t s, uint16_t startAddr, uint16_t endAddr, DMAModeTypeDef m);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR1 PWM输出
 | ||
|  */
 | ||
| #define TMR1_PWMDisable()           (R8_TMR1_CTRL_MOD &= ~RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR1 PWM输出
 | ||
|  */
 | ||
| #define TMR1_PWMEnable()           (R8_TMR1_CTRL_MOD |= RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR1
 | ||
|  */
 | ||
| #define TMR1_Disable()         (R8_TMR1_CTRL_MOD &= ~RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR1
 | ||
|  */
 | ||
| #define TMR1_Enable()          (R8_TMR1_CTRL_MOD |= RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   中断配置
 | ||
|  *
 | ||
|  * @param   s       - 使能/关闭
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR1_ITCfg(s, f)       ((s) ? (R8_TMR1_INTER_EN |= f) : (R8_TMR1_INTER_EN &= ~f))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   清除中断标志
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR1_ClearITFlag(f)    (R8_TMR1_INT_FLAG = f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   查询中断标志状态
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR1_GetITFlag(f)      (R8_TMR1_INT_FLAG & f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   定时功能初始化
 | ||
|  *
 | ||
|  * @param   t       - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
 | ||
|  */
 | ||
| void TMR2_TimerInit(uint32_t t);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前定时器值,最大67108864
 | ||
|  *
 | ||
|  * @return  当前定时器值
 | ||
|  */
 | ||
| #define TMR2_GetCurrentTimer()    R32_TMR2_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   边沿计数功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - 采集计数类型
 | ||
|  */
 | ||
| void TMR2_EXTSingleCounterInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   设置计数统计溢出大小,最大67108862
 | ||
|  *
 | ||
|  * @param   cyc     - 计数统计溢出大小
 | ||
|  */
 | ||
| #define TMR2_CountOverflowCfg(cyc)    (R32_TMR2_CNT_END = (cyc + 2))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前计数值,最大67108862
 | ||
|  *
 | ||
|  * @return  当前计数值
 | ||
|  */
 | ||
| #define TMR2_GetCurrentCount()        R32_TMR2_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM2 通道输出波形周期配置, 最大67108864
 | ||
|  *
 | ||
|  * @param   cyc     - 输出波形周期
 | ||
|  */
 | ||
| #define TMR2_PWMCycleCfg(cyc)         (R32_TMR2_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM 输出初始化
 | ||
|  *
 | ||
|  * @param   pr      - select wave polar, refer to PWMX_PolarTypeDef
 | ||
|  * @param   ts      - set pwm repeat times, refer to PWM_RepeatTsTypeDef
 | ||
|  */
 | ||
| void TMR2_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM2 有效数据脉宽, 最大67108864
 | ||
|  *
 | ||
|  * @param   d       - 有效数据脉宽
 | ||
|  */
 | ||
| #define TMR2_PWMActDataWidth(d)    (R32_TMR2_FIFO = d)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   CAP2 捕捉电平超时配置, 最大33554432
 | ||
|  *
 | ||
|  * @param   cyc     - 捕捉电平超时
 | ||
|  */
 | ||
| #define TMR2_CAPTimeoutCfg(cyc)    (R32_TMR2_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   外部信号捕捉功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - select capture mode, refer to CapModeTypeDef
 | ||
|  */
 | ||
| void TMR2_CapInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取脉冲数据
 | ||
|  *
 | ||
|  * @return  脉冲数据
 | ||
|  */
 | ||
| #define TMR2_CAPGetData()        R32_TMR2_FIFO
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前已捕获数据个数
 | ||
|  *
 | ||
|  * @return  当前已捕获数据个数
 | ||
|  */
 | ||
| #define TMR2_CAPDataCounter()    R8_TMR2_FIFO_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   配置DMA功能
 | ||
|  *
 | ||
|  * @param   s           - 是否打开DMA功能
 | ||
|  * @param   startAddr   - DMA 起始地址
 | ||
|  * @param   endAddr     - DMA 结束地址
 | ||
|  * @param   m           - 配置DMA模式
 | ||
|  */
 | ||
| void TMR2_DMACfg(uint8_t s, uint32_t startAddr, uint32_t endAddr, DMAModeTypeDef m);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR2 PWM输出
 | ||
|  */
 | ||
| #define TMR2_PWMDisable()           (R8_TMR2_CTRL_MOD &= ~RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR2 PWM输出
 | ||
|  */
 | ||
| #define TMR2_PWMEnable()           (R8_TMR2_CTRL_MOD |= RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR2
 | ||
|  */
 | ||
| #define TMR2_Disable()         (R8_TMR2_CTRL_MOD &= ~RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR2
 | ||
|  */
 | ||
| #define TMR2_Enable()          (R8_TMR2_CTRL_MOD |= RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   中断配置
 | ||
|  *
 | ||
|  * @param   s       - 使能/关闭
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR2_ITCfg(s, f)       ((s) ? (R8_TMR2_INTER_EN |= f) : (R8_TMR2_INTER_EN &= ~f))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   清除中断标志
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR2_ClearITFlag(f)    (R8_TMR2_INT_FLAG = f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   查询中断标志状态
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR2_GetITFlag(f)      (R8_TMR2_INT_FLAG & f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   定时功能初始化
 | ||
|  *
 | ||
|  * @param   t       - 定时时间,基于当前系统时钟Tsys, 最长定时周期 67108864
 | ||
|  */
 | ||
| void TMR3_TimerInit(uint32_t t);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前定时器值,最大67108864
 | ||
|  *
 | ||
|  * @return  当前定时器值
 | ||
|  */
 | ||
| #define TMR3_GetCurrentTimer()    R32_TMR3_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   边沿计数功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - 采集计数类型
 | ||
|  */
 | ||
| void TMR3_EXTSingleCounterInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   设置计数统计溢出大小,最大67108862
 | ||
|  *
 | ||
|  * @param   cyc     - 计数统计溢出大小
 | ||
|  */
 | ||
| #define TMR3_CountOverflowCfg(cyc)    (R32_TMR3_CNT_END = (cyc + 2))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前计数值,最大67108862
 | ||
|  *
 | ||
|  * @return  当前计数值
 | ||
|  */
 | ||
| #define TMR3_GetCurrentCount()        R32_TMR3_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM3 通道输出波形周期配置, 最大67108864
 | ||
|  *
 | ||
|  * @param   cyc     - 输出波形周期
 | ||
|  */
 | ||
| #define TMR3_PWMCycleCfg(cyc)         (R32_TMR3_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM 输出初始化
 | ||
|  *
 | ||
|  * @param   pr      - select wave polar, refer to PWMX_PolarTypeDef
 | ||
|  * @param   ts      - set pwm repeat times, refer to PWM_RepeatTsTypeDef
 | ||
|  */
 | ||
| void TMR3_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   PWM3 有效数据脉宽, 最大67108864
 | ||
|  *
 | ||
|  * @param   d       - 有效数据脉宽
 | ||
|  */
 | ||
| #define TMR3_PWMActDataWidth(d)    (R32_TMR3_FIFO = d)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   CAP3 捕捉电平超时配置, 最大33554432
 | ||
|  *
 | ||
|  * @param   cyc     - 捕捉电平超时
 | ||
|  */
 | ||
| #define TMR3_CAPTimeoutCfg(cyc)    (R32_TMR3_CNT_END = cyc)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   外部信号捕捉功能初始化
 | ||
|  *
 | ||
|  * @param   cap     - select capture mode, refer to CapModeTypeDef
 | ||
|  */
 | ||
| void TMR3_CapInit(CapModeTypeDef cap);
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取脉冲数据
 | ||
|  *
 | ||
|  * @return  脉冲数据
 | ||
|  */
 | ||
| #define TMR3_CAPGetData()        R32_TMR3_FIFO
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   获取当前已捕获数据个数
 | ||
|  *
 | ||
|  * @return  当前已捕获数据个数
 | ||
|  */
 | ||
| #define TMR3_CAPDataCounter()    R8_TMR3_FIFO_COUNT
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR3 PWM输出
 | ||
|  */
 | ||
| #define TMR3_PWMDisable()           (R8_TMR3_CTRL_MOD &= ~RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR3 PWM输出
 | ||
|  */
 | ||
| #define TMR3_PWMEnable()           (R8_TMR3_CTRL_MOD |= RB_TMR_OUT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   关闭 TMR3
 | ||
|  */
 | ||
| #define TMR3_Disable()           (R8_TMR3_CTRL_MOD &= ~RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   开启 TMR3
 | ||
|  */
 | ||
| #define TMR3_Enable()            (R8_TMR3_CTRL_MOD |= RB_TMR_COUNT_EN)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   中断配置
 | ||
|  *
 | ||
|  * @param   s       - 使能/关闭
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR3_ITCfg(s, f)         ((s) ? (R8_TMR3_INTER_EN |= f) : (R8_TMR3_INTER_EN &= ~f))
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   清除中断标志
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR3_ClearITFlag(f)      (R8_TMR3_INT_FLAG = f)
 | ||
| 
 | ||
| /**
 | ||
|  * @brief   查询中断标志状态
 | ||
|  *
 | ||
|  * @param   f       - refer to TMR interrupt bit define
 | ||
|  */
 | ||
| #define TMR3_GetITFlag(f)        (R8_TMR3_INT_FLAG & f)
 | ||
| 
 | ||
| #ifdef __cplusplus
 | ||
| }
 | ||
| #endif
 | ||
| 
 | ||
| #endif // __CH59x_TIMER_H__
 |