Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217570
  • 博文数量: 49
  • 博客积分: 2101
  • 博客等级: 大尉
  • 技术积分: 525
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-07 10:38
文章分类

全部博文(49)

文章存档

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 */

 

你可以通过改这个值来自己设置系统时钟中断频率,一般在60100,但不能大于600SYS_CLK_RATE只设置的过大会增加任务切换开销。

阅读(2146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~