• 2440裸 Delay(); 和 while(!(rUTRSTAT0 & 0x2)); 问题


    前两天写RTC中断 使用串行输出

    它发现,该方案将while(!(rUTRSTAT0 & 0x2));走不出的情况。的

    解决方法:

     main函数添加:

            U32 mpll_val = 0,consoleNum;
            Port_Init();   //定义在2440lib.c
            mpll_val = (92<<12)|(1<<4)|(1);                                                                                                                    
    	//init FCLK=400M,
    	ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);    (定义在2440lib.c)
    	ChangeClockDivider(14, 12);   //the result of rCLKDIVN [0:1:0:1] 3-0 bit  (定义在2440lib.c)
    	cal_cpu_bus_clk();            //HCLK=100M   PCLK=50M
       
            consoleNum = 0;	              // Uart 1 select for debug.
    	Uart_Init( 0,115200 );        // 定义在2440lib.c      
    	Uart_Select( consoleNum );    // 定义在2440lib.c

    cal_cpu_bus_clk()定义例如以下:

    static U32 UPLL;
    static U32 cpu_freq;
    
    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;
    }
    


    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    点击bindingNavigatorAddNewItem 关联的dataGridView不会新增一行
    dataGridView的使用经验
    Mybatis源码分析:Resources
    Mybatis源码分析:BaseBuilder
    反射类 Modifier类
    Mybatis源码分析:SqlSessionManager
    Mybatis源码分析:SqlSessionFactory
    Mybatis源码分析:环境设置Environment
    Mybatis源码分析:类型处理器TypeHandler
    Mybatis源码分析:MapperRegistry
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4717896.html
Copyright © 2020-2023  润新知