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

📄 timer.c

📁 在AT91sam7SE上
💻 C
字号:
//Main.c

#include	"Preprocess.h"
#include	"Timer.h"



CALL_BACK	g_pTcTaskHandler;



VOID	TimerInit (CALL_BACK pHandler){
    //init the timer interrupt counter

	g_pTcTaskHandler = pHandler;
    AT91F_TC0_CfgPMC() ;

    //* Disable the clock and the interrupts
	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS ;
	AT91C_BASE_TC0->TC_IDR = 0xFFFFFFFF ;

    TimerClrIf();
    //* Set the uiMode of the Timer Counter
	AT91C_BASE_TC0->TC_CMR = TC_CLKS | AT91C_TC_CPCTRG ;

    //* Open Timer 0 interrupt
	AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC,
		AT91C_ID_TC0,
		TIMER_INTERRUPT_LEVEL,
		//AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
		AT91C_AIC_SRCTYPE_INT_POSITIVE_EDGE,
		TimerIrqHandler
	);
	TimerSetFreq(TIMER_INIT_FREQ);
	AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;  //  IRQ enable CPC
}//VOID	TimerInit (VOID (*pHandler) (VOID) ){





VOID	TimerSetFreq(UINT uiFreq){
	AT91C_BASE_TC0->TC_RC = (UINT)(TCCK / uiFreq);
}//VOID	TimerSetFreq(UINT uiFreq){





VOID	TimerIrqHandler(VOID){
	TimerClrIf();
	if(NULL != g_pTcTaskHandler){
		g_pTcTaskHandler();
	}
}// VOID TimerIrqHandler(VOID)





VOID	TimerPlay(VOID){
	TimerClrIf();

	AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN ;
    AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
}//VOID	TimerPlay(VOID){




VOID	TimerStop(VOID){
	AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS ;
	AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
}//VOID	TimerStop(VOID){




VOID	TimerClrIf(VOID){
    UINT uiDummy;
    uiDummy = AT91C_BASE_TC0->TC_SR;
    uiDummy = uiDummy;
}//VOID	TimerClrIf(VOID){


⌨️ 快捷键说明

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