|
先贴上那个函数:
void ChangeClockDivider(int hdivn,int pdivn)
{
// hdivn,pdivn FCLK:HCLK:PCLK
// 0,0 1:1:1
// 0,1 1:1:2
// 1,0 1:2:2
// 1,1 1:2:4
// 2,0 1:4:4
// 2,1 1:4:8
// 3,0 1:3:3
// 3,1 1:3:6
rCLKDIVN = (hdivn<<1) | pdivn;
if (hdivn == 2)
rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9);
if (hdivn == 3)
rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8);
}
就以ChangeClockDivider(2, 1)为例,按照函数说明,调用ChangeClockDivider(2, 1)后,分频比应该为
1:4:8。执行 rCLKDIVN = (hdivn<<1) | pdivn 后, HDIVN = 10, PDIVN = 1,然后执行第一个if语句
rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9),此时HCLK4_HALF = 1, HCLK3_HALF = 0,但按照数据手册当 HDIVN = 10, PDIVN = 1,HCLK4_HALF = 1, HCLK3_HALF = 0时,分频比应该为1:8:16。。。。。。。
不知道我分析的对不对,还是有些东西我没考虑进去,真的很郁闷,自己写了个配置分频比的函数,设置成1:4:8,总是达不到预期效果,望各位指点指点啊啊啊啊啊啊啊啊,谢过了 |
|