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

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上都试验过了,情况都是这样。

请遇到过这样问题的网友指点一下,是不是我的测试不正确呢,谢谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
aleda303
1楼-- · 2019-07-22 01:56
我买的是原子的板子,产品和原子的板基本一样,8M晶振,倍频 3 倍,达到24M。直接下载到原子的103RBT6板上也可以看到。当然下载到原子的板子上运行,我都试了。一直找不到原因。只是自己认为是芯片的执行时间不一样。而且我也反复看过了100C8和103C8 的资料,对比了Stm32_Clock_Init()子程序里的时钟呀等配置寄存器,就几个嘛,都是一模一样的。就是不知道还有没有其他寄存器连原子哥都漏了设置,或是100C8有,103C8没有,不知道大家有没有和原子不一样的Stm32_Clock_Init()
lele182
2楼-- · 2019-07-22 02:33
没会的人顶一下吗?
lele182
3楼-- · 2019-07-22 04:25
 精彩回答 2  元偷偷看……
大熊星
4楼-- · 2019-07-22 05:09
如果条件容许,建议多找个板子测试下,看看是特例还是普遍现象

一周热门 更多>