magiclove444 发表于 2010-5-26 10:01:36

测试程序中这段程序的意思有高人可以告诉我什么意思吗

static void cal_cpu_bus_clk(void)
{
        U32 val;
        U8 m, p, s;
       
        val = rMPLLCON;
        m = (val>>12)&0xff;
        p = (val>>4)&0x3f;
        s = val&3;

        //(m+8)*FIN*2 不要超出32位数!
        FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;
       
        val = rCLKDIVN;
        m = (val>>1)&3;
        p = val&1;       
        val = rCAMDIVN;
        s = val>>8;
       
        switch (m) {
        case 0:
                HCLK = FCLK;
                break;
        case 1:
                HCLK = FCLK>>1;
                break;
        case 2:
                if(s&2)
                        HCLK = FCLK>>3;
                else
                        HCLK = FCLK>>2;
                break;
        case 3:
                if(s&1)
                        HCLK = FCLK/6;
                else
                        HCLK = FCLK/3;
                break;
        }
       
        if(p)
                PCLK = HCLK>>1;
        else
                PCLK = HCLK;
       
        if(s&0x10)
                cpu_freq = HCLK;
        else
                cpu_freq = FCLK;
               
        val = rUPLLCON;
        m = (val>>12)&0xff;
        p = (val>>4)&0x3f;
        s = val&3;
        UPLL = ((m+8)*FIN)/((p+2)*(1<<s));
        UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}

czequn 发表于 2010-5-26 12:17:38

这个程序出自哪个例程的。至少你要说清楚出自哪里,有哪几句看不懂!不能这样随便一贴,谁都不清楚

magiclove444 发表于 2010-5-26 21:19:59

2# czequn


也是哦,是出厂带的测试程序里面的,裸奔的程序里面几乎都有,应该是有关时钟管理方面的,但是我不理解这些语句到底是什么意思

zajiju 发表于 2010-5-27 21:19:01

是设置CPU的时钟吧.
页: [1]
查看完整版本: 测试程序中这段程序的意思有高人可以告诉我什么意思吗