2010年(49)
分类: 嵌入式
2010-09-07 13:18:03
一 系统周期时钟中断
D:\Tornado2.2\target\src\drv\timer\ ppc860Timer.c
l sysClkConnect( )――连接系统时钟中断服务程序(sysLib.h)
函数原型:――connect a routine to the system clock interrupt
STATUS sysClkConnect
(
FUNCPTR routine, /* routine called at each system clock interrupt */
int arg /* argument with which to call routine */
)
2 sysClkRateSet( )――设置每秒钟系统时钟中断次数(既每秒钟的tick数)(sysLib.h)
函数原型:――set the system clock rate
STATUS sysClkRateSet
(
int ticksPerSecond /* number of clock interrupts per second */
)
3 sysClkRateGet( )――得到每秒钟系统时钟中断次数(既每秒钟的tick数)(sysLib.h)
函数原型:――get the system clock rate
int sysClkRateGet (void)
4 sysClkEnable ( )――使能系统时钟中断(sysLib.h)
函数原型:――turn on system clock interrupts
void sysClkEnable (void)
二 系统时钟配置
系统定时器的设置是在usrConfig.c中通过usrRoot( )函数完成的,主要就是调用以上三个函数,代码如下:
/* set up system timer */
sysClkConnect ((FUNCPTR) usrClock, 0); /* connect clock ISR */
sysClkRateSet (SYS_CLK_RATE); /* set system clock rate */
sysClkEnable (); /* start it */
其中usrClock( )也是在usrConfig.c中定义的,函数只是通知系统内核时钟tick。
void usrClock ()
{
tickAnnounce (); /* announce system tick to kernel */
}
tickAnnounce ()为系统时钟中断ISR程序!(由看代码确定)
而系统时钟频率SYS_CLK_RATE的值在congfigAll.h中定义为60,代码如下:
#define SYS_CLK_RATE 60 /* default system clock rate */
你可以通过改这个值来自己设置系统时钟中断频率,一般在60到100,但不能大于600。SYS_CLK_RATE只设置的过大会增加任务切换开销。