32F12K54 48Mhz频率点灯失败
本帖最后由 DebugLab 于 2024-10-8 22:25 编辑使用32F12K54 内部IRC 32Mhz以上的频率点灯失败,IO口无法实现高低电平交替
目前已知30MHZ以下能正常工作,32以上灯不闪烁。
不知道是什么原因导致的!
程序如下:
void GPIO_config(void)
{
P0M0 = 0xff; P0M1 = 0x00;
P1M0 = 0xff; P1M1 = 0x00;
P2M0 = 0xff; P2M1 = 0x00;
P3M0 = 0xff; P3M1 = 0x00;
P4M0 = 0xff; P4M1 = 0x00;
P5M0 = 0xff; P5M1 = 0x00;
}
void Delay100ms(void) //@48MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 1199998UL;
while (i) i--;
}
##第一集
##第二集
##第三集
void main(void)
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXSFR(); //扩展SFR(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
GPIO_config();
Delay100ms();
while(1)
{
P2=0xff;
//P0=P1=P2=P3=P4=P5=0xff;
Delay100ms();Delay100ms();Delay100ms();
// P0=P1=P2=P3=P4=P5=0x00;
P2=0x00;
Delay100ms();Delay100ms();Delay100ms();
}
}
本帖最后由 晓飛飛 于 2024-10-8 21:45 编辑
手头没有STC32F12K54的开发板,只有STC32G12K128-BETA核心的实验箱V9.4,实测你的程序在35MHz下驱动P6闪烁正常。
你尝试WTST使用默认值1看看可否正常运行。
stc32f12k54不是最高主频64M吗?不应该48M就出问题吧 soma 发表于 2024-10-8 21:46
stc32f12k54不是最高主频64M吗?不应该48M就出问题吧
我怀疑是WTST = 0 这条代码作祟,没有按照手册中“特别注意”中描述的要求来配置,时钟那么高支持不了“零等待”。官方建议17MHz以上等待值就需要设置为1了,实测到30MHz以上才出问题,这已经超速太多了。 建议 使用 Ai8051U做新设计,32F12K54 还在完善设计中 尝试WTST使用默认值1看看可否正常运行?结果怎么样?我也蛮关心结果的 频率高时,若设置WTST = 0;会出问题,将这条指令去掉即可。
大叶子 发表于 2024-10-9 06:57
尝试WTST使用默认值1看看可否正常运行?结果怎么样?我也蛮关心结果的
设置1可以 maijinzhi 发表于 2024-10-10 22:31
设置1可以
去掉默认WTST为2 晓飛飛 发表于 2024-10-8 21:42
手头没有STC32F12K54的开发板,只有STC32G12K128-BETA核心的实验箱V9.4,实测你的程序在35MHz下驱动P6闪烁 ...
我也是从32G移植程序时候发现这个问题
页:
[1]
2