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

📄 timer.c

📁 LPC213x系列启动代码,支持ADS1.2编译器,已成功运行
💻 C
字号:
#include "config.h"

#define PWM_WIDTH_FREQ		1000	
#define PWM_MAX_VAL				1024

volatile UDWORD udTickCount;
UDWORD udRunLampTick;
UDWORD udRunLampFreq;

UDWORD udPwm0Count;
UDWORD udPwm0Freq;

UDWORD udPwm1Count;
UDWORD udPwm1Freq;

UDWORD udADS1100Tick;

// 1ms pwm
void __irq IRQ_Timer0(void)
{	
	// 控制脉冲宽度
		
	T0IR = 0x01;
	VICVectAddr = 0x00;
}//void __irq IRQ_Timer0(void)

// 1ms
void __irq IRQ_Timer1(void)
{	
	udTickCount++;
	
	T1IR = 0x01;
	VICVectAddr = 0x00;
}//void __irq IRQ_Timer1(void)

// pwm
void __irq IRQ_PWM(void)
{	
	PWMIR = 0x01;
	VICVectAddr = 0x00;
}//void __irq IRQ_PWM(void)

void Timer0_Init(UDWORD freq)
{	
}//void Timer0_Init(void)

void Timer1_Init(UDWORD freq)
{
	T1PR = 3;	
   	T1MR0 = (UDWORD)(Fcclk / 4 / freq);
   	T1MCR = 3;
   	T1TCR = 3;
   	T1TCR = 1;
   	
   	VICIntEnable = (1 << INT_TIMER1);
}//void Timer1_Init(UDWORD freq)

void Pwm2_Init(UDWORD pulwidth)
{	
	PWMTC = 0;
	PWMPC = 0;
	PWMPR = 0;
	PWMMR0 = (UDWORD)(Fcclk / PWM_WIDTH_FREQ);
	PWMMR2 = (UDWORD)(pulwidth * PWMMR0 / PWM_MAX_VAL);
	PWMMCR = 3;
	PWMPCR = 0x400;
	PWMLER = 0x05;
	PWMTCR = 0xa;
	PWMTCR = 0xa;
	PWMTCR = 0x9;
		
	VICIntEnable = 0x100;
}//void Pwm2_Init(void)

void Pwm2_Stop(void)
{
	PWMTC = 0;
	PWMPC = 0;
	PWMPR = 0;
	PWMMR0 = (UDWORD)(Fcclk / PWM_WIDTH_FREQ);
	PWMMR2 = 0;
	PWMMCR = 3;
	PWMPCR = 0x400;
	PWMLER = 0x05;
	PWMTCR = 0xa;
	PWMTCR = 0xa;
	PWMTCR = 0x9;
		
	VICIntEnable = 0x100;
}//void Pwm2_Stop(void)

void TimeProg(void)
{
	// 闪烁运行指示灯,频率由变量udRunLampFreq控制
	if(udTickCount > (udRunLampTick + udRunLampFreq))
	{
		Blink_RunLamp();
		
		udRunLampTick = udTickCount;
	}
	
	// 通讯口0超时判断
	if(Uart0_udTimeOut > 0)
	{
		if(udTickCount > Uart0_udTimeOut)
		{
			if(Uart0_ucReceBuff[0] != Uart_ucAddr)	// 为了公司自定协议与RTU984协议兼容
			{
				Uart0_ucReceLen = 0;
				Uart0_udTimeOut = 0;
			}
		}
	}
	
	// 通讯口1超时判断
	if(Uart1_udTimeOut > 0)
	{
		if(udTickCount > Uart1_udTimeOut)
		{
			if(Uart1_ucReceBuff[0] != Uart_ucAddr)	// 为了公司自定协议与RTU984协议兼容
			{
				Uart1_ucReceLen = 0;
				Uart1_udTimeOut = 0;
			}
		}
	}		
}//void TimeProg(void)

// 延时x毫秒
void DelayMS(UDWORD x)
{
	UDWORD tick;
	
	tick = udTickCount;
	while(udTickCount < (tick + x))
	{
		WatchDog();
		TimeProg();
		ReadDin();
		WriteDout();
		Uart0_CheckData();
		Uart1_CheckData();
	}
}//void DelayMS(UDWORD x)

⌨️ 快捷键说明

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