You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
779 lines
27 KiB
779 lines
27 KiB
/*********************************************************
|
|
*Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
|
|
*文件名: lib_timer.c
|
|
*作 者: AE Team
|
|
*版 本: V1.01
|
|
*日 期: 2021/06/09
|
|
*描 述: Timer模块库函数
|
|
*备 注:
|
|
本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
|
|
**********************************************************/
|
|
#include "lib_timer.h"
|
|
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_BaseInit
|
|
描 述:T16Nx基本初始化,初始化时钟选择,外部时钟同步,外部时钟计数边缘选择,工作模式。
|
|
输入值:T16Nx:可以是T16N0/1/2/3 、T16Nx_BaseInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_BaseInit(T16N_TypeDef *T16Nx, T16Nx_BaseInitStruType *T16Nx_BaseInitStruct)
|
|
{
|
|
T16Nx->CON0.CS = T16Nx_BaseInitStruct->T16Nx_ClkS; /* 计数时钟源选择 */
|
|
T16Nx->CON0.SYNC = T16Nx_BaseInitStruct->T16Nx_SYNC; /* 外部时钟同步使能 Disable:不同步外部时钟,为异步计数模式。Enable:通过PCLK对外部时钟同步,为同步计数模式,外部时钟的高低电平平均至少保持2个时钟周期 */
|
|
T16Nx->CON0.EDGE = T16Nx_BaseInitStruct->T16Nx_EDGE; /* 外部时钟计数边沿选择 */
|
|
T16Nx->CON0.MOD = T16Nx_BaseInitStruct->T16Nx_Mode; /* 工作模式选择 */
|
|
T16Nx->PREMAT.PREMAT = T16Nx_BaseInitStruct->T16Nx_PREMAT - 1; /* 预分频比设置,范围:1-256 */
|
|
|
|
T16Nx->CON2.REGBUF_EN = Disable; /* 配置缓冲寄存器禁止 */
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_CapInit
|
|
描 述:T16Nx捕捉初始化
|
|
输入值::T16Nx:可以是T16N0/1/2/3、 T16Nx_CapInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_CapInit(T16N_TypeDef *T16Nx, T16Nx_CapInitStruType *T16Nx_CapInitStruct)
|
|
{
|
|
|
|
T16Nx->CON1.CAPL0 = T16Nx_CapInitStruct->T16Nx_CAPCAPL0; /* 配置捕捉0重载计数器是否使能 */
|
|
T16Nx->CON1.CAPL1 = T16Nx_CapInitStruct->T16Nx_CAPCAPL1; /* 配置捕捉1重载计数器是否使能 */
|
|
T16Nx->CON1.CAPPE = T16Nx_CapInitStruct->T16Nx_CapRise; /* 配置上升沿输入捕捉是否使能 */
|
|
T16Nx->CON1.CAPNE = T16Nx_CapInitStruct->T16Nx_CapFall; /* 配置下降沿输入捕捉是否使能 */
|
|
T16Nx->CON1.CAPIS0 = T16Nx_CapInitStruct->T16Nx_CapIS0; /* 配置捕捉输入端口T16NxIN0是否使能 */
|
|
T16Nx->CON1.CAPIS1 = T16Nx_CapInitStruct->T16Nx_CapIS1; /* 配置捕捉输入端口T16NxIN1是否使能 */
|
|
T16Nx->CON1.CAPT = T16Nx_CapInitStruct->T16Nx_CapTime; /* 配置捕捉次数 */
|
|
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_PMWOutInit
|
|
描 述:T16NxPWM输出初始化
|
|
输入值::T16Nx:可以是T16N0/1/2/3、 T16Nx_PWMInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_PMWOutInit(T16N_TypeDef *T16Nx, T16Nx_PWMInitStruType *T16Nx_PWMInitStruct)
|
|
{
|
|
T16Nx->CON2.MOE0 = T16Nx_PWMInitStruct->T16Nx_MOE0; /* 配置输出端口0是否使能 */
|
|
T16Nx->CON2.MOE1 = T16Nx_PWMInitStruct->T16Nx_MOE1; /* 配置输出端口1是否使能 */
|
|
T16Nx->CON2.POL0 = T16Nx_PWMInitStruct->T16Nx_POL0; /* 配置T16NxOut0输出极性 */
|
|
T16Nx->CON2.POL1 = T16Nx_PWMInitStruct->T16Nx_POL1; /* 配置T16NxOut1输出极性 */
|
|
T16Nx->CON2.PWMMOD = T16Nx_PWMInitStruct->T16Nx_PWMMODE; /* 配置PWM模式选择 */
|
|
T16Nx->CON2.PWMDZE = T16Nx_PWMInitStruct->PWMDZE; /* 配置PWM互补模式死区是否使能 */
|
|
T16Nx->CON2.REGBUF_EN = T16Nx_PWMInitStruct->REGBUFEN; /* 配置PWM缓冲寄存器是否使能 */
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_PMWPDZ_Config
|
|
描 述:T16NxPWM互补模式死区宽度配置
|
|
输入值::T16Nx:可以是T16N0/1/2/3、 PWM_PDZ_data:死区周期配置1-256
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
|
|
void T16Nx_PWMPDZ_Config(T16N_TypeDef *T16Nx, unsigned int PWM_PDZ_data)
|
|
{
|
|
T16Nx->PDZ.PDZ = PWM_PDZ_data - 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_MATxITConfig
|
|
描 述:T16Nx匹配后的工作模式配置
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Type:匹配后的工作模式
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_MAT0ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
|
|
{
|
|
T16Nx->CON0.MAT0S = Type;
|
|
}
|
|
void T16Nx_MAT1ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
|
|
{
|
|
T16Nx->CON0.MAT1S = Type;
|
|
}
|
|
void T16Nx_MAT2ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
|
|
{
|
|
T16Nx->CON0.MAT2S = Type;
|
|
}
|
|
void T16Nx_MAT3ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATCON Type)
|
|
{
|
|
T16Nx->CON0.MAT3S = Type;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_MATxOutxConfig
|
|
描 述:T16Nx匹配后的输出端口的模式配置
|
|
输入值:T16Nx:可以是T16N0/1/2/3 、 Type:匹配后端口的工作模式
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_MAT0Out0Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
|
|
{
|
|
T16Nx->CON2.MOM0 = Type;
|
|
}
|
|
void T16Nx_MAT1Out0Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
|
|
{
|
|
T16Nx->CON2.MOM1 = Type;
|
|
}
|
|
void T16Nx_MAT2Out1Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
|
|
{
|
|
T16Nx->CON2.MOM2 = Type;
|
|
}
|
|
void T16Nx_MAT3Out1Config(T16N_TypeDef *T16Nx, T16Nx_TYPE_MATOUT Type)
|
|
{
|
|
T16Nx->CON2.MOM3 = Type;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_ITConfig
|
|
描 述:T16N中断配置
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Type:中断类型 、 NewState:使能/失能
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_ITConfig(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT Type, TYPE_FUNCEN NewState)
|
|
{
|
|
if (NewState != Disable)
|
|
{
|
|
T16Nx->IE.Word |= (uint32_t)Type;
|
|
}
|
|
else
|
|
{
|
|
T16Nx->IE.Word &= (~(uint32_t)Type);
|
|
}
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
|
|
描 述:T16N用于判断T16N中断使能状态
|
|
输入值:T16Nx:可以是T16N0/1/2/3,T16Nx_Flag:中断类型
|
|
输出值:中断使能返回SET,否则返回RESET
|
|
返回值:无
|
|
***************************************************************/
|
|
FlagStatus T16Nx_GetITStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
|
|
{
|
|
FlagStatus bitstatus = RESET;
|
|
|
|
if (T16Nx->IE.Word & T16Nx_Flag)
|
|
bitstatus = SET;
|
|
|
|
return bitstatus;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetCNT0
|
|
描 述:设置CNT0计数值
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Value:16位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetCNT0(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
T16Nx->CON0.ASYWEN = Disable;
|
|
T16Nx->CNT0.CNT0 = Value;
|
|
T16Nx->CON0.ASYWEN = Enable;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetCNT1
|
|
描 述:设置CNT1计数值
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Value:16位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetCNT1(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
T16Nx->CON0.ASYWEN = Disable;
|
|
T16Nx->CNT1.CNT1 = Value;
|
|
T16Nx->CON0.ASYWEN = Enable;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetPREMAT
|
|
描 述:设置预分频比
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Value:1-256
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetPREMAT(T16N_TypeDef *T16Nx, uint8_t Value)
|
|
{
|
|
T16Nx->PREMAT.PREMAT = Value - 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetPRECNT
|
|
描 述:设置预分频计数器
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 Value:1-256
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetPRECNT(T16N_TypeDef *T16Nx, uint8_t Value)
|
|
{
|
|
T16Nx->CON0.ASYWEN = Disable;
|
|
T16Nx->PRECNT.PRECNT = Value;
|
|
T16Nx->CON0.ASYWEN = Enable;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetMATx
|
|
描 述:设置匹配寄存器
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 MATx:可以是TIM_MAT0/1/2/3 、 Value:16位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetMAT0(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->MAT0.MAT0 = Value;
|
|
}
|
|
|
|
void T16Nx_SetMAT1(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->MAT1.MAT1 = Value;
|
|
}
|
|
void T16Nx_SetMAT2(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->MAT2.MAT2 = Value;
|
|
}
|
|
void T16Nx_SetMAT3(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->MAT3.MAT3 = Value;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_SetMATx
|
|
描 述:设置匹配寄存器
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 MATx:可以是TOP0/1 、 Value:16位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_SetTOP0(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->TOP0.TOP0 = Value;
|
|
}
|
|
|
|
void T16Nx_SetTOP1(T16N_TypeDef *T16Nx, uint16_t Value)
|
|
{
|
|
|
|
T16Nx->TOP1.TOP1 = Value;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_GetMATx
|
|
描 述:读取匹配寄存器值
|
|
输入值:T16Nx:可以是T16N0/1/2/3 MATx:可以是TIM_MAT0/1/2/3
|
|
输出值:无
|
|
返回值:16位数值
|
|
***************************************************************/
|
|
uint16_t T16Nx_GetMAT0(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->MAT0.MAT0) ;
|
|
|
|
}
|
|
|
|
uint16_t T16Nx_GetMAT1(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->MAT1.MAT1) ;
|
|
|
|
}
|
|
uint16_t T16Nx_GetMAT2(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->MAT2.MAT2) ;
|
|
|
|
}
|
|
uint16_t T16Nx_GetMAT3(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->MAT3.MAT3) ;
|
|
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_GetTOPx
|
|
描 述:读取匹配寄存器值
|
|
输入值:T16Nx:可以是T16N0/1/2/3 MATx:可以是TIM_TOP0/1
|
|
输出值:无
|
|
返回值:16位数值
|
|
***************************************************************/
|
|
uint16_t T16Nx_GetTOP0(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->TOP0.TOP0) ;
|
|
|
|
}
|
|
|
|
uint16_t T16Nx_GetTOP1(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->TOP1.TOP1) ;
|
|
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_GetCNTx
|
|
描 述:读取计数寄存器值
|
|
输入值:T16Nx:可以是T16N0/1/2/3、
|
|
返回值:16位数值
|
|
***************************************************************/
|
|
uint16_t T16Nx_GetCNT0(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->CNT0.CNT0) ;
|
|
}
|
|
|
|
uint16_t T16Nx_GetCNT1(T16N_TypeDef *T16Nx)
|
|
{
|
|
return (T16Nx->CNT1.CNT1) ;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_GetFlagStatus
|
|
描 述:读取指定标志位
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 T16Nx_Flag:中断标志位
|
|
输出值:无
|
|
返回值:RESET/SET
|
|
***************************************************************/
|
|
FlagStatus T16Nx_GetFlagStatus(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
|
|
{
|
|
FlagStatus bitstatus = RESET;
|
|
|
|
if ((T16Nx->IF.Word & (uint32_t)T16Nx_Flag) != (uint32_t)RESET)
|
|
{
|
|
bitstatus = SET;
|
|
}
|
|
else
|
|
{
|
|
bitstatus = RESET;
|
|
}
|
|
|
|
return bitstatus;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_ClearITPendingBit
|
|
描 述:清除指定的中断标志位
|
|
输入值:T16Nx:可以是T16N0/1/2/3、 T16Nx_Flag:中断标志位
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_ClearITPendingBit(T16N_TypeDef *T16Nx, T16Nx_TYPE_IT T16Nx_Flag)
|
|
{
|
|
T16Nx->IF.Word = (uint32_t)T16Nx_Flag;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_Enable
|
|
描 述:使能T16Nx
|
|
输入值:T16Nx:可以是T16N0/1/2/3
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_Enable(T16N_TypeDef *T16Nx)
|
|
{
|
|
T16Nx->CON0.EN = 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_Enable
|
|
描 述:禁止T16Nx
|
|
输入值:T16Nx:可以是T16N0/1/2/3
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_Disable(T16N_TypeDef *T16Nx)
|
|
{
|
|
T16Nx->CON0.EN = 0;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_PWMBK_Config
|
|
描 述:配置PWM刹车功能
|
|
输入值:T16Nx:可以是T16N0/1/2/3 ,Type 配置PWM刹车结构体
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_PWMBK_Config(T16N_TypeDef *T16Nx, T16Nx_PWMBK_Type *type)
|
|
{
|
|
|
|
T16Nx->CON2.PWMBKL0 = type->T16Nx_PWMBK_L0; /* PWM通道0刹车输出电平选择 */
|
|
T16Nx->CON2.PWMBKL1 = type->T16Nx_PWMBK_L1; /* PWM通道1刹车输出电平选择 */
|
|
T16Nx->CON2.PWMBKP0 = type->T16Nx_PWMBK_P0; /* PWM通道0刹车信号极性选择 */
|
|
T16Nx->CON2.PWMBKP1 = type->T16Nx_PWMBK_P1; /* PWM通道1刹车信号极性选择 */
|
|
T16Nx->CON2.PWMBKE0 = type->T16Nx_PWMBK_EN0; /* PWM通道0刹车使能 */
|
|
T16Nx->CON2.PWMBKE1 = type->T16Nx_PWMBK_EN1; /* PWM通道1刹车使能 */
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_GetPWMBKF
|
|
描 述:获取PWMBKF刹车标志位
|
|
输入值:T16Nx:可以是T16N0/1/2/3
|
|
输出值:PWMBKF标志位的值。SET:发生刹车事件,RESET:未发生刹车事件
|
|
返回值:无
|
|
***************************************************************/
|
|
FlagStatus T16Nx_GetPWMBKF(T16N_TypeDef *T16Nx)
|
|
{
|
|
if (T16Nx->CON2.PWMBKF == 1)
|
|
return SET;
|
|
else
|
|
return RESET;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_ResetPWMBKF
|
|
描 述: 清除PWMBKF标志,标志清除后PWM端口恢复正常shuc
|
|
输入值:T16Nx:可以是T16N0/1/2/3
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_ResetPWMBKF(T16N_TypeDef *T16Nx)
|
|
{
|
|
T16Nx->CON2.PWMBKF = 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T16Nx_PTR_Config
|
|
描 述: 配置PWM调试模式ADC触发使能
|
|
输入值:T16Nx:可以是T16N0/1/2/3
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T16Nx_PTR_Config(T16N_TypeDef *T16Nx, T16Nx_PWMTRE_type Type, TYPE_FUNCEN NewState)
|
|
{
|
|
if (NewState != Disable)
|
|
{
|
|
T16Nx->PTR.Word |= (uint32_t)Type;
|
|
}
|
|
else
|
|
{
|
|
T16Nx->PTR.Word &= (~(uint32_t)Type);
|
|
}
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_BaseInit
|
|
描 述:T32Nx基本初始化,初始化时钟选择,外部时钟同步,外部时钟计数边缘选择,工作模式。
|
|
输入值:T32Nx:可以是T32N0 、T32Nx_BaseInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_BaseInit(T32N_TypeDef *T32Nx, T32Nx_BaseInitStruType *T32Nx_BaseInitStruct)
|
|
{
|
|
|
|
T32Nx->CON0.CS = T32Nx_BaseInitStruct->T32Nx_ClkS; /* 计数时钟源选择 */
|
|
T32Nx->CON0.SYNC = T32Nx_BaseInitStruct->T32Nx_SYNC; /* 外部时钟同步使能 Disable:不同步外部时钟,为异步计数模式。Enable:通过PCLK对外部时钟同步,为同步计数模式,外部时钟的高低电平平均至少保持2个时钟周期 */
|
|
T32Nx->CON0.EDGE = T32Nx_BaseInitStruct->T32Nx_EDGE; /* 外部时钟计数边沿选择 */
|
|
T32Nx->CON0.MOD = T32Nx_BaseInitStruct->T32Nx_Mode; /* 工作模式选择 */
|
|
T32Nx->PREMAT.PREMAT = T32Nx_BaseInitStruct->T32Nx_PREMAT - 1; /* 预分频比设置,范围:1-256 */
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_CapInit
|
|
描 述:T32Nx捕捉初始化
|
|
输入值:T32Nx:可以是T32N0、 T32Nx_CapInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_CapInit(T32N_TypeDef *T32Nx, T32Nx_CapInitStruType *T32Nx_CapInitStruct)
|
|
{
|
|
|
|
T32Nx->CON1.CAPPE = T32Nx_CapInitStruct->T32Nx_CapRise; /* 配置上升沿输入捕捉是否使能 */
|
|
T32Nx->CON1.CAPNE = T32Nx_CapInitStruct->T32Nx_CapFall; /* 配置下降沿输入捕捉是否使能 */
|
|
T32Nx->CON1.CAPIS0 = T32Nx_CapInitStruct->T32Nx_CapIS0; /* 配置捕捉输入端口T32NxIN0是否使能 */
|
|
T32Nx->CON1.CAPIS1 = T32Nx_CapInitStruct->T32Nx_CapIS1; /* 配置捕捉输入端口T32NxIN1是否使能 */
|
|
T32Nx->CON1.CAPT = T32Nx_CapInitStruct->T32Nx_CapTime; /* 配置捕捉次数 */
|
|
T32Nx->CON1.CAPL0 = T32Nx_CapInitStruct->T32Nx_CAPCAPL0; /* 配置捕捉0重载计数器是否使能 */
|
|
T32Nx->CON1.CAPL1 = T32Nx_CapInitStruct->T32Nx_CAPCAPL1; /* 配置捕捉1重载计数器是否使能 */
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_PMWOutInit
|
|
描 述:T32NxPWM输出初始化
|
|
输入值::T32Nx:可以是T32N0、 T32Nx_PWMInitStruct:初始化配置结构体地址
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_PMWOutInit(T32N_TypeDef *T32Nx, T32Nx_PWMInitStruType *T32Nx_PWMInitStruct)
|
|
{
|
|
T32Nx->CON1.MOE0 = T32Nx_PWMInitStruct->T32Nx_MOE0; /* 配置输出端口0是否使能 */
|
|
T32Nx->CON1.MOE1 = T32Nx_PWMInitStruct->T32Nx_MOE1; /* 配置输出端口1是否使能 */
|
|
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_MATxITConfig
|
|
描 述:T32Nx匹配后的工作模式配置
|
|
输入值:T32Nx:可以是T32N0、 Type:匹配后的工作模式
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_MAT0ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
|
|
{
|
|
T32Nx->CON0.MAT0S = Type;
|
|
}
|
|
void T32Nx_MAT1ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
|
|
{
|
|
T32Nx->CON0.MAT1S = Type;
|
|
}
|
|
void T32Nx_MAT2ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
|
|
{
|
|
T32Nx->CON0.MAT2S = Type;
|
|
}
|
|
void T32Nx_MAT3ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATCON Type)
|
|
{
|
|
T32Nx->CON0.MAT3S = Type;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_MATxOutxConfig
|
|
描 述:T32Nx匹配后的输出端口的模式配置
|
|
输入值:T32Nx:可以是T32N0/1/2/3 、 Type:匹配后端口的工作模式
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_MAT0Out0Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
|
|
{
|
|
T32Nx->CON1.MOM0 = Type;
|
|
}
|
|
void T32Nx_MAT1Out0Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
|
|
{
|
|
T32Nx->CON1.MOM1 = Type;
|
|
}
|
|
void T32Nx_MAT2Out1Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
|
|
{
|
|
T32Nx->CON1.MOM2 = Type;
|
|
}
|
|
void T32Nx_MAT3Out1Config(T32N_TypeDef *T32Nx, T32Nx_TYPE_MATOUT Type)
|
|
{
|
|
T32Nx->CON1.MOM3 = Type;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_ITConfig
|
|
描 述:T32N中断配置
|
|
输入值:T32Nx:可以是T32N0、 Type:中断类型 、 NewState:使能/失能
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_ITConfig(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT Type, TYPE_FUNCEN NewState)
|
|
{
|
|
if (NewState != Disable)
|
|
{
|
|
T32Nx->IE.Word |= (uint32_t)Type;
|
|
}
|
|
else
|
|
{
|
|
T32Nx->IE.Word &= (~(uint32_t)Type);
|
|
}
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
|
|
描 述:T32N用于判断T32N中断使能状态
|
|
输入值:T32Nx:可以是T32N0,T32Nx_Flag:中断类型
|
|
输出值:中断使能返回SET,否则返回RESET
|
|
返回值:无
|
|
***************************************************************/
|
|
FlagStatus T32Nx_GetITStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
|
|
{
|
|
FlagStatus bitstatus = RESET;
|
|
|
|
if (T32Nx->IE.Word & T32Nx_Flag)
|
|
bitstatus = SET;
|
|
|
|
return bitstatus;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_SetCNT0
|
|
描 述:设置CNT0计数值
|
|
输入值:T16Nx:可以是T32N0/1/2/3、 Value:32位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_SetCNT(T32N_TypeDef *T32Nx, uint32_t Value)
|
|
{
|
|
T32Nx->CON0.ASYNC_WREN = Enable;
|
|
T32Nx->CNT.CNT = Value;
|
|
T32Nx->CON0.ASYNC_WREN = Disable;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_SetPREMAT
|
|
描 述:设置预分频比
|
|
输入值:T32Nx:可以是T32N0、 Value:1-256
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_SetPREMAT(T32N_TypeDef *T32Nx, uint8_t Value)
|
|
{
|
|
T32Nx->PREMAT.PREMAT = Value - 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_SetPRECNT
|
|
描 述:设置预分频计数器
|
|
输入值:T32Nx:可以是T32N0、 Value:1-256
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_SetPRECNT(T32N_TypeDef *T32Nx, uint8_t Value)
|
|
{
|
|
T32Nx->CON0.ASYNC_WREN = Enable;
|
|
T32Nx->PRECNT.PRECNT = Value;
|
|
T32Nx->CON0.ASYNC_WREN = Disable;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_SetMATx
|
|
描 述:设置匹配寄存器
|
|
输入值:T16Nx:可以是T32N0、 MATx:可以是TIM_MAT0/1/2/3 、 Value:32位数值
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_SetMAT0(T32N_TypeDef *T32Nx, uint32_t Value)
|
|
{
|
|
|
|
T32Nx->MAT0.MAT0 = Value;
|
|
}
|
|
|
|
void T32Nx_SetMAT1(T32N_TypeDef *T32Nx, uint32_t Value)
|
|
{
|
|
|
|
T32Nx->MAT1.MAT1 = Value;
|
|
}
|
|
void T32Nx_SetMAT2(T32N_TypeDef *T32Nx, uint32_t Value)
|
|
{
|
|
|
|
T32Nx->MAT2.MAT2 = Value;
|
|
}
|
|
void T32Nx_SetMAT3(T32N_TypeDef *T32Nx, uint32_t Value)
|
|
{
|
|
|
|
T32Nx->MAT3.MAT3 = Value;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_GetMATx
|
|
描 述:读取匹配寄存器值
|
|
输入值:T32Nx:可以是T32N0 MATx:可以是T32Nx_MAT0/1/2/3
|
|
输出值:无
|
|
返回值:32位数值
|
|
***************************************************************/
|
|
uint32_t T32Nx_GetMAT0(T32N_TypeDef *T32Nx)
|
|
{
|
|
return (T32Nx->MAT0.MAT0) ;
|
|
|
|
}
|
|
|
|
uint32_t T32Nx_GetMAT1(T32N_TypeDef *T32Nx)
|
|
{
|
|
return (T32Nx->MAT1.MAT1) ;
|
|
|
|
}
|
|
uint32_t T32Nx_GetMAT2(T32N_TypeDef *T32Nx)
|
|
{
|
|
return (T32Nx->MAT2.MAT2) ;
|
|
|
|
}
|
|
uint32_t T32Nx_GetMAT3(T32N_TypeDef *T32Nx)
|
|
{
|
|
return (T32Nx->MAT3.MAT3) ;
|
|
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_GetCNT
|
|
描 述:读取计数寄存器值
|
|
输入值:T32Nx:可以是T32N0/1/2/3、
|
|
返回值:32位数值
|
|
***************************************************************/
|
|
uint32_t T32Nx_GetCNT(T32N_TypeDef *T32Nx)
|
|
{
|
|
return (T32Nx->CNT.CNT) ;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_GetFlagStatus
|
|
描 述:读取指定标志位
|
|
输入值:T32Nx:可以是T32N0、 T32Nx_Flag:中断标志位
|
|
输出值:无
|
|
返回值:RESET/SET
|
|
***************************************************************/
|
|
FlagStatus T32Nx_GetFlagStatus(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT T32Nx_Flag)
|
|
{
|
|
FlagStatus bitstatus = RESET;
|
|
|
|
if ((T32Nx->IF.Word & (uint32_t)T32Nx_Flag) != (uint32_t)RESET)
|
|
{
|
|
bitstatus = SET;
|
|
}
|
|
else
|
|
{
|
|
bitstatus = RESET;
|
|
}
|
|
|
|
return bitstatus;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_ClearITPendingBit
|
|
描 述:清除指定的中断标志位
|
|
输入值:T32Nx:可以是T16N0、 TIM_Flag:中断标志位
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_ClearITPendingBit(T32N_TypeDef *T32Nx, T32Nx_TYPE_IT TIM_Flag)
|
|
{
|
|
T32Nx->IF.Word = (uint32_t)TIM_Flag;
|
|
}
|
|
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_Enable
|
|
描 述:使能T32Nx
|
|
输入值:T32Nx:可以是T32N0
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_Enable(T32N_TypeDef *T32Nx)
|
|
{
|
|
T32Nx->CON0.EN = 1;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:T32Nx_Enable
|
|
描 述:禁止T32Nx
|
|
输入值:T32Nx:可以是T32N0
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void T32Nx_Disable(T32N_TypeDef *T32Nx)
|
|
{
|
|
T32Nx->CON0.EN = 0;
|
|
}
|
|
|
|
/***************************************************************
|
|
函数名:BUZC_Frequence
|
|
描 述:BUZ使能后,配置BUZ信号频率
|
|
输入值:Frequence : BUZ信号频率,sys_buz :是否使能
|
|
输出值:无
|
|
返回值:无
|
|
***************************************************************/
|
|
void BUZC_Frequence(uint32_t Frequence, TYPE_FUNCEN sys_buz)
|
|
{
|
|
float tmp;
|
|
|
|
if (sys_buz == Disable) /* 如果BUZC配置为禁止,则直接禁止BUZC,并返回 */
|
|
{
|
|
GPIO->BUZC.BUZEN = 0;
|
|
return;
|
|
}
|
|
|
|
tmp = SystemCoreClock / (Frequence * 2) - 1;
|
|
GPIO->BUZC.BUZ_LOAD = (uint32_t)tmp;
|
|
GPIO->BUZC.BUZEN = 1;
|
|
}
|