打印

STM32输出波形抖动

[复制链接]
5791|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zch952102|  楼主 | 2013-1-16 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人从MCS—51转到STM32,在学习中发现,STM32输出的波形会有抖动,我程序操作过程是:
#define c1_set GPIO_SetBits(GPIOA, GPIO_Pin_1);
#define c1_clr GPIO_ResetBits(GPIOA, GPIO_Pin_1);
其它程序省略
while(1)
{
       c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
        c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);
}
/延时US级函数
void delay_us(int i)
{
  int j;
  while(i>0)
  {
  for(j=0;j<4;j++);
  i--;
  }
}
下图中方波的周期是50US,其中A是实测波形,其抖动时间是5US
B是我认为正常波形,另外STM32采用8M的有源晶振,系统时钟直接就是8M的频率
各位认为5US的抖动是为什么?










相关帖子

沙发
zch952102|  楼主 | 2013-1-16 15:51 | 只看该作者

使用特权

评论回复
板凳
gulfweed| | 2013-1-16 16:40 | 只看该作者
软件延时总不是很精确的吧?

使用特权

评论回复
地板
zch952102|  楼主 | 2013-1-16 16:42 | 只看该作者
你说的对,软件延时不精确,但稳定,图中A波形不稳定,存在抖动,这在51中是不存在的

使用特权

评论回复
5
huangxz| | 2013-1-16 22:15 | 只看该作者
zch952102 发表于 2013-1-16 16:42
你说的对,软件延时不精确,但稳定,图中A波形不稳定,存在抖动,这在51中是不存在的 ...

你用单次触发看看,有时候示波器上显示的重叠是假象。

使用特权

评论回复
6
zch952102|  楼主 | 2013-1-18 09:22 | 只看该作者
我不认为示波器显示的假象,我用示波器测MCS51的输出(程序不同,但输出波形差不多),没出现过这种抖动现象。

使用特权

评论回复
7
huangxz| | 2013-1-18 14:07 | 只看该作者
zch952102 发表于 2013-1-18 09:22
我不认为示波器显示的假象,我用示波器测MCS51的输出(程序不同,但输出波形差不多),没出现过这种抖动现 ...

因为你是在main里面delay的,所以延时差异有可能受中断影响啊,比如你用stm32,系统定时器中断一般都是起作用的。所以我觉的你还是要以波形事实说话,虽然这种可能性很小。:lol

使用特权

评论回复
8
zch952102|  楼主 | 2013-1-18 14:27 | 只看该作者
你是说我的程序开启了中断,当有中断时,自然拖长了程序运行时间,所以时间不稳定。
首先我没有开启中断,其次修改程序成如下形式:
while(1)
{
       c1_set;
        delay_us(4);
        c1_clr;
        delay_us(4);

也就是只用一个C1_CLR,C1_SET通过示波器测量,发现输出信号很稳定,虽有此现象,但现在我想知道原因,
为何多一组或多组C1_CLR,C1_SET输出波形就不稳定了,盼高手解答?????

使用特权

评论回复
9
changyumao| | 2013-1-21 15:18 | 只看该作者
不只是STM32才有这个情况吧?我在MICROCHIP的,输出方波也有抖动,现在还没有从软件上解决问题。

使用特权

评论回复
10
zch952102|  楼主 | 2013-1-22 08:50 | 只看该作者
其它同仁也一样吗,这种情况,不影响你们的使用吗?
但有一点,我要强调,MCS51系列真得没有抖动

使用特权

评论回复
评论
xch 2021-11-8 17:25 回复TA
那是因为MCS51没有cache。执行指令的耗时是固定的。 带有CACHE 的ARM 执行指令的周期不是固定的。特别是分支跳转之后延时没准。 
11
zch952102|  楼主 | 2013-6-2 19:31 | 只看该作者
我查得是示波器跟踪问题,触发方式由边沿换成脉冲后,信号能稳定的显示出来,还是谢谢各位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

53

帖子

0

粉丝