新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2020-4-27
- 在线时间
- 6 小时
|
1金钱
按照视频教程设置了主频时钟到696M,烧录进去led闪灯频率没有明显改变,为了防止我写错程序。我把例程源码里面的bsp_clk.c里面的全部代码copy进去,然后修改寄存器值(58倍,一倍频)发现闪灯频率确实变快了一倍左右。
然后神奇的事情发生了,我把程序里面后面设置其他的时钟代码删掉,只留下了设置主频的代码,再烧进去,发现闪灯频率又变慢了,改回所有的代码,又正常了。
求解啊!
下面是编写的程序:
void imx6u_clkinit(void)
{
if((((CCM->CCSR) >> 2) & 0x1 ) == 0) /* 当前pll1_sw_clk使用的pll1_main_clk*/
{
CCM->CCSR &= ~(1 << 8); /* 配置step_clk时钟源为24MH OSC */
CCM->CCSR |= (1 << 2); /* 配置pll1_sw_clk时钟源为step_clk */
}
/* 1.2、设置pll1_main_clk为1056MHz,也就是528*2=1056MHZ,
* 因为pll1_sw_clk进ARM内核的时候会被二分频!
* 配置CCM_ANLOG->PLL_ARM寄存器
* bit13: 1 使能时钟输出
* bit[6:0]: 88, 由公式:Fout = Fin * div_select / 2.0,1056=24*div_select/2.0,
* 得出:div_select= 88
*/
CCM_ANALOG->PLL_ARM = (1 << 13) | ((58 << 0) & 0X7F); /* 配置pll1_main_clk=1056MHz */
CCM->CCSR &= ~(1 << 2); /* 将pll_sw_clk时钟重新切换回pll1_main_clk */
CCM->CACRR = 0; /* ARM内核时钟为pll1_sw_clk/2=1056/2=528Mhz */
}
|
|