timer.c

来自「altera epxa1的例子程序」· C语言 代码 · 共 40 行

C
40
字号
/*
*	Routine for delaying a specified amount of time (n seconds)
*
*	Author: ORC
*
* 	Copyright (c) Altera Corporation 2002.
* 	All rights reserved.
*/

#include <stdio.h>
#include "timer.h"
#include "timer00.h"
#include "stripe.h"

// Initialize stripe timer
void init_timer(void)
{
	// Set Timer0 Pre-scaler ratio
	*TIMER0_PRESCALE(EXC_TIMER00_BASE) = 0;
	
	// Set Timer0 limit to maximum value	 	
	*TIMER0_LIMIT(EXC_TIMER00_BASE) = 0xFFFFFFFF;
	
	// Set Timer0 to One-shot Delay Mode
	*TIMER0_CR(EXC_TIMER00_BASE) = TIMER0_CR_MODE_ONE;
}

// Delay for specified amount of time (in seconds)
void delay(unsigned int time)
{
	// Start Timer 0
	*TIMER0_CR(EXC_TIMER00_BASE) |= TIMER0_CR_S_MSK;
	
	// Poll Timer 0 when counter has reach specified time
	while (*TIMER0_READ(EXC_TIMER00_BASE) < (time * EXC_AHB2_CLK_FREQUENCY) );

	// Stop Timer 0
	*TIMER0_CR(EXC_TIMER00_BASE) &= ~TIMER0_CR_S_MSK;
}

⌨️ 快捷键说明

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