?? c6711_timer.c
字號:
/*****************************************************************************
* File name : C6711_TIMER.c
* Description:
******************************************************************************/
#ifndef MASTER_FILE
#define C6711_GLOBALS
#endif
#include "TIMER.H"
/******************************************************************************
* function : timer0_reset()
* description :
* Input : None
* Output : None
* return value :
******************************************************************************/
void timer0_reset()
{
set_timer_register(0, CTRL_SEL, 0);
set_timer_register(0, PRD_SEL, 0);
set_timer_register(0, COUNT_SEL, 0);
}
/******************************************************************************
* function : timer0_init()
* description : Start timer 0 after initializing it for a short period
* (~13.7 micro seconds)with interrupt.
* TIMER_HOLD=0, TIMER_RESUME=1, TIMER_START=3
* Input : None
* Output : None
* return value :
******************************************************************************/
void timer0_init(int ctrl,int prd)
{
set_timer_register(0, CTRL_SEL, ctrl);
set_timer_register(0, PRD_SEL, prd);
set_timer_register(0, COUNT_SEL,0);
change_timer_status(0,TIMER_START);
}
/******************************************************************************
* function : timer1_reset()
* description :
* Input : None
* Output : None
* return value :
******************************************************************************/
void timer1_reset(void)
{
set_timer_register(1, CTRL_SEL, 0);
set_timer_register(1, PRD_SEL, 0);
set_timer_register(1, COUNT_SEL, 0);
}
/******************************************************************************
* function : timer1_init()
* description :
* Input : None
* Output : None
* return value :
******************************************************************************/
void timer1_init(int ctrl,int prd)
{
//printf("Begin Timer1 Register Initialisation\n");
set_timer_register(1, CTRL_SEL, ctrl);
set_timer_register(1, PRD_SEL, prd);
set_timer_register(1, COUNT_SEL, 0);
change_timer_status(1,TIMER_START);
}
/*******************************************************************************
* FUNCTION : delay_msec
* ARGUMENTS : int msec <-- Period to delay in milliseconds
* DESCRIPTION :Maxim delay time is 28633.12 milliseconds
*******************************************************************************/
void delay_msec(int msec)
{
/* Assume 75 MHz CPU, timer clock period = 4/75MHz,1000*75/4=18750 */
int timer_limit = msec*18750;
int time_start;
*(unsigned volatile int *)TIMER0_CTRL &= 0xff3f;/* Hold the timer */
*(unsigned volatile int *)TIMER0_CTRL |= 0x200; /* Use CPU CLK/4 */
*(unsigned volatile int *)TIMER0_PRD |= 0xffffffff;/* Set for 32 bit counter */
*(unsigned volatile int *)TIMER0_CTRL |= 0xC0;/* Start the timer */
time_start = (*(unsigned volatile int *)TIMER0_COUNT);
while ((*(unsigned volatile int *)TIMER0_COUNT)-time_start<timer_limit);
}
/*******************************************************************************
* FUNCTION : led_blink1()
* DESCRIPTION :Tout1 changes it statue every 1s,TSTAT has a 50% duty cycle with
* each high and low period one countdown period wide;
*******************************************************************************/
void led_blink1()
{
set_timer_register(1, CTRL_SEL, 0x0305);
set_timer_register(1, PRD_SEL, 18750*1000);
set_timer_register(1, COUNT_SEL, 0);
change_timer_status(1,TIMER_START);
}
void StartTimer()
{
*(unsigned volatile int *)TIMER0_CTRL &= 0xff3f;/* Hold the timer */
*(unsigned volatile int *)TIMER0_CTRL |= 0x200; /* Use CPU CLK/4 */
*(unsigned volatile int *)TIMER0_PRD |= 0xffffffff;/* Set for 32 bit counter */
*(unsigned volatile int *)TIMER0_CTRL |= 0xC0;/* Start the timer */
}
/*******************************************************************************
* FUNCTION : led_blink2()
* DESCRIPTION :Tout1 changes it statue every 1s,The DATOUT is driven on TOUT;
*******************************************************************************/
void led_blink2(int msec)
{
/* timer0_init(0x0201,0xffffffff);
timer1_init(0x0200,0xffffffff);
for(i=0;i<blink_num;i++)
{
WRITE_DATOUT1(1);
delay_msec(msec);
WRITE_DATOUT1(0);
delay_msec(msec);
}*/
WRITE_DATOUT1(msec);
}
/* END OF FILE */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -