高速PLL配置问题,配置出错
本帖最后由 电子小陈 于 2024-4-26 14:36 编辑/*******************************************************************************
* 函数名: ClockInit
* 描述 : 系统时钟设置函数
* 输入 : 无
* 输出 : 无
* 返回 : 无
* 说明 : //11.0592 * 12 = 132.7104 / 4 = 33.1776M
*******************************************************************************/
void ClockInit(void )//11M倍频至132M/4,132M给PWM,33M给系统
{
CKCON = 0X00;
WTST = 0X00;
CLKSEL |= 0X80;
USBCLK &= ~0X60;
//// USBCLK |= 0X00;
USBCLK |= 0X80;
Delay_ms(1);
CLKDIV = 0X04;
CLKSEL &= 0XF0;
// CLKSEL |= 0X04;//死在这一句
HSCLKDIV =0X00;
CLKSEL &= ~0X40;
}
/*******************************************************************************
* 函数名: Delay
* 描述 : 延时函数(ms)
* 输入 : d:延时系数,单位为毫秒
* 输出 : 无
* 返回 : 无
* 说明 : 延时是利用产生的1毫秒的计数来实现的
*******************************************************************************/
void Delay_ms(unsigned intx)
{
unsigned int i;
while (x)
{
i = 8293UL;
while (i) i--;
x--;
}
}
以上的时钟配置程序,完全按照数据手册的例程来的。
使用isp下载时选择内置预设频率11.0592,不能工作,而选择总是动态调节却能正常工作。经过逐句断点和注释定位到CLKSEL |=0x04;时出错。 STC32G使用PLL时钟作为主时钟,可以参考附件例子 乘风飞扬 发表于 2024-4-26 16:34
STC32G使用PLL时钟作为主时钟,可以参考附件例子
刚试了您的程序,按原来的时钟频率还是不行
但我选了22.1184M的频率,程序里PCKI做2分频就正常了,不知道是什么原因,新手调了两天都搞不清,头好大! 本帖最后由 乘风飞扬 于 2024-4-26 17:37 编辑
电子小陈 发表于 2024-4-26 17:18
刚试了您的程序,按原来的时钟频率还是不行
但我选了22.1184M的频率,程序里PCKI做2分频就正常了,不知道 ...
例子有段注释:选择PLL输入时钟分频, 保证输入时钟为12M
例子使用24M做主频,输入给PLL时钟,经过2分频后的时钟正好12M。
本帖最后由 电子小陈 于 2024-4-26 20:51 编辑
乘风飞扬 发表于 2024-4-26 17:36
例子有段注释:选择PLL输入时钟分频, 保证输入时钟为12M
例子使用24M做主频,输入给PLL时钟,经过2分频后 ...
刚才注释掉这行就可以了,好像分频默认是2(或者isp软件设置的?),如果我程序里设置2分频,然后我下载时选择12M和24M,pll输出的频率都是一样的!所以难道IRC不能直接出12M频率的?
电子小陈 发表于 2024-4-26 19:25
刚才注释掉这行就可以了,好像分频默认是2(或者isp软件设置的?),如果我程序里设置2分频,然后我下载时 ...
但是为什么动态调整却没有影响呢?同样的程序1分频设置,动态调整却能正确输出 本帖最后由 电子小陈 于 2024-5-5 14:24 编辑
attach://43206.jpg
解决了,手册上写了效准好的频率并没有11M,实际上选择预置频率小于22.1184M以下的频率都是ISP软件自动设置分频寄存器的结果
页:
[1]