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

📄 time.c

📁 周立功2103开发板CD资料
💻 C
📖 第 1 页 / 共 2 页
字号:
		}		
	}
	T3TCR = 0x03;						//在设置之前,先将定时器复位
	T3IR = T3IR|(1<<MATn);				//清除中断标志位
	T3PR = PR_data;						//设置预分频器
	*(uint32 *)((&T3MR0)+MATn) = time;	//设置匹配寄存器
	T3MCR = T3MCR&(~(7<<(MATn*3)))|(1<<(MATn*3+1+T_MODE))|(Int_En<<(MATn*3));
	//          相关位清零           定时器匹配控制位          中断位
	T3EMR = T3EMR&(~(3<<(MATn*2+4)))|(EXT_MODE<<(MATn*2+4));
	T3TCR = 0x01;						//重新启动定时器
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T0COUNT_Init(uint8 MODE,uint8 CAPn)
** 功能描述: 计数器0初始化
** 输 入: 	MODE	计数器模式选择
**					0:CAPn的上升沿计数
**					1:CAPn的下降沿计数
**					2:CAPn上升沿和下降沿都计数
**			CAPn	计数器输入端0~2
** 输 出: 0 :初始化失败
**         1 :初始化成功
** 说明:程序中已经将相关引脚进行了初始化
********************************************************************************************************/
uint8	T0COUNT_Init(uint8 MODE,uint8 CAPn)
{
	if(MODE>2)	return(0);	//参数不合理,直接返回
	if(CAPn>3)	return(0);
	switch(CAPn)		//设置相关引脚
	{
		case	0:		//CAP0.0--P0.2
			PINSEL0 = PINSEL0 & (~(3<<4)) | (2<<4);
			break;
		case	1:		//CAP0.1--P0.4
			PINSEL0 = PINSEL0 & (~(3<<8)) | (2<<8);
			break;
		case	2:		//CAP0.2--P0.6
			PINSEL0 = PINSEL0 & (~(3<<12)) | (2<<12);
			break;
		default:
			break;
	}
	T0CTCR = (CAPn<<2)+MODE+1;
	T0TCR = 0x03;
	T0TCR = 0x01;
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T1COUNT_Init(uint8 MODE,uint8 CAPn)
** 功能描述: 计数器1初始化
** 输 入: 	MODE	计数器模式选择
**					0:CAPn的上升沿计数
**					1:CAPn的下降沿计数
**					2:CAPn上升沿和下降沿都计数
**			CAPn	计数器输入端0~3
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:程序中已经将相关引脚进行了初始化
********************************************************************************************************/
uint8	T1COUNT_Init(uint8 MODE,uint8 CAPn)
{
	if(MODE>2)	return(0);	//参数不合理,直接返回
	if(CAPn>3)	return(0);
	switch(CAPn)		//设置相关引脚
	{
		case	0:		//CAP1.0--P0.10
			PINSEL0 = PINSEL0 & (~(3<<20)) | (2<<20);
			break;
		case	1:		//CAP1.1--P0.11
			PINSEL0 = PINSEL0 & (~(3<<22)) | (2<<22);
			break;
		case	2:		//CAP1.2--P0.17
			PINSEL1 = PINSEL1 & (~(3<<2)) | (2<<2);
			break;
		case	3:		//CAP1.2--P0.18
			PINSEL1 = PINSEL1 & (~(3<<4)) | (2<<4);
			break;
		default:
			break;
	}
	T1CTCR = (CAPn<<2)+MODE+1;
	T1TCR = 0x03;
	T1TCR = 0x01;
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T2COUNT_Init(uint8 MODE,uint8 CAPn)
** 功能描述: 计数器2初始化
** 输 入: 	MODE	计数器模式选择
**					0:CAPn的上升沿计数
**					1:CAPn的下降沿计数
**					2:CAPn上升沿和下降沿都计数
**			CAPn	计数器输入端0~2
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:程序中已经将相关引脚进行了初始化
********************************************************************************************************/
uint8	T2COUNT_Init(uint8 MODE,uint8 CAPn)
{
	if(MODE>2)	return(0);	//参数不合理,直接返回
	if(CAPn>2)	return(0);
	switch(CAPn)		//设置相关引脚
	{
		case	0:		//CAP2.0--P0.27
			PINSEL1 = PINSEL1 & (~(3<<22)) | (2<<22);
			break;
		case	1:		//CAP2.1--P0.28
			PINSEL1 = PINSEL1 & (~(3<<24)) | (2<<24);
			break;
		case	2:		//CAP2.2--P0.29
			PINSEL1 = PINSEL1 & (~(3<<26)) | (2<<26);
			break;
		default:
			break;
	}
	T2CTCR = (CAPn<<2)+MODE+1;
	T2TCR = 0x03;
	T2TCR = 0x01;
	return(1);
}
/*********************************************************************************************************
** 函数名称: void	Timer0_Init(void)
** 功能描述: 定时器0初始化
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void	Timer0_Init(void)
{
	T0CTCR = 0x00;	//停止定时器
	T0TCR = 0x03;	//复位定时器
	T0TCR = 0x01;	//启动定时器
}
/*********************************************************************************************************
** 函数名称: void	Timer1_Init(void)
** 功能描述: 定时器1初始化
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void	Timer1_Init(void)
{
	T1CTCR = 0x00;	//停止定时器
	T1TCR = 0x03;	//复位定时器
	T1TCR = 0x01;	//启动定时器
}
/*********************************************************************************************************
** 函数名称: void	Timer2_Init(void)
** 功能描述: 定时器2初始化
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void	Timer2_Init(void)
{
	T2CTCR = 0x00;	//停止定时器
	T2TCR = 0x03;	//复位定时器
	T2TCR = 0x01;	//启动定时器
}
/*********************************************************************************************************
** 函数名称: void	Timer3_Init(void)
** 功能描述: 定时器3初始化
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void	Timer3_Init(void)
{
	T3CTCR = 0x00;	//停止定时器
	T3TCR = 0x03;	//复位定时器
	T3TCR = 0x01;	//启动定时器
}
/*********************************************************************************************************
** 函数名称: uint8	T0PWM_Init(uint8 PWMn,uint32 MATn,uint32 PR_data,uint32 PWM_Cyc)
** 功能描述: 定时器0的PWM功能初始化。
** 输 入: 	PWMn		PWM模式使能号
**						0	PWM模式使能于MAT0.0
**						1	PWM模式使能于MAT0.1
**						2	PWM模式使能于MAT0.2
**			MATn_Value	PWM匹配寄存器,该数值直接写入到MAT0.n中
**			PR_data		预分频寄存器的值
**			PWM_Cyc		PWM的周期控制值,该数值会直接写入到MAT0.3中
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:函数中包含了对相应引脚的初始化。
********************************************************************************************************/
uint8	T0PWM_Init(uint32 PWMn,uint32 MATn_Value,uint32 PR_data,uint32 PWM_Cyc)
{
	if(PWMn>3)	return(0);	//参数不合理,直接返回
	switch(PWMn)			//设置相关引脚
	{
		case	0:			//设置MAT0.0--P0.3
			PINSEL0 = PINSEL0 & (~(3<<6)) | (2<<6);	
			break;
		case	1:			//设置MAT0.1--P0.5
			PINSEL0 = PINSEL0 & (~(3<<10)) | (2<<10);	
			break;				
		case	2:			//设置MAT0.2--P0.16
			PINSEL1 = PINSEL1 & (~0x03) | 0x02;	
			break;
		default:
			break;
	}
	T0TCR = 0x03;			//在设置之前,先将定时器复位
	T0IR = T0IR|(1<<PWMn);	//清除中断标志位
	T0PR = PR_data;			//设置预分频器
	PWM0CON = PWM0CON | (1<<PWMn);				//使能相应PWM模式位
	*(uint32 *)((&T0MR0)+PWMn) = MATn_Value;	//设置匹配寄存器
	T0MR3 = PWM_Cyc;
	T0MCR = (1<<10);		//MR3匹配时,定时器复位
	T0TCR = 0x01;			//重新启动定时器
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T1PWM_Init(uint8 PWMn,uint32 MATn,uint32 PR_data,uint32 PWM_Cyc)
** 功能描述: 定时器1的PWM功能初始化。
** 输 入: 	PWMn		PWM模式使能号
**						0	PWM模式使能于MAT1.0
**						1	PWM模式使能于MAT1.1
**						2	PWM模式使能于MAT1.2
**						3	PWM模式使能于MAT1.3
**			MATn_Value	PWM匹配寄存器,该数值直接写入到MAT1.n中
**			PR_data		预分频寄存器的值
**			PWM_Cyc		PWM的周期控制值,该数值会直接写入到MAT1.3中
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:函数中包含了对相应引脚的初始化。
********************************************************************************************************/
uint8	T1PWM_Init(uint8 PWMn,uint32 MATn_Value,uint32 PR_data,uint32 PWM_Cyc)
{
	if(PWMn>3)	return(0);	//参数不合理,直接返回
	switch(PWMn)			//设置相关引脚
	{
		case	0:			//设置MAT1.0--P0.12
			PINSEL0 = PINSEL0 & (~(3<<24)) | (2<<24);
			break;
		case	1:			//设置MAT1.1--P0.13
			PINSEL0 = PINSEL0 & (~(3<<26)) | (2<<26);
			break;				
		case	2:			//设置MAT1.2--P0.19
			PINSEL1 = PINSEL1 & (~(3<<6)) | (2<<6);
			break;
		case	3:			//设置MAT1.3--P0.20
			PINSEL1 = PINSEL1 & (~(3<<8)) | (2<<8);
			break;
		default:
			break;
	}
	T1TCR = 0x03;			//在设置之前,先将定时器复位
	T1IR = T1IR|(1<<PWMn);	//清除中断标志位
	T1PR = PR_data;			//设置预分频器
	PWM1CON = PWM1CON | (1<<PWMn);				//使能相应PWM模式位
	*(uint32 *)((&T1MR0)+PWMn) = MATn_Value;	//设置匹配寄存器
	T1MR3 = PWM_Cyc;
	T1MCR = (1<<10);		//MR3匹配时,定时器复位
	T1TCR = 0x01;			//重新启动定时器
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T2PWM_Init(uint8 PWMn,uint16 MATn,uint16 PR_data,uint32 PWM_Cyc)
** 功能描述: 定时器2的PWM功能初始化。
** 输 入: 	PWMn		PWM模式使能号
**						0	PWM模式使能于MAT2.0
**						1	PWM模式使能于MAT2.1
**						2	PWM模式使能于MAT2.2
**			MATn_Value	PWM匹配寄存器,该数值直接写入到MAT2.n中
**			PR_data		预分频寄存器的值
**			PWM_Cyc		PWM的周期控制值,该数值会直接写入到MAT2.3中
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:函数中包含了对相应引脚的初始化。
********************************************************************************************************/
uint8	T2PWM_Init(uint8 PWMn,uint16 MATn_Value,uint16 PR_data,uint32 PWM_Cyc)
{
	if(PWMn>3)	return(0);		//参数不合理,直接返回
	switch(PWMn)					
	{
		case	0:				//设置MAT2.0--P0.7
			PINSEL0 = PINSEL0 & (~(3<<14)) | (2<<14);	
			break;
		case	1:				//设置MAT2.1--P0.8
			PINSEL0 = PINSEL0 & (~(3<<16)) | (2<<16);	
			break;		
		case	2:				//设置MAT2.2--P0.9
			PINSEL0 = PINSEL0 & (~(3<<18)) | (2<<18);	
			break;
		default:
			break;
	}		
	T2TCR = 0x03;			//在设置之前,先将定时器复位
	T2IR = T2IR|(1<<PWMn);	//清除中断标志位
	T2PR = PR_data;			//设置预分频器
	PWM2CON = PWM2CON | (1<<PWMn);				//使能相应PWM模式位
	*(uint32 *)((&T2MR0)+PWMn) = MATn_Value;	//设置匹配寄存器
	T2MR3 = PWM_Cyc;
	T2MCR = (1<<10);		//MR3匹配时,定时器复位
	T2TCR = 0x01;			//重新启动定时器
	return(1);
}
/*********************************************************************************************************
** 函数名称: uint8	T3PWM_Init(uint8 PWMn,uint16 MATn_Value,uint16 PR_data,uint32 PWM_Cyc)
** 功能描述: 定时器3的PWM功能初始化。
** 输 入: 	PWMn		PWM模式使能号
**						0	PWM模式使能于MAT3.0
**						1	PWM模式使能于MAT3.1
**						2	PWM模式使能于MAT3.2
**						3	PWM模式使能于MAT3.3
**			MATn_Value	PWM匹配寄存器,该数值直接写入到MAT3.n中
**			PR_data		预分频寄存器的值
**			PWM_Cyc		PWM的周期控制值,该数值会直接写入到MAT3.3中
** 输 出: 0	初始化失败
**         1	初始化成功
** 说明:函数中包含了对相应引脚的初始化。
********************************************************************************************************/
uint8	T3PWM_Init(uint8 PWMn,uint16 MATn_Value,uint16 PR_data,uint32 PWM_Cyc)
{
	if(PWMn>3)	return(0);		//参数不合理,直接返回
	switch(PWMn)					
	{
		case	0:				//设置MAT3.0--P0.21
			PINSEL1 = PINSEL1 & (~(3<<10)) | (2<<10);	
			break;
		case	1:				//设置MAT3.1--P0.0
			PINSEL0 = PINSEL0 & (~0x03) | 0x02;	
			break;				
		case	2:				//设置MAT3.2--P0.1
			PINSEL0 = PINSEL0 & (~(3<<2)) | (2<<2);	
			break;
		case	3:				//设置MAT3.3--P0.30
			PINSEL1 = PINSEL1 & (~(3<<28)) | (2<<28);	
			break;
		default:
			break;
	}		
	T3TCR = 0x03;			//在设置之前,先将定时器复位
	T3IR = T3IR|(1<<PWMn);	//清除中断标志位
	T3PR = PR_data;			//设置预分频器
	PWM3CON = PWM3CON | (1<<PWMn);				//使能相应PWM模式位
	*(uint32 *)((&T3MR0)+PWMn) = MATn_Value;	//设置匹配寄存器
	T3MR3 = PWM_Cyc;
	T3MCR = (1<<10);		//MR3匹配时,定时器复位
	T3TCR = 0x01;			//重新启动定时器
	return(1);
}

⌨️ 快捷键说明

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