初级会员

- 积分
- 166
- 金钱
- 166
- 注册时间
- 2012-11-20
- 在线时间
- 26 小时
|
1金钱
本帖最后由 ssmart 于 2021-6-7 19:24 编辑
有两个问题:
1.STM32H7xx参考手册(V3中文版)中对PLL3N和PLL3R的解释是:
PLL3N=160代表是要乘以161
PLL3R=88代表是要除以89
而程序注释中计算是直接*160 /88
是我理解错了吗,还是库函数里面自己有补偿了-1
2.另外一个就是关于PLL3RGE的设置,上电后默认值是0,代表VCO input是1~2M之间.
而例程给出的VCO inout是25/5=5M
但是我没有看到去修改PLL3RGE,是不是库函数哪儿有自己判断了范围,自己修改了?
下面是实验中的代码:
//LTDC时钟(Fdclk)设置函数
//PLL3_VCO Input=HSE_VALUE/PLL3M
//PLL3_VCO Output=PLL3_VCO Input * PLL3N
//PLLLCDCLK = PLL3_VCO Output/PLL3R
//假如HSE_VALUE=25MHz,PLL3M=5,PLL3N=160,PLL3R=88
//LTDCLK=PLLLCDCLK=25/5*160/88=9MHz
//返回值:0,成功;1,失败。
u8 LTDC_Clk_Set(u32 pll3m,u32 pll3n,u32 pll3r)
{
RCC_PeriphCLKInitTypeDef PeriphClkIniture;
PeriphClkIniture.PeriphClockSelection = RCC_PERIPHCLK_LTDC;
PeriphClkIniture.PLL3.PLL3M = pll3m;
PeriphClkIniture.PLL3.PLL3N = pll3n;
PeriphClkIniture.PLL3.PLL3P = 2;
PeriphClkIniture.PLL3.PLL3Q = 2;
PeriphClkIniture.PLL3.PLL3R = pll3r;
if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkIniture)==HAL_OK) //配置像素时钟,这里配置为时钟为18.75MHZ
{
return 0; //成功
}
else return 1; //失败
}
|
|