📄 timer.c
字号:
/*************************************************************************//* *//* FILE NAME VERSION *//* *//* timer.c KS32C5000, KS32C50100 : version 1.0 *//* *//* COMPONENT *//* *//* *//* DESCRIPTION *//* *//* *//* AUTHOR *//* *//* Young Sun KIM, Samsung Electronics, Inc. *//* *//* DATA STRUCTURES *//* *//* *//* FUNCTIONS *//* *//* Timer basic library functions: *//* *//* TimerInit Initialize the timer with 1 sec unit *//* tmReset Clear timer counter and interrupt pending, *//* Restart timer *//* tmCntr Change the timer mode,periode,interrupt *//* TimeStopCheck Timer start & stop check in polling method *//* PrtSysTime System time will be displayed *//* GetSysTime get system time display string *//* tm0isr timer0 interrupt service routine *//* tm1isr timer1 interrupt service routine *//* *//* DEPENDENCIES *//* *//* *//* HISTORY *//* *//* NAME DATE REMARKS *//* *//* in4maker 09-15-1998 Created initial version 1.0 *//* *//*************************************************************************//* *//* Modified by *//* Dmitriy Cherkashin *//* dch@ucrouter.ru *//* 2002 *//* */#include "ks32c50.h"#include "evm50100.h"// uncomment to enable TOUTn pins //#define TIMER_TOUTvolatile unsigned int clk_tick0 = 0; /* time tick for timer 0 */volatile unsigned int clk_tick1 = 0; /* time tick for timer 0 */volatile unsigned int WatchDogStatus = 0; /* Timer0,1 can be used for system real time clock */TIME tm0 = { 0 , /* millisec */ 0 , /* sec */ 0 , /* min */ 0 , /* hour */ 0 , /* month day */ 0 , /* month */ 0 /* year */ };TIME tm1 = { 0 , /* millisec */ 0 , /* sec */ 0 , /* min */ 0 , /* hour */ 0 , /* month day */ 0 , /* month */ 0 /* year */ };void TimerStart(int t){ if(t == 1) { TMOD |= TMOD1_EN; } else if(t == 0) { TMOD |= TMOD0_EN; }} void TimerStop(int t){ if(t == 1) { TMOD &= ~TMOD1_EN; } else if(t == 0) { TMOD &= ~TMOD0_EN; }} /*************************************************************************//* *//* NAME : tmConfig() *//* *//* FUNCTIONS : Monitoring the timer related system registers. *//* and start & stop timer control. *//* *//* EXAMPLES : *//* *//* VARIABLES USED *//* *//* *//* HISTORY *//* *//* NAME DATE REMARKS *//* *//* in4maker 06-07-1999 Created initial version 1.0 *//* *//*************************************************************************/static void TimerConfigView(void){//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Print("\nTIMER 0 Status");// TMOD0_EN // Timer 0 enable ////////////////////////////////////////////////// Print("\nTimer 0 enable..............%s", (TMOD & TMOD0_EN) ? "1(enabled." : "0(disabled)" );// TMOD0_TOGGLE // interval mode /////////////////////////////////////////////// Print("\nTimer 0 Toggle mode.........%s", (TMOD & TMOD0_TOGGLE) ? "1(toggle mode)" : "0(interval mode)" );// [2] Timer 0 initial TOUT0 value (TCLR0) ///////////////////////////////////// Print("\nTimer 0 initial TOUT0 value.%s", (TMOD & TMOD0_TOUT) ? "1" : "0" ); Print("\nTDATA0......................0x%08x",TDATA0); Print("\nTCNT0.......................0x%08x",TCNT0 );// Print("\nTimer0 TOUT0 output.(P16)...%s" , ((IOPCON & IOPCON_TOEN0_EN) && // T0UT0 enabled (IOPMOD & 0x10000)) ? // P16 output "enabled" : "disabled" ); Print("\nTimer0 INT mode.............%s" , (INTMODE & TIMER0_INT)? "FIQ" : // FIQ mode "IRQ" ); Print("\nTimer0 interrupt enabled....%s" , (INTMASK & TIMER0_INT)? "(disabled)" : "(enabled)" );//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Print("\nTIMER 1 STATUS");// TMOD1_EN // Timer 1 enable ////////////////////////////////////////////////// Print("\nTimer 1 enable..............%s", (TMOD & TMOD1_EN) ? "1(enabled." : "0(disabled)" ); // Timer1 Toggle/Interval mode ///////////////////////////////////////////////// Print("\nTimer 1 Toggle mode.........%s", (TMOD & TMOD1_TOGGLE) ? "1(toggle mode)" : "0(interval mode)" );// Timer 1 Initial TOUT1 value ///////////////////////////////////////////////// Print("\nTimer 1 Initial TOUT1 value.%s", (TMOD & TMOD1_TOUT) ? "1" : "0" );// Print("\nTDATA1......................0x%08x",TDATA1); Print("\nTCNT1.......................0x%08x",TCNT1);// Print("\nTimer1 TOUT1 output.(P17)...%s", ((IOPCON & IOPCON_TOEN1_EN) && // TOUT1 enabled (IOPMOD & 0x20000)) ? // p17 output "1(enabled)" : "0(disabled)" );// Print("\nTimer1 INT mode.............%s" , (INTMODE & TIMER1_INT) ? "FIQ" : "IRQ" );// Print("\nTimer1 interrupt enabled....%s" , (INTMASK & TIMER1_INT) ? "(disabled)" : "(enabled)" );}/*************************************************************************//* *//* NAME : rtc_run() *//* *//* FUNCTIONS : timer0 or 1 run test function. *//* *//* EXAMPLES : *//* *//* VARIABLES USED *//* *//* *//* HISTORY *//* *//* NAME DATE REMARKS *//* *//* in4maker 06-07-1999 Created initial version 1.0 *//* *//*************************************************************************/static void rtc_run(void){ U8 dev; /* for to select timer device 0,1 */ U8 ch; /* variable for io consol */// Select timer device. Timer0 or Timer 1 ////////////////////////////////////// do { Print("\nSelect timer[0/1]"); dev = get_upper(); } while(dev != '1' && dev != '0');// Now Start timer for test //////////////////////////////////////////////////// Print("\nTo exit, enter the Esc key on keyboard."); Print("\nTo start timer press any key.\n"); ch = get_upper(); if(ch == KEY_ESC) { return; } if(dev == '1') { TimerInit(1,(ONE_SECOND/TICKS_PER_SECOND)); TimerStart(1); } else { TimerInit(0,(ONE_SECOND/TICKS_PER_SECOND)); TimerStart(0); } while(1) { char * s; TIME tm; if(dev == '1') { /* selected TIMER1 */ GetSysTime(1, &tm); /* get system time from TIMER1 */ s = "TIMER1 time"; /* output string for TIMER1 */ } else {/* selected TIMER0 */ GetSysTime(0, &tm); /* get system time from TIMER0 */ s = "TIMER0 time"; /* output string for TIMER0 */ } Print ( "\n%s is %d:%d:%d.%d", s , tm.tm_hour , tm.tm_min ,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -