打印

stm8s的cup,时钟怎么自己变化?

[复制链接]
2418|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c555|  楼主 | 2012-8-23 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用程序循环输出一个固定的频率,用的是HSI的2M, 突然发现输出的频率变化了,频率升高了10%,查找原因,发现在一个位置加上一句程序就可以,不管这句程序是什么,只要有这一句程序都可以,有了这句程序后,输出频率就对了。
  头一次遇到这种问题,想不通是怎么回事,更不知向哪里去查了
沙发
c555|  楼主 | 2012-8-23 16:39 | 只看该作者
没有动时钟有关的寄存器,程序写着写着自己频率就变化了,难以理解

使用特权

评论回复
板凳
香水城| | 2012-8-23 16:46 | 只看该作者
首先,你用程序循环输出一个固定的频率

其次,你发现在一个位置加上一句程序就可以


当然是程序问题

使用特权

评论回复
地板
奔牛滚滚| | 2012-8-24 00:02 | 只看该作者
2# c555
那是因为你习惯了51或者avr的思维/认识.

使用特权

评论回复
5
c555|  楼主 | 2012-8-24 08:48 | 只看该作者
输出固定频率的程序是单独一个函数,这个函数并没有动到它,在其他地方写程序,频率就变了。

使用特权

评论回复
6
c555|  楼主 | 2012-8-24 09:32 | 只看该作者
在主程序中,加个空操作 _asm("NOP"); 或者减去个空操作,输出的频率就变了,这个空操作与输出固定频率的函数是没有任何关系的

使用特权

评论回复
7
c555|  楼主 | 2012-8-27 07:58 | 只看该作者
没有人说的清啊

使用特权

评论回复
8
c555|  楼主 | 2012-8-30 10:59 | 只看该作者
现在真麻烦,每写一段程序,需要调试的时候,都要去看看时钟变了吗,如变了,再加个几个空操作,让时钟变回来。

使用特权

评论回复
9
香水城| | 2012-8-30 13:56 | 只看该作者
你怎么输出固定频率的?为什么不用PWM输出?

使用特权

评论回复
10
c555|  楼主 | 2012-8-31 11:59 | 只看该作者
将一延时程序贴出来,看有没有高手能发现什么问题的?
这是一个延时函数,在主程序中,增加一个_asm("NOP");和减少一个_asm("NOP");,输出的延时都会变化,比如延时10ms,增加后,延时成了11ms,再加一个_asm("NOP");,延时就又变回10ms

u8  time=36;//

void delay(u8 tt)
{
    u8 t;                                                              
    for(;tt>0;tt--)            
        for(t=time;t>0;t--)     //
        {                 
          ;
        }     
}

使用特权

评论回复
11
e心| | 2015-8-17 10:42 | 只看该作者
遇到同样的问题,一直都没有解决办法,请求高手指导

使用特权

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

本版积分规则

264

主题

556

帖子

3

粉丝