第一步: 编译内核,改变内核时钟频率的最大值,改变宏定义AUX_CLK_RATE_MAX的值,确保可以发生100微妙频率的定时任务
第二步: 编写代码函数
#define SYS_TIMER MAX 720000
#define SYS_TIMER FERIOD 10000 //1s触发10000次,100微妙一次
static unsigned long timer_cnt = 0;
void time_isr (void){
timer_cnt ++;
if( 0 == proc_state ) proc_state == 1;
}
void aux_ timer_init( void){
sysAuxClkDisable():
sysAuxClkConnect((FUNCPTR)timer_isr,0);
sysAuxClkRateSet( SYS_TIMER_PERIOD);
sysAuxClkEnable();
}
在系统初始化任务函数里添加辅助定时器初始化函数即可
加载内核,启动初始化任务,定时器开始工作
第三步,验证辅助定时器函数
if( taskSpawn( "aux_timer_isr",60,0,2000,(FUNCPTR)aux_timer_init, 0,0,0,0,0,0,0,0,
0,0)== TASK_ID_NULL){
while(1){
logMsg("timer_cnt is %d..\n", timer_cnt, 1,2,3,4,5);
taskDelay( sysClkRateGet());/*延时1s*/
}
}
手动启动验证任务后,查看延时1s后cnt数值变化来验证辅助时钟触发的频率