一样的程序,下载到不同型号片子,效果真的不一样。大家来围观(原子哥的跑马灯)

2019-07-21 04:24发布

原子哥的第一个例子,跑马灯程序,我只是改了一下延时的子程序。  延时ms的和延时 us 的都改为循环等的方式,程序如下,及见附件。
在此我不是讨论它们的准确性,而是讨论它们在不同型号的芯片是运行的速度。即不同型号的STM32执行指令速度差很远
void delay_ms(u16 nms)
{        
 u32 temp0;    
 for (temp0=0;temp0<nms*10;temp0++) 
 {delay_us(50);
 }  
}   
             
void delay_us(u32 nus)
{  
 u32 temp1;  
 for (temp1=0;temp1<nus*5;temp1++)   
 { ;
 }
}
/////////////////////////////////////////////////////////////////////////////////////
主程序:LED0为测试用的LED灯。
while(1)
 {
  LED0=0;    //关LED0
 delay_ms(20);//延时20ms
  LED0=1;    //开LED0
  delay_ms(20);  延时20ms
 }

将这个程序分别下载入STM32F103C8T6  及  STM32F100C8  

大家猜猜是谁跑的慢呀??



很出奇,平宜,而且性能不大好的100C8 竟然比103C8快好多。出来的效果就是100C8板子上的LED基来上看不到闪,即它的开关超过了人眼识别范围。
而103C8T6 却慢的多。明显的看到LED0脚上的LED灯在闪呀闪。这说明这个延时程序。在100C8上运行的快点,而在103C8上运行的慢点。

想请教一下原子大哥有没有什么寄存器是专门设置STM32的指令速度的。     另外,试过USART,系统滴答都正常。证明了,仅是这段延时程序不一样。更证明了是执行指令上的问题。而且我分别在3片103及3片100上都试验过了,情况都是这样。

请遇到过这样问题的网友指点一下,是不是我的测试不正确呢,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。