2024-12-02 16:26:55 +08:00
|
|
|
|
/********************************** (C) COPYRIGHT *******************************
|
2025-02-21 14:38:41 +08:00
|
|
|
|
* File Name : CH58x_timer3.c
|
2024-12-02 16:26:55 +08:00
|
|
|
|
* Author : WCH
|
|
|
|
|
* Version : V1.2
|
|
|
|
|
* Date : 2021/11/17
|
2025-02-21 14:38:41 +08:00
|
|
|
|
* Description : source file(ch585/ch584)
|
2024-12-02 16:26:55 +08:00
|
|
|
|
*********************************************************************************
|
|
|
|
|
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
2025-06-03 13:35:50 +08:00
|
|
|
|
* Attention: This software (modified or not) and binary are used for
|
2024-12-02 16:26:55 +08:00
|
|
|
|
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
2025-02-21 14:38:41 +08:00
|
|
|
|
#include "CH58x_common.h"
|
2024-12-02 16:26:55 +08:00
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn TMR3_TimerInit
|
|
|
|
|
*
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param t - <EFBFBD><EFBFBD>ʱʱ<EFBFBD>䣬<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ǰϵͳʱ<EFBFBD><EFBFBD>Tsys, <EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 67108864
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void TMR3_TimerInit(uint32_t t)
|
|
|
|
|
{
|
|
|
|
|
R32_TMR3_CNT_END = t;
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn TMR3_EXTSingleCounterInit
|
|
|
|
|
*
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param cap - <EFBFBD>ɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void TMR3_EXTSingleCounterInit(CapModeTypeDef cap)
|
|
|
|
|
{
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN | RB_TMR_CAP_COUNT | RB_TMR_MODE_IN | (cap << 6);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn TMR3_PWMInit
|
|
|
|
|
*
|
|
|
|
|
* @brief PWM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param pr - select wave polar, refer to PWMX_PolarTypeDef
|
|
|
|
|
* @param ts - set pwm repeat times, refer to PWM_RepeatTsTypeDef
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void TMR3_PWMInit(PWMX_PolarTypeDef pr, PWM_RepeatTsTypeDef ts)
|
|
|
|
|
{
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
|
|
|
|
|
R8_TMR3_CTRL_MOD = (pr << 4) | (ts << 6);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn TMR3_CapInit
|
|
|
|
|
*
|
|
|
|
|
* @brief <EFBFBD>ⲿ<EFBFBD>źŲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param cap - select capture mode, refer to CapModeTypeDef
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void TMR3_CapInit(CapModeTypeDef cap)
|
|
|
|
|
{
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_ALL_CLEAR;
|
|
|
|
|
R8_TMR3_CTRL_MOD = RB_TMR_COUNT_EN | RB_TMR_MODE_IN | (cap << 6);
|
|
|
|
|
}
|
2025-02-21 14:38:41 +08:00
|
|
|
|
|
|
|
|
|
/*********************************************************************
|
|
|
|
|
* @fn TMR3_DMACfg
|
|
|
|
|
*
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param s - <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param startAddr - DMA <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @param endAddr - DMA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @param m - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>DMAģʽ
|
|
|
|
|
*
|
|
|
|
|
* @return none
|
|
|
|
|
*/
|
|
|
|
|
void TMR3_DMACfg(uint8_t s, uint32_t startAddr, uint32_t endAddr, DMAModeTypeDef m)
|
|
|
|
|
{
|
|
|
|
|
if(s == DISABLE)
|
|
|
|
|
{
|
|
|
|
|
R8_TMR3_CTRL_DMA = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
R32_TMR3_DMA_BEG = startAddr & 0x1FFFF;
|
|
|
|
|
R32_TMR3_DMA_END = endAddr& 0x1FFFF;
|
|
|
|
|
if(m)
|
|
|
|
|
R8_TMR3_CTRL_DMA = RB_TMR_DMA_LOOP | RB_TMR_DMA_ENABLE;
|
|
|
|
|
else
|
|
|
|
|
R8_TMR3_CTRL_DMA = RB_TMR_DMA_ENABLE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|