⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tim.h

📁 这是一个定时器timer的驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
;** 参    数: timer:	选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**         : prescaler:预分频系数(0~255) 
;**          
;** 返 回 值: None
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void TIM_PrescalerConfig (TIM_TYPES_T timer, UWORD8 prescaler)
{
	TIMx_CR2(timer) = ( TIMx_CR2(timer) & 0xFF00 ) | prescaler;
}

/*********************************************************************************************************
;** 函数名称: TIM_PrescalerValueObtain
;** 功能描述: 获得指定定时器预分频系数值 
;** 
;** 参    数: timer:	选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**          
;** 返 回 值: 预分频系数(0~255)
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline UWORD8 TIM_PrescalerValueObtain(TIM_TYPES_T timer)
{
	return TIMx_CR2(timer) & 0x00FF;
}
/*********************************************************************************************************
;** 函数名称: TIM_ClockLevelConfig
;** 功能描述: 配置指定定时计数器时钟边沿触发类型 
;** 
;** 参    数: timer:选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**         : edge :计数器时钟边沿触发类型(TIM_RISING,TIM_FALLING) 
;**          
;** 返 回 值: None
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void TIM_ClockLevelConfig(TIM_TYPES_T timer, TIM_CLOCK_EDGES_T edge)
{
	if(edge == TIM_RISING) 
		TIMx_CR1(timer) |= TIM_EXEDG_MASK; 
	else 
		TIMx_CR1(timer) &= ~TIM_EXEDG_MASK;
}
/*********************************************************************************************************
;** 函数名称: TIM_ClockLevelValueObtain
;** 功能描述: 获得指定定时器时钟边沿触发类型
;** 
;** 参    数: timer:选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**          
;** 返 回 值: 时钟边沿触发类型(TIM_RISING,TIM_FALLING)
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline TIM_CLOCK_EDGES_T TIM_ClockLevelValueObtain(TIM_TYPES_T timer)
{
	return ( TIMx_CR1(timer) & TIM_EXEDG_MASK ) == 0 ? TIM_FALLING : TIM_RISING;
}

/*********************************************************************************************************
;** 函数名称: TIM_ICAPValueObtain
;** 功能描述: 获得指定定时器指定通道输入捕捉寄存器值
;** 
;** 参    数: timer:  选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**           channel:通道类型(TIM_CHANNEL_A, TIM_CHANNEL_B)
;**          
;** 返 回 值: 指定通道输入捕捉寄存器值
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline UWORD16 TIM_ICAPValueObtain (TIM_TYPES_T timer, TIM_CHANNELS_T channel)
{
	return channel == TIM_CHANNEL_A ? TIMx_ICAR(timer) : TIMx_ICBR(timer);
}
/*********************************************************************************************************
;** 函数名称: TIM_ITConfig
;** 功能描述: 配置指定定时计数器中断类型
;** 
;** 参    数: timer:	选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**         : new_state:状态控制(ENABLE, DISABLE)
;**         : new_it:   中断类型(TIM_ICFA,TIM_OCFA,TIM_TOF,TIM_ICFB,TIM_OCFB)
;**          
;** 返 回 值: None
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void TIM_ITConfig(TIM_TYPES_T timer,TIM_FLAGS_T new_it, CONFIG_STATUS_T new_state)
{
	if(new_state == ENABLE) 
		TIMx_CR2(timer) |= new_it; 
	else 
		TIMx_CR2(timer) &= ~new_it;
}
/*********************************************************************************************************
;** 函数名称: TIM_StatusObtain
;** 功能描述: 获得指定定时器指定中断类型状态标志值
;** 
;** 参    数: timer:  选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**           flag:   中断标志类型
;**          
;** 返 回 值: 指定中断类型状态标志值
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline FLAG_STATUS_T TIM_StatusObtain(TIM_TYPES_T timer, TIM_FLAGS_T flag )
{
	return (TIMx_SR(timer) & flag) == 0 ? RESET : SET;
}
/*********************************************************************************************************
;** 函数名称: TIM_StatusClear
;** 功能描述: 清除指定定时计数器中断状态标志位
;** 
;** 参    数: timer:选择定时器类型(TIMER0, TIMER1, TIMER2, TIMER3)
;**         : flag: 指定中断类型状态位
;**          
;** 返 回 值: None
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月11日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void TIM_StatusClear(TIM_TYPES_T timer, TIM_FLAGS_T flag )
{
	TIMx_SR(timer) &= ~flag;
}

/*********************************************************************************************************
;** 函数名称: TIM_OCMPTimerValueConfig
;** 功能描述: 对指定的定时器设置定时时间值(即设置prescaler的值与比较输出寄存器存储器的值)
;** 
;** 参    数: timer: 定时器索引,channel: 定时器比较输出通道,time:需要的时间计数us为单位
;**
;** 返 回 值: 无
;**         
;** 作   者: 罗辉联
;** 日   期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void TIM_OCMPTimerValueConfig (TIM_TYPES_T timer,TIM_CHANNELS_T channel,UWORD32 time);

#endif 	//EN_ARM_TIM > 0


    #ifdef __cplusplus
    }
    #endif


#endif // __TIM_H

/********************************************* end of file **********************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -