VxWorks上高精度定时器(auxClk)的配置和使用

时间:2022-06-24 21:20:14


有很多第三方的库vxWorks不支持高精度的时钟描述应该是很多年前的说法了,比如你的文档提到的x86HPET这个在vxWorks6.8.x , 6.9.x , 7等主流版本上早已经支持,对QorIQ的目前也支持全面了的,只要是片上硬件有的(目前不论是什么架构的CPU/chipset),vxWorks都在BSPdriver中进行了支持。

step1:首先需要在kernel中定义INCLUDE_AUX_CLK

step2:设置AUX的normalpinlv以及最大和最小频率

#define AUX_CLK_RATE_MIN 1
#define AUX_CLK_RATE_MAX 50000
#define AUX_CLK_RATE 20000

step 3:注册AUX CLK的ISR

step4 :Enable AUX CLK

step5:使用vxbAuxClkShowvxbSysClkShow来检查有没有配置正确就可以了。


使用例子:


#include <vxbTimerLib.h>

UINT32 l_aux_clk_isr_flag=0;
void l_aux_clk_isr(void)
{
           l_aux_clk_isr_flag++;
           logMsg("l_aux_clk_isr\n",1,2,3,4,5,6);
}


void usrAppInit (void)
    {
#ifdef USER_APPL_INIT
 USER_APPL_INIT;  /* for backwards compatibility */
#endif

    /* add application specific code here */

          vxbAuxClkConnect(l_aux_clk_isr,0);
          printf("vxbAuxClkConnect,setuped\n");
          vxbAuxClkEnable();

    }